在做了一些研究后,找到了实现这一点的方法。事实上,我们可以在不同的 jar 中使用相同的 CamelContext,因为所有 jar 都在同一个战争(Web 容器)中。
我们可以Apache Camel 2.16.2
使用骆驼 CDI 轻松实现。如果您使用 wildfly 部署您的战争,那么您可能需要添加骆驼补丁。下载wildfly 9.0.2 补丁
步骤如下。
在您的战争中创建一个 servlet 或 restService 并注入 camelContext。
@Inject
@ContextName("cdi-context")
private CamelContext camelctx;
使用以下注释在 jar 中创建一个路由器。
@Startup
@ApplicationScoped
public class MyJRouteBuilder extends RouteBuilder {
在配置方法中添加
@Override
public void configure() throws Exception {
from("direct:startTwo").routeId("MyJRouteBuilder")
.bean(new SomeBeanThree());
}
在你的 jar 中创建一个 BootStrap 类并添加路由器
@Singleton
@Startup
public class BootStrap {
private CamelContext camelctx;
@PostConstruct
public void init() throws Exception {
camelctx.addRoutes(new MyJRouteBuilder());
}
将您的 jar 作为工件添加到 war pom.xml 中。部署战争后,您可以看到 MyJRouteBuilder 已注册在cdi-context
CamelContext
. 所以现在您可以随时随地访问您的路由器。
希望这对任何与我有同样问题的人有用。