Java Https CXF超时

Java Https CXF超时,java,apache,timeout,cxf,Java,Apache,Timeout,Cxf,我尝试使用支付网关的Web服务,它使用HTTPS作为协议,我使用的是ApacheCXF客户端 问题是我的所有请求都超时了,但是当我对同一个Web服务使用curl时,我得到的响应没有任何问题 当我登录到支付网关的管理区域时,我的所有尝试都在那里,没有任何错误,因此我可以说问题在某个地方得到了响应 下面是堆栈跟踪 org.apache.cxf.interceptor.Fault:无法发送消息。 位于org.apache.cxf.interceptor.MessageSenderInterceptor

我尝试使用支付网关的Web服务,它使用HTTPS作为协议,我使用的是ApacheCXF客户端

问题是我的所有请求都超时了,但是当我对同一个Web服务使用curl时,我得到的响应没有任何问题

当我登录到支付网关的管理区域时,我的所有尝试都在那里,没有任何错误,因此我可以说问题在某个地方得到了响应

下面是堆栈跟踪

org.apache.cxf.interceptor.Fault:无法发送消息。 位于org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderdingInterceptor.handleMessage(MessageSenderInterceptor.java:64) 位于org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 位于org.apache.cxf.endpoint.clientmpl.doInvoke(clientmpl.java:510) 位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:440) 位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:343) 位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:295) 位于org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:75) 位于org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 位于com.sun.proxy.$Proxy1074.authorize(未知来源) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597)

原因:java.net.SocketTimeoutException:读取超时 在jrockit.net.SocketNativeIO.readBytesPinned(本机方法) 位于jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:32) 位于java.net.SocketInputStream.socketRead0(SocketInputStream.java) 位于java.net.SocketInputStream.read(SocketInputStream.java:129) 在com.sun.net.ssl.internal.ssl.InputRecord.readFully上(InputRecord.java:422) 位于com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:460) 位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863) 位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:820) 位于com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75) 在java.io.BufferedInputStream.fill处(BufferedInputStream.java:218) 位于java.io.BufferedInputStream.read1(BufferedInputStream.java:258) 在java.io.BufferedInputStream.read处(BufferedInputStream.java:317) 位于weblogic.net.http.MessageHeader.isHTTP(MessageHeader.java:224) 位于weblogic.net.http.MessageHeader.parseHeader(MessageHeader.java:148) 位于weblogic.net.http.HttpClient.parseHTTP(HttpClient.java:468) 位于weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:401) 位于weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37) 位于weblogic.net.http.HttpURLConnection.getResponseCode(HttpURLConnection.java:1005) 位于org.apache.cxf.transport.http.httpconductor$WrappedOutputStream.handleResponseInternal(httpconductor.java:1509) http.httpconductor$WrappedOutputStream.handleResponse(httpconductor.java:1467) 位于org.apache.cxf.transport.http.httpconductor$WrappedOutputStream.close(httpconductor.java:1375)


您可能希望更改Apache CXF src中的receiveTimeout设置,并替换服务器中现有的CXF-rt-transports-http-version.jar


请参阅

中的说明,检查您是否支持web代理,这就是为什么它在curl中工作,而不是通过Apache CXF工作。

使用curl时,请求需要多长时间?我认为CXF的默认超时时间为60秒,因此您可能需要延长它。如果您需要配置超时的帮助,请发布用于创建CXF客户端的代码/配置。使用curl只需一两秒钟,我就能得到响应。我用90秒超时,但我仍然有这个问题。