Apache camel Camel-CXF:Soap客户端超时
我正在使用Camel CXF端点连接到我的soap服务器。我想为客户端的请求添加超时。我正在使用continuationTimeout选项。但它不起作用。请求超时,而不等待我配置的时间 下面是我的端点配置Apache camel Camel-CXF:Soap客户端超时,apache-camel,cxf,Apache Camel,Cxf,我正在使用Camel CXF端点连接到我的soap服务器。我想为客户端的请求添加超时。我正在使用continuationTimeout选项。但它不起作用。请求超时,而不等待我配置的时间 下面是我的端点配置 <camel-cxf:cxfEndpoint id="tmAPIWSEndpoint" address="http://IN2NPDCEDB01:8088/webservices/services/TransportationManager" wsdlURL="/
<camel-cxf:cxfEndpoint id="tmAPIWSEndpoint" address="http://IN2NPDCEDB01:8088/webservices/services/TransportationManager"
wsdlURL="/wsdl/TransportationManager.wsdl"
endpointName="cis:TransportationManagerPort"
serviceName="cis:TransportationManagerService"
xmlns:cis="http://www.i2.com/cis"
continuationTimeout="60000">
<camel-cxf:properties>
<entry key="dataFormat" value="MESSAGE"/>
<entry key="username" value="XXX"/>
<entry key="password" value="XXX"/>
</camel-cxf:properties>
</camel-cxf:cxfEndpoint>
您的问题不是很清楚,因为没有camel路由,所以我看不出您是在camel中创建SOAP服务,还是从camel作为客户端调用SOAP服务。根据您发送的一点点信息,您似乎正在创建一个客户端 根据camel CXF文档
- continuationTimeout:此选项用于设置默认情况下可在CxfConsumer中使用的CXF继续超时 当CXF服务器使用Jetty或Servlet传输时。(之前 Camel 2.14.0,CxfConsumer只需将延续超时设置为 0,这意味着继续挂起操作从不超时。)
- ConnectionTimeout:指定客户端在建立连接之前尝试建立连接的时间量(以毫秒为单位) 超时。默认值为30000(30秒)。0指定 客户端将继续尝试无限期地打开连接
- ReceiveTimeout:指定客户端在超时之前等待响应的时间量(以毫秒为单位)。这个 默认值为60000。0指定客户端将无限期等待
如果您访问CXF文档页面,这里有很多示例 以下是如何以编程方式执行此操作:
HelloWorld hello = (HelloWorld) context.getBean("helloService");
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(hello);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(5000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(5000);
httpConduit.setClient(httpClientPolicy);
System.out.println(hello.getHelloWorldAsString("Everyone"));
(我正在使用spirng)
非常感谢您<代码>http配置:导管解决了我的问题。
<bean id="helloService"
class="soap.timeout.demo.client.jaxws.HelloWorld"
factory-bean="helloServiceFactory" factory-method="create"/>
<bean id="helloServiceFactory"
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="soap.timeout.demo.client.jaxws.HelloWorld"/>
<property name="address" value="http://localhost:9999/ws/hello"/>
</bean>