java - CXF 超时不起作用

标签 java spring web-services weblogic cxf

我使用通过 Spring 配置的 cxf 创建了一个 Web 服务客户端,如下所示:

<!-- HTTP Conduit -->
<http-conf:conduit name="*.http-conduit">
    <http-conf:client ConnectionTimeout="30000"
        ReceiveTimeout="30000" />
</http-conf:conduit>

<!-- Client Proxies -->
<jaxws:client name="wsClient" serviceName="..."
    serviceClass="..."
    address="..." wsdlLocation="...">
</jaxws:client>

现在,当服务启动时,一切正常,但问题是,当服务关闭时,HTTPConduit 中的超时值将被忽略,1 秒后出现以下错误:

org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:570)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:479)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:136)

Caused by: java.net.ConnectException: Tried all: '1' addresses, but could not connect over HTTP to server: '192.168.80.55', port: '24004'
at weblogic.net.http.HttpClient.openServer(HttpClient.java:333)
at weblogic.net.http.HttpClient.openServer(HttpClient.java:425)
at weblogic.net.http.HttpClient.New(HttpClient.java:252)
at weblogic.net.http.HttpURLConnection.connect(HttpURLConnection.java:213)
at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:279)
at org.apache.cxf.transport.http.HTTPCon2014-08-30 13:06:59 ERROR: javax.xml.ws.WebServiceException: Could not send Message.

知道为什么消费者在引发此错误之前没有停留在超时时间内吗?

最佳答案

当服务器“关闭”时,超时不适用。

ConnectionTimeout 是连接前等待的时间。

ReceiveTimeout 是接收响应之前等待的时间。

在您的情况下,没有服务器监听该端口,因此当您的客户端尝试连接时,客户端立即失败。

关于java - CXF 超时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25581363/

相关文章:

java - 无法将 Javafx Controller 事件与 FXML 形状连接。 ( java )

私有(private)方法上的 Javax 验证不会被触发

java - 是否可以在基于 Spring 的控制台应用程序中使用 @Valid 注释?

java - 扩展 Spring Cloud - 云平台可扩展性

jquery - JSON 服务在失败/错误时应该返回什么

iphone - 简单 iOS 应用程序的基于 Web 的后端?

java - MySQL语法错误异常

java - 如何使用 spring 管理的事务性 EntityManager 执行自定义 SQL 查询

javascript - 使用javascript调用webservice而不使用jQuery ajax?

java - 查找数组中的字符