是否可以将camunda-bpm-spring-boot-starter-webapp和camunda-bpm-spring-boot-starter-rest集成到spring boot反应项目中?
我试图简单地集成软件包。但是在运行项目时,我看到只有springMVC模式被激活,并且消除了在反应模式下定义的所有路由器。 春季MVC与Tomcat一起启动。但是,反应模式是通过netty(非servlet服务器)配置的。 我试图排除Tomcat仅依靠netty,但是我看不到如何为其配置servlet。 还是有可能同时存在两种模式?
我希望能够看到camunda webapp和应用程序路由一起运行。 我现在只能激活一种模式: 如果SpringMVC:webapp OK,则路由为NOK 如果为响应状态:webapp正常,则路由确定
答案 0 :(得分:2)
解决方法是将tomcat用作Web服务器而不是netty,因为它可以处理“ Spring WebFlux和Spring MVC”
添加您的gradle文件
compile 'org.apache.tomcat.embed:tomcat-embed-core'
然后使用ServletRegistrationBean在Servlet中注册您的路由功能
@Bean
public ServletRegistrationBean routerToServlet() {
RouterFunction<?> route = routingFunction();
HttpHandler httpHandler = toHttpHandler(route);
ServletHttpHandlerAdapter servlet = new ServletHttpHandlerAdapter(httpHandler);
ServletRegistrationBean bean = new ServletRegistrationBean<>(servlet, "/core/*");
bean.setLoadOnStartup(1);
return bean;
}
您的routingFunction()是WebFlux路由 这样您就可以使用Camunda webapp OK和Routes OK
答案 1 :(得分:0)
这两个Web框架都镜像其源模块的名称(spring-webmvc和spring-webflux),并在Spring Framework中并存。每个模块都是可选的。应用程序可以使用一个或另一个模块,或者在某些情况下同时使用两个模块,例如,带有响应式WebClient的Spring MVC控制器。
该项目使用Webflux,而Camunda webapps使用MVC。他们之所以使用MVC,是因为camunda-spring-boot-starter将Web应用自动配置为Spring MVC Web应用(请参见CamundaBpmWebappAutoConfiguration)。
也许可以有另一个CamundaBpmWebappAutoConfiguration类,如果在Webflux模式下可以加载并实现WebFluxConfigurer
,则该类可以加载吗?您认为值得尝试吗?