java客户端调用webservice时 连接超时知道是网络原因 ,如何重试如果不重试程序就死琐了,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java客户端调用webservice时 连接超时知道是网络原因 ,如何重试如果不重试程序就死琐了,相关的知识,希望对你有一定的参考价值。

我想要的结果是抛
异常时捕获异常,然后重试我写的方法直到连接到为止。谢谢
在线等答案 最好有详细的代码

先把连接超时的时间设置长一点!
抛异常处理时,空处理异常,继续调用连接方法,不过,服务器一般都有连接超时的时间的,超过时间连接不上,就会自动中断客户端的请求。释放资源!追问

何为空处理异常,是有一种异常为空异常,还是Exception异常,里面什么都不写,就写我的方法

追答

嗯嗯!就是不处理异常,直接重新调用你的连接方法!其实可以设置一个时间点,连接不上,隔了多少时间,重新连接,写成线程,定时运行更有效率!

追问

我就是写的线程在里面没每隔5秒就运行一次,都是可以运行的,但是只要一报这个连接超时程序就无法运行了,我之前也试过你说的就写在catch语块里但是就是不运行,它也相当于是一种循环了 是吧,还有没有其它的方式,谢谢

追答

1.比如说你的连接类和方法是:
Connet
conect()
try catch(Execption e)log.error(e);


2.你的执行线程:
ConnectThread extends Thread
ConnectThread(Connet conn)
run()conn.conect();


3.利用定时器去做定时调用,而且应该是服务器连接超时的一个周期,比如说,服务器是60S的,那么你就60S之后再执行这个线程。
---不知道这样可否可行呢。。。

参考技术A bool continueconnect=true;
while(continueconnect==true)

try
connect(); //这里写连接代码
continueconnect=false;//如果 content成功了 就 设置continueconnect=false
catch(Execption e)

continueconnect=true;//如果 content出错了了 就 设置continueconnect=true;以便继续 连接
log.error(e);


参考技术B 你先测试一下网络是否通,telnet IP 端口

关于webservice的同时调用的问题?

如果多个请求同时调用的服务函数,是不是先调用的人服务器先给他处理,其余的人在等待状态?
等待会超时么?

不会的。分两种情景理解:
1,一个客户端一个Service实例通过异步共同访问一个接口,这样需要等待的。
2,一个或者多个客户端不同Service实例共同访问一个接口,这样不需要等待。
参考技术A 在调用的时候,一定会初始化一个web service实例,然后调用实例中的方法。每一个客户端都会初始化一个实例,webservice可以看作是一个资源,可以被多个客户端同时请求,但是能够接受多少连接,是看服务器的本回答被提问者和网友采纳 参考技术B 这个和你的服务器的配置与性能有关,每个人调用的时候是单独打开一个线程,互相之间不莫顿的,因此你的担心是多余的。 参考技术C 汗、不是那样子的。调用webservice跟你在类库调用方法是一样的都可以同时调用无需等待的、追问

不是单线程的么?

追答

不是单线程、你可以试试

参考技术D 在调用的时候,一定会初始化一个web service实例,然后调用实例中的方法。每一个客户端都会初始化一个实例,webservice可以看作是一个资源,可以被多个客户端同时请求,但是能够接受多少连接,是看服务器的

以上是关于java客户端调用webservice时 连接超时知道是网络原因 ,如何重试如果不重试程序就死琐了,的主要内容,如果未能解决你的问题,请参考以下文章

接口超时需要怎么处理

java axis2 调用webservice 怎么捕获超时异常(即超时了让它停下来,不要报错)

Axis2如何设置连接超时时间

axis2 调用 webService 报超时错误 org.apache.axis2.AxisFault: Connection reset

关于webservice的那个问题是怎么解决的?连接超时

局域网下的客户端调用服务接口超时的问题总结