Java webservice通信 由于服务端查库耗时太长 我的客户端总是在还没有得到结果的时候连接就断了
Javawebservice通信客户端用axis2和jaxws都试过由于服务端查库耗时太长我的客户端总是在还没有得到结果的时候连接就断了每次都取不到数据只有一个readt...
Java webservice通信 客户端用axis2和jaxws都试过 由于服务端查库耗时太长 我的客户端总是在还没有得到结果的时候连接就断了 每次都取不到数据 只有一个read time out的错误提示 我要怎么设置让我的客户端一直不断开连接呢 求详解
展开
3个回答
展开全部
HTTP的通讯模式就是面向短链接的,虽然可以通过设置连接timeout的时间来延长超时时间,但这不是根本解决问题的方法。建议两个思路:
1.使用Java Socket实现长连接通讯。
2.不改通讯协议,将同步接口改为异步接口,通过异步方式实现长时间任务的处理。大致思路是,服务端收到客户端请求后立即发送一个request_id给客户端,然后客户端用这个id定时到服务端查询结果。
1.使用Java Socket实现长连接通讯。
2.不改通讯协议,将同步接口改为异步接口,通过异步方式实现长时间任务的处理。大致思路是,服务端收到客户端请求后立即发送一个request_id给客户端,然后客户端用这个id定时到服务端查询结果。
追问
这个理论上可行 就是服务端没办法配合我改成异步
追答
谢谢采纳,另外再说一下,HTTP的超时设置,包括客户端和服务端的,最终连接超时时间是以二者中最小的那个为准。
展开全部
webservice有个默认访问超时机制,你可以通过设置webservice超时时间来控制time out。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置超时的时长,分为读取超时 和连接超时,把读取超时设置时间 长些
追问
就是不知道怎么设置啊 我在网上找的很多延时的设置 好像都只是把发送请求的时间延迟了而已 没办法保证我的连接不断开
追答
SimpleServiceService srv = new SimpleServiceService();
005 SimpleService servicePort = srv.getSimpleServicePort();
006
007 //timeout setting
008 Client cl = ClientProxy.getClient(servicePort);
009
010
011 HTTPConduit http = (HTTPConduit) cl.getConduit();
012
013
014 HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
015 httpClientPolicy.setConnectionTimeout(10000);
016 httpClientPolicy.setReceiveTimeout(1000);
017 http.setClient(httpClientPolicy);
018
019 servicePort.concatenate("111", "2222");
看看这个网上cp 的应该对你有用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询