我需要为连接尝试和服务调用配置具有特定超时值的 SOAP WebService 客户端。
WS 客户端是使用 WSDL 和 Maven cxf-codegen-plugin 生成的 jar 依赖项。我在我的 web 应用程序中使用这个客户端 jar 作为 maven 依赖项并调用服务操作。
所以我的 webapp pom 包含:
<dependency>
<groupId>my.web.service</groupId>
<artifactId>web-service-client-jar</artifactId>
<version>x.x.x</version>
</dependency>
连同 Apache CXF 依赖项:
<!-- CXF dependencies -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
我在下面定义了弹簧配置来设置不起作用的超时..
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">
<http-conf:conduit name="*.http-conduit">
<http-conf:client ConnectionTimeout="20000" ReceiveTimeout="10000" />
</http-conf:conduit>
<cxf:bus>
<cxf:outInterceptors>
<ref bean="fileuploadlogOutbound" />
</cxf:outInterceptors>
</cxf:bus>
<!-- Outbound Message Logging -->
<bean id="fileuploadlogOutbound" class="test.logging.MyLoggingOutInterceptor">
<property name="prettyLogging" value="true" />
</bean>
但令我困惑的是,为漂亮的日志记录定义的 outInterceptors 工作正常。因此,我怀疑我的配置是否有任何错误。仅供参考,我正试图让它在 WebSphere 8.5 环境中工作。
这就是我在春季实例化 WS 客户端的方式:
<jaxws:client id="documentUploadServiceJaxwsClient"
serviceClass="org.tempuri.IDocumentUploadService" address="#serviceEndpointString" >
<jaxws:binding>
<soap:soapBinding version="1.2" mtomEnabled="true" />
</jaxws:binding>
</jaxws:client>
Spring 配置中是否缺少任何步骤,或者我是否需要查看将强制 HTTP/SOAP 连接和响应超时的 WebSphere 8.5 特定配置?