我正在尝试测试部署在IBM Websphere Application Server 8.5上的jaxws客户端的连接超时属性。我通过以下方式设置超时属性:
((BindingProvider) port).getRequestContext().
put(com.ibm.wsspi.webservices.Constants.RESPONSE_TIMEOUT_PROPERTY, "30");
((BindingProvider) port).getRequestContext().
put(com.ibm.wsspi.webservices.Constants.CONNECTION_TIMEOUT_PROPERTY, "15";
RESPONSE_TIMEOUT_PROPERTY工作正常。
但我不知道如何测试CONNECTION_TIMEOUT_PROPERTY。如果在创建服务实例的过程中Web服务不可用,我会得到以下异常:
javax.xml.ws.WebServiceException: The following WSDL exception occurred:
WSDLException: faultCode=WSDL4JWrapper : : javax.wsdl.WSDLException:
WSDLException: faultCode=WSDL4JWrapper : :
java.net.ConnectException: Connection refused: connect
如果在创建端口期间Web服务不可用(调用getPort(…)方法),我会得到以下异常:
javax.xml.ws.WebServiceException:
java.net.ConnectException: HTTP ( 404 ) Not Found address :
http://myhost:myport/WsServer/helloService
异常会立即抛出。我想我做错了什么。任何指示都会有所帮助。
服务器上需要打开一个套接字才能接受连接。
试试下面的
public static void main(String[] args) {
int port = Integer.parseInt(args[0]);
try (ServerSocket serviceStub = new ServerSocket(port)) {
while (true) {
serviceStub.accept();
System.out.println("Something connected");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
在服务器上运行此操作(使用所需的任何端口)。它将接受一个连接,但永远不会做任何应该模拟您超时的事情。
一般来说,任何在端口上侦听而什么都不做的事情都应该符合要求。