【发布时间】:2017-03-26 15:07:24
【问题描述】:
根据 Camel 文档,我创建了 JaxbDataFormat(但是文档中的示例代码使用了不存在的构造函数?)
@Override
public void configure() throws Exception {
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat();
jaxbDataFormat.setContextPath("somepackage");
我有 pom 依赖
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jaxb</artifactId>
<version>2.18.3</version>
</dependency>
不起作用:“ConvertBody...因为无法创建数据格式 'jaxb'。”
有人可以提供一个示例代码,jaxb 转换应该如何与 Camel 一起工作。我有 Camel in Action 2ed,但那里的示例使用 XML-definde 路由。使用 XML 的过程似乎很简单——但我对使用 xml 作为编程语言不是很感兴趣;)
使用 java 8.
............
线程“CamelMainRunController”java.lang.RuntimeException 中的异常:org.apache.camel.FailedToCreateRouteException:无法在以下位置创建路由 route2:>>> Marshal[org.apache.camel.model.dataformat.JaxbDataFormat@57d7f108] [OnException... 因为无法创建数据格式“jaxb”。确保数据格式有效并且关联的 Camel 组件存在于类路径中 在 org.apache.camel.spring.boot.CamelSpringBootApplicationController.run(CamelSpringBootApplicationController.java:74) 在 org.apache.camel.spring.boot.CamelMainRunController$DaemonTask.run(CamelMainRunController.java:42) 在 java.lang.Thread.run(Thread.java:745) 原因:org.apache.camel.FailedToCreateRouteException:无法在以下位置创建路由 route2:>>> Marshal[org.apache.camel.model.dataformat.JaxbDataFormat@57d7f108] [OnException... 因为无法创建数据格式“jaxb”。确保数据格式有效并且关联的 Camel 组件存在于类路径中 在 org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1071) 在 org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196) 在 org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:984) 在 org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3401) 在 org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3132) 在 org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:183) 在 org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2961) 在 org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2957) 在 org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2980) 在 org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2957) 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 在 org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2924) 在 org.apache.camel.main.Main.doStart(Main.java:129) 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 在 org.apache.camel.main.MainSupport.run(MainSupport.java:138) 在 org.apache.camel.spring.boot.CamelSpringBootApplicationController.run(CamelSpringBootApplicationController.java:69) ... 2 更多 原因:java.lang.IllegalArgumentException:无法创建数据格式“jaxb”。确保数据格式有效并且关联的 Camel 组件存在于类路径中 在 org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:107) 在 org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:88) 在 org.apache.camel.model.MarshalDefinition.createProcessor(MarshalDefinition.java:177) 在 org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:545) 在 org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:506) 在 org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:222) 在 org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1068) ... 17 更多
【问题讨论】:
-
camel-jaxb在运行时在您的类路径中可用吗?你如何运行骆驼?独立?春天?蓝图/OSGi? -
如果你使用 spring-boot 然后使用 camel-jaxb-starter 作为 maven 依赖。
-
我正在使用 spring-boot,添加了 camel-jaxb-starter(并重新启动了 IDEA)。现在 jaxb 转换工作正常。感谢帮助 ! (想知道我应该如何结案?)
-
@AlessandroDaRugna 我也有同样的问题。我正在使用 Blueprint/OSGI 方式。在我的情况下,如果我在 fuse 服务器上运行我的包,那么解组效果很好,但是如果我使用 Junit 测试我的路由,那么我会收到错误。不知道为什么在测试我的路线时camel-jaxb 不可用。有什么建议/想法来解决这个问题吗?提前致谢。
-
@user3359005 也许您想为您的案例提出一个新问题。你用这个:camel.apache.org/blueprint-testing.html?
标签: jaxb apache-camel