Dad*_*kin 5 java spring cxf apache-camel
我正在尝试使用 Java DSL 和 RouteBuilder 实现 Camel 路由。我想从计时器端点发送到 cxf 端点。
public class MyRoute extends RouteBuilder {
@Override
public void configure() {
CamelContext camelContext = getContext();
CxfEndpoint cxfEndpoint = new CxfEndpoint();
cxfEndpoint.setAddress("http://localhost:8088/interface");
cxfEndpoint.setWsdlURL("wsdl/contract.wsdl");
cxfEndpoint.setCamelContext(camelContext);
cxfEndpoint.setDataFormat(DataFormat.PAYLOAD);
try {
camelContext.addEndpoint("myEndpoint", cxfEndpoint);
} catch (Exception e) {
e.printStackTrace();
}
from("timer://my-timer?fixedRate=true&period=500")
.transform(constant("DummyBody"))
.to("cxf://myEndpoint");
}
}
Run Code Online (Sandbox Code Playgroud)
这条路线被插入到使用 Spring XML 定义的骆驼上下文中(我还有一些其他路线)。
我收到以下错误:
karaf@root> Exception in thread "SpringOsgiExtenderThread-78" org.apache.camel.FailedToCreateProducerException: Failed to create Producer fo
r endpoint: Endpoint[cxf://myEndpoint]. Reason: java.lang.IllegalArgumentException: serviceClass must be specified
at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:395)
at org.apache.camel.impl.ProducerCache.acquireProducer(ProducerCache.java:114)
at org.apache.camel.impl.ProducerCache.startProducer(ProducerCache.java:145)
at org.apache.camel.processor.SendProcessor.doStart(SendProcessor.java:175)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
....
Run Code Online (Sandbox Code Playgroud)
现在错误很简单,但这里说:
只有 POJO 模式需要此选项。如果提供了 wsdlURL 选项,则 PAYLOAD 和 MESSAGE 模式不需要 serviceClass。
如果我使用的是 PAYLOAD 模式,为什么我还需要一个服务类?创建 cxf 端点时是否遗漏了什么?
您已经设置了要使用的 CxfEndpoint,因此您的路线应该像这样
from("timer://my-timer?fixedRate=true&period=500")
.transform(constant("DummyBody"))
.to(myEndpoint);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7256 次 |
| 最近记录: |