我的基于Axis的客户端程序试图连接到web服务,当服务器关闭时,我不想等待太长时间。我想等待最多3秒,所以我需要设置一个超时
在调用类-Axis的JAXRPC动态调用上有CONNECTION_TIMEOUT_PROPERTY属性。我不知道怎么用。我在网上查了很多,还没找到怎么做。我无法使连接超时工作。
我在Axis 1.3的客户端代理中使用这样的定义:
<bean id="serviceTarget" class="com.nxsec.log4ensics.dbmanager.ws.DMJaxRpcPortProxyFactoryBean">
<property name="customPropertyMap"><map>
<entry key="axis.connection.timeout">
<value type="java.lang.Integer">3000</value>
</entry>
</map></property>
</bean>
我在这里找到了一个通过存根设置超时的方法,它可能对你有帮助。
在org.apache.axis.client.Stub类中有一个setTimeout方法,它是所有发出的stub扩展的类。
下面是如何设置超时给定一个名为Foo的服务:
FooServiceLocator loc = new FooServiceLocator();
FooService binding = loc.getFooService();
org.apache.axis.client.Stub s = (Stub) binding;
s.setTimeout(1000); // 1 second, in miliseconds
见:http://ws.apache.org/axis/faq.html faq17
我发现这很有效:
long soTimeout = 2 * 60 * 1000; // Two minutes
Stub stub = new TestStub();
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(soTimeout);
//or
int timeOutInMilliSeconds = 2 * 60 * 1000; // Two minutes
Stub stub = new TestStub();
stub._getServiceClient().getOptions().setProperty(
HTTPConstants.SO_TIMEOUT, timeOutInMilliSeconds);
stub._getServiceClient().getOptions().setProperty(
HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));
在这里找到:https://singztechmusings.wordpress.com/2011/05/07/how-to-configure-timeout-duration-at-client-side-for-axis2-web-services/