我正在编写一个使用Web服务连接远程服务器的应用程序。我编写了一个ping函数的方法,以确定服务器是否在线(即它提供可以使用host:port访问的Web服务)我正在执行一个2秒超时的简单Web服务(在我拨打电话之前作为存根类中的选项提供)。理想情况下,呼叫应该在2秒内返回,这样我就可以确定服务器是启动还是关闭。但是在某些情况下,它需要超过2秒。
任何人都可以帮我弄清楚为什么会发生这种情况吗?有没有办法确保超时值得到尊重?
谢谢, 跌
答案 0 :(得分:3)
在Axis客户端存根中,您可以选择设置超时。你也可以使用它。请注意,超时以毫秒为单位。 check here
如果它是Axis2,你可以像这样使用:
Stub s = new Stub();
ServiceClient sc = s.getServiceClient();
Options o = sc.getOptions();
o.setTimeOutInMilliSeconds(2000); //2 seconds
sc.setOptions(o);
s.setServiceClient(sc);
您可以在设置上述内容后拨打电话。
答案 1 :(得分:1)
请勿使用默认的http发件人,切换到基于http客户端的公共发件人。详细信息在这里 - http://wiki.apache.org/ws/FrontPage/Axis/AxisCommonsHTTP - 同一页面上有关于如何设置各种超时的详细信息。