如何在 Apache Camel 中更改 SOAP Web 服务端点 URL 和 WSDL URL
Posted
技术标签:
【中文标题】如何在 Apache Camel 中更改 SOAP Web 服务端点 URL 和 WSDL URL【英文标题】:How to change SOAP Web service Endpoint URL and WSDL URL in Apache Camel 【发布时间】:2017-10-26 10:07:29 【问题描述】:要求 SOAP WSDL Url 和 Endpoint URL 必须彼此不同。我在下面使用 Apache Camel 和 Apache CXF 是我的蓝图,但是当我在端口 8043 请求时,当我将其更改为 9143 时,那里没有 wsdl。
需要在url上暴露wsdl:http://0.0.0.0:8043/Services/Interface/FSServices/FSServices.serviceagent?wsdl
端点 URL 为:http://0.0.0.0:9143/Services/Interface/FSServices/FSServices.serviceagent/PortTypeEndpoint1/
<cxf:cxfEndpoint
address="http://0.0.0.0:8043/Services/Interface/FSServices/FSServices.serviceagent"
id="fsEndpoint" serviceClass="pk.com.herman.fs.operation.PortType">
<cxf:properties>
<entry key="publishedEndpointUrl" value="http://0.0.0.0:9143/Services/Interface/FSServices/FSServices.serviceagent/PortTypeEndpoint1/"/>
</cxf:properties>
</cxf:cxfEndpoint>
【问题讨论】:
所以更改两个端口号。你有两个 IP 地址。 【参考方案1】:奇怪的要求。您可以通过添加一个禁用 WSDLGetInterceptor 拦截器的拦截器来做到这一点。
添加拦截器
<bean id="removeWSDLinterceptor"
class="my.package.RemoveWSDLInterceptor" />
<cxf:cxfEndpoint address="http://0.0.0.0:8043/Services/Interface/FSServices/FSServices.serviceagent"
id="fsEndpoint" serviceClass="pk.com.herman.fs.operation.PortType">
<cxf:inInterceptors>
<ref bean="removeWSDLinterceptor" />
</cxf:inInterceptors>
</cxf:cxfEndpoint>
拦截器
public class RemoveWSDLInterceptor extends AbstractPhaseInterceptor<Message>
public RemoveWSDLInterceptor()
super(Phase.RECEIVE);
public void handleMessage(Message message)
WSDLGetInterceptor getWSDLInterceptor = null;
InterceptorChain chain = message.getInterceptorChain();
for(Iterator<Interceptor<? extends Message>> iter = chain.iterator(); iter.hasNext();)
Interceptor getWSDLInterceptor = iter.next();
if (interceptor instanceof WSDLGetInterceptor)
getWSDLInterceptor = (WSDLGetInterceptor) interceptor;
chain.remove(getWSDLInterceptor);
public void handleFault(Message messageParam)
然后你可以添加一个小码头路由来静态返回 WSDL。
<route>
<from uri="jetty://http://0.0.0.0:9143" />
<to uri="language:constant:resource:file:/path/to/your/wsdlfile.wsdl"/>
</route>
【讨论】:
以上是关于如何在 Apache Camel 中更改 SOAP Web 服务端点 URL 和 WSDL URL的主要内容,如果未能解决你的问题,请参考以下文章
使用 apache-camel [2.24.3] 使用 SOAP 服务时出错