是否可以将camunda-bpm- spring - boot -starter-webapp & camunda-bpm-spring-boot-starter-rest集成到spring boot reactive项目中?
我已经尝试简单地集成这些包。但在运行该项目时,我发现只有springMVC模式被激活,并消除了在reactive模式下定义的所有路由器。spring MVC是通过Tomcat启动的。但是,反应式模式是使用netty (一个非servlet服务器)配置的。我尝试将Tomcat排除为仅依赖netty,但我不明白如何为其配置servlet。或者是否有可能同时存在两种模式?
我希望能够看到camunda webapp和应用程序路由一起运行。我现在只有一种模式可以激活: If SpringMVC : webapp OK,Routes NOK If Reactive : webapp NOK,Routes OK
发布于 2019-10-04 16:36:50
解决方法是使用tomcat而不是netty作为web服务器,因为它可以处理"Spring WebFlux和Spring MVC“
添加到gradle文件中
compile 'org.apache.tomcat.embed:tomcat-embed-core'
然后使用在httpServlet中注册路由功能的ServletRegistrationBean
@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 Routes,因此您有Camunda webapp OK和Routes OK
发布于 2019-05-05 15:53:04
Spring和
这两个web框架都映射了它们的源模块的名称(spring-webmvc和spring-webflux),并且在Spring框架中并排共存。每个模块都是可选的。应用程序可以使用一个或另一个模块,或者在某些情况下,使用两个模块,例如,带有反应式WebClient的Spring MVC控制器。
该项目使用Webflux,而Camunda webapps使用MVC。他们使用MVC是因为camunda-spring-boot-starter会自动将webapp配置为Spring MVC webapp (参见CamundaBpmWebappAutoConfiguration)。
也许有可能有另一个CamundaBpmWebappAutoConfiguration类,一个在Webflux模式下加载并实现WebFluxConfigurer
的类?你觉得值得一试吗?
https://stackoverflow.com/questions/55974200
复制相似问题