我正忙着对付 Camel 和 Karaf 。我已经构建了一个包含两个 bundle 的项目:
- bundle A 包含 Blueprint Camel 路线
- Bundle B 包含纯 Java 路由
我按照杰米·古德伊尔的《 Karaf 食谱》中的说明进行操作
这两条路线都非常简单,我使用功能文件来部署它们。它们部署完美,并且完全按照计划运行:
bundle A 将文件从 /tmp/in
移动到 /tmp/out
bundle B 将文件从 /tmp/in2
移动到 tmp/out2
一切都好。
但是,如果我运行 Karaf 命令 camel:route-list
则仅显示蓝图路线
此外,如果我运行 camel:context-list
,则仅显示 Bundle A 中定义的上下文。
重申一下,两条路线都可以正常工作,只是 Java 路线没有显示在列表中。
我在这里遗漏了什么吗?
这是我的 Java 路线:
public class FileRouter extends RouteBuilder {
public void configure()
{
from ("file:/tmp/in2?noop=true")
.log("Java DSL doing the heavy lifting")
.to("file:/tmp/out2");
}
}
和捆绑激活器:
public class Activator implements BundleActivator {
DefaultCamelContext camelContext;
public void start(BundleContext context) {
System.out.println("Starting the bundle");
camelContext = new DefaultCamelContext();
try {
camelContext.setName("JavaDSLContext");
camelContext.addRoutes(new FileRouter());
camelContext.start();
} catch (Exception ex) {
System.out.println("Exception occured! " + ex.getMessage());
}
}
public void stop(BundleContext context) {
System.out.println("Stopping the bundle");
if (camelContext != null) {
try {
camelContext.stop();
} catch (Exception ex) {
System.out.println("Exception occured during stop context.");
}
}
}
}
最佳答案
Tx Souciance Eqdam Rashti。今天早上我浏览了您的博客,了解您使用 JavaDSL 蓝图的含义。
就像魅力一样。
为了完整起见,更改如下:
我的 Java Route 类与问题中指定的完全相同,但我完全删除了 Activator,用蓝图文件替换它。
蓝图如下所示:
<bean id="FileRouter" class="com.eightbitplatoon.learning.karaf.karafbasics.combined.FileRouter">
</bean>
<camelContext id="karafbasics-combined" xmlns="http://camel.apache.org/schema/blueprint">
<routeBuilder ref="FileRouter" />
</camelContext>
感谢您的帮助!
关于java - Karaf Camel :route-list shows only Blueprint routes, 不是 Java 路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40123419/