如何在多模块spring应用程序中共享调度程序servlet?

时间:2018-11-08 14:14:19

标签: java spring spring-boot multi-module

我正在尝试编写Spring Boot多模块应用程序,在该应用程序中,我不是按逻辑层(例如Web /服务/ Dao)而是按域区域来分隔模块。

因此,我想使用具有类似结构的单独上下文的应用程序

root-context
|- UsersModule
|- CompaniesModule
|- InvoicesModule
|- etc...

每个模块都应提供自己的控制器,服务等。但是我只想开始一个嵌入式servlet容器(tomcat)并将其“共享”到所有模块。

这是我的Application类(根上下文)

@EnableAsync
@EnableConfigurationProperties(ProcampConfiguration.class)
@SpringBootApplication(scanBasePackages = "org.yvasylchuk.procamp.config")
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class ProcampApplication {

    public static void main(String[] args) {
        new SpringApplicationBuilder()
                .parent(ProcampApplication.class).web(WebApplicationType.NONE)
                .child(UserModuleConfiguration.class).web(WebApplicationType.SERVLET)
                .sibling(CompanyModuleConfiguration.class).web(WebApplicationType.SERVLET)
                .run(args);
    }


}

这是用户模块的配置类(以相同的方式配置公司模块)

@Configuration
@ComponentScan("org.yvasylchuk.procamp.user")
@EnableMongoRepositories(basePackages = "org.yvasylchuk.procamp.user.repository")
@EnableAutoConfiguration()
public class UserModuleConfiguration {
}

在这种情况下,用户模块成功启动,但是公司模块无法启动,并显示以下错误:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-11-08 15:58:29.685 ERROR 15324 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.

因此,似乎CompanyModule和UserModule都试图启动其自己的servlet容器。有人可以帮我进行配置吗?

0 个答案:

没有答案