繁体   English   中英

JAX-WS Web服务客户端:服务器发送了HTTP状态代码504:网关超时

[英]JAX-WS webservice client : The server sent HTTP status code 504: Gateway Time-out

我正在使用JAX-Ws客户端调用Web服务。该Web服务运行一段时间(例如20-30分钟)。 但是,3-4分钟后,我在客户端收到以下异常。

The server sent HTTP status code 504: Gateway Time-out:com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 504: Gateway Time-out at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:296) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:245) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:203) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122) at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95) at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626) at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585) at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570) at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467) at com.sun.xml.internal.ws.client.Stub.process(Stub.java:308) at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:146) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129) at com.sun.proxy.$Proxy31.processRequest(Unknown Source) at com.fmer.bsc.test.EdxWebServiceInvokerThread.call(EdxWebServiceInvokerThread.java:57) at com.fmer.bsc.test.EdxWebServiceInvokerThread.call(EdxWebServiceInvokerThread.java:1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)

我可能是因为客户端超时而添加了超时变量,如下所示。仍然没有运气。 另外在服务器上,我看到Web服务仍在执行。

private static Integer timeOut = new Integer((10 * 60 * 60 * 1000)); //Read as 1O hrs * 60 min * 60 seconds * 1 milli second


//Setting the Request timeout and connection time out 
EdxWebServiceImplService edxWebservice = new EdxWebServiceImplService(WsURL);
edxServicePort = edxWebservice.getEdxWebServiceImplPort();
BindingProvider edxWebserviceBindingProvider  = (BindingProvider)edxServicePort;

//In milli Seconds...
edxWebserviceBindingProvider.getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT,timeout);
edxWebserviceBindingProvider.getRequestContext().put(JAXWSProperties.REQUEST_TIMEOUT,timeOut);

//Now invoke the webservice....

我认为问题出在apache httpd网络服务器上,默认超时时间为120秒。

我们所有的Web服务调用都经过负载平衡器(Apache httpd服务器),然后将其发送到Jboss应用服务器。

因此更改了appache webserver的httpd.conf文件中的以下属性值。

 Timeout 120 

Timeout 18000

即5小时

此更改是对JAX-WS客户端代码中的更改的补充。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM