我正在写一个应用程序,它使用Web服务连接远程服务器。我已经写了一个ping函数的方法来确定服务器是否在线(即它提供的Web服务可以使用host:port访问)。我正在执行一个简单的Web服务,超时时间为2秒(在我进行调用之前,可以作为存根类中的一个选项)。理想情况下,调用应该在2秒内返回,以便我确定服务器是否启动或关闭。然而,在某些情况下,它需要的时间远远超过2秒。
谁能帮我弄清楚为什么会发生这种情况?有没有一种方法可以确保超时值得到尊重?
谢谢,费尔
我正在写一个应用程序,它使用Web服务连接远程服务器。我已经写了一个ping函数的方法来确定服务器是否在线(即它提供的Web服务可以使用host:port访问)。我正在执行一个简单的Web服务,超时时间为2秒(在我进行调用之前,可以作为存根类中的一个选项)。理想情况下,调用应该在2秒内返回,以便我确定服务器是否启动或关闭。然而,在某些情况下,它需要的时间远远超过2秒。
谁能帮我弄清楚为什么会发生这种情况?有没有一种方法可以确保超时值得到尊重?
谢谢,费尔
3条答案
按热度按时间2ekbmq321#
在Axis客户端存根中,有一个用于设置超时的选项。您也可以使用它。请注意,超时以毫秒为单位。请在此处查看
如果是Axis2,可以这样使用:
你可以在设置好上述内容后拨打电话。
rta7y2nd2#
不要使用默认的http发送器,切换到基于普通http客户端的发送器。详细信息在这里-http://wiki.apache.org/ws/FrontPage/Axis/AxisCommonsHTTP-同一页也有关于如何设置各种超时的详细信息。
b91juud33#
在axis 1.4中,发现Stub::setFactory中的实际超时设置出现在SocketFactoryFactory::getFactory中,但如果在缓存中找到协议的工厂,则忽略新的超时值。
清除该高速缓存似乎可以解决此问题