我的项目是webservice的客户端,今天在接一个大的订单时报错,算了下,不到300K,报错如下
java.net.SocketTimeoutException: Read timed out
在stackoverflow上查了下,发现可以通过设置超时时间解决,代码如下:
IEAMDtNegotiationRecordService service = new IEAMDtNegotiationRecordService();
IEAMDtNegotiationRecordServicePortType servicePort = service.getIEAMDtNegotiationRecordServiceHttpPort();
Map<String, Object> requestContext = ((javax.xml.ws.BindingProvider)servicePort).getRequestContext();
requestContext.put("com.sun.xml.internal.ws.connect.timeout", 150000); // Timeout in millis
requestContext.put("com.sun.xml.internal.ws.request.timeout", 150000); // Timeout in millis
但是在我的工程里这段代码无效,把webservice放到一个新建的工程里没问题,原来超时的也不超时了可以正常接收到了,大概90s。
可能是跟公司平台的底层代码有关系,明天继续找。
在处理大型订单时,Webservice客户端出现读取超时错误。尝试通过设置连接和请求超时时间解决,但代码在现有项目中无效。将Webservice移植到新项目后,问题得到解决。
1484

被折叠的 条评论
为什么被折叠?



