Apache的骆驼:RouteBuilder与CxfEndpoint [英] Apache Camel: RouteBuilder with CxfEndpoint
问题描述
我试图实现与Java DSL和RouteBuilder一个骆驼的路线。我想从一个计时器端点发送到CXF端点。
I'm trying to implement a Camel route with Java DSL and RouteBuilder. I want to send from a timer endpoint to a cxf endpoint.
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");
}
}
这条路线被插入到骆驼上下文中使用的Spring XML定义(在这里我有一些其他途径)。
This route gets inserted into a camel context defined using Spring XML (where I have some other routes).
我收到以下错误:
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)
....
现在的错误是pretty向前伸直,但这里说:
Now the error is pretty straight forward, but here says:
仅由POJO模式需要此选项。如果WSDLURL选项
提供,serviceClass不需要PAYLOAD和MESSAGE模式
This option is only required by POJO mode. If the wsdlURL option is provided, serviceClass is not required for PAYLOAD and MESSAGE mode.
如果我使用PAYLOAD模式,为什么我还需要一个服务类?我在创建CXF端点时失去了一些东西?
Questions:
If I'm using PAYLOAD mode, why I still need a service class? Am I missing something when creating the cxf endpoint?
推荐答案
您已经安装一个CxfEndpoint使用,使你的路线应该只是这样的
You already setup a CxfEndpoint to use, so your route should be just like this
from("timer://my-timer?fixedRate=true&period=500")
.transform(constant("DummyBody"))
.to(myEndpoint);
这篇关于Apache的骆驼:RouteBuilder与CxfEndpoint的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!