我正在使用Apache Camel和端点的CXF Spring配置如何调用特定方法。即如果wsdl已经定义了我需要的10种方法 将10 cxfEndpoint暴露给站点,或者可以通过调用对其进行参数化 不知何故?如何插入“方法名称”以便在该服务中调用?
<cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
wsdlURL="testutils/hello_world.wsdl"
serviceClass="org.apache.hello_world_soap_http.Greeter"
endpointName="s:SoapPort"
serviceName="s:SOAPService"
xmlns:s="http://apache.org/hello_world_soap_http" />
答案 0 :(得分:1)
因此,当您使用5个操作创建WSDL时,在CXF中运行WSDL2JAVA工具时将公开这5个操作。
让我们假设我有一个带有2个操作的WSDL,如下所示:
在camel中,当我将此路由公开为camel使用者时,我可以通过检查消息上的headers.operationName
属性来查看执行了哪个操作。
例如,当用户执行GetClient
操作时,headers.operationName
将等于字符串"GetClient"
。
所以我可以创建一个如下的路由来处理不同的操作:
<from uri="cxf:bean:AccountsService?dataFormat=POJO"/>
<doTry>
<choice>
<when>
<simple>${headers.operationName} == 'GetClient'</simple>
<bean ref="GetClientBean"/>
</when>
<when>
<simple>${headers.operationName} == 'ListClient'</simple>
<bean ref="ListClientBean"/>
</when>
<when>
<simple>${headers.operationName} == 'SomeOtherOperation'</simple>
<bean ref="SomeOtherBean"/>
</when>
</choice>
如果要限制暴露的操作,可以简单地抛出异常或在您不想公开的操作上构造错误消息。
玩得开心!