如何测试JAX-WS连接超时

时间:2015-06-22 13:03:27

标签: java testing jax-ws connection-timeout ibm-was

我正在尝试测试部署在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。如果在创建服务实例期间无法使用webservice,则会出现以下异常:

javax.xml.ws.WebServiceException: The following WSDL exception occurred: 
            WSDLException: faultCode=WSDL4JWrapper : : javax.wsdl.WSDLException: 
            WSDLException: faultCode=WSDL4JWrapper : :
            java.net.ConnectException: Connection refused: connect

如果在创建端口期间无法使用webservice(调用getPort(...)方法),我会收到以下异常:

javax.xml.ws.WebServiceException: 
            java.net.ConnectException: HTTP ( 404 ) Not Found address :
            http://myhost:myport/WsServer/helloService

立即抛出例外情况。我想我做错了什么。任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:0)

服务器上需要打开一个套接字才能接受连接。

尝试类似以下内容

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 {

        }
}

在服务器上运行(使用您需要的任何端口)。它将接受连接但永远不会做任何应该模拟你的超时的事情。

通常情况下,任何侦听端口并且什么也不做的事都应符合要求。