Java 如何测试JAX-WS连接超时

Java 如何测试JAX-WS连接超时,java,testing,jax-ws,connection-timeout,ibm-was,Java,Testing,Jax Ws,Connection Timeout,Ibm Was,我正在尝试测试部署在IBMWebSphereApplicationServer8.5上的jaxws客户端的连接超时属性。我通过以下方式设置超时属性: ((BindingProvider) port).getRequestContext(). put(com.ibm.wsspi.webservices.Constants.RESPONSE_TIMEOUT_PROPERTY, "30"); ((BindingProvider) port).getRequestContext()

我正在尝试测试部署在IBMWebSphereApplicationServer8.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";
响应\u超时\u属性工作正常

但我不知道如何测试连接超时属性。如果在创建服务实例的过程中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
javax.xml.ws.WebServiceException: 
            java.net.ConnectException: HTTP ( 404 ) Not Found address :
            http://myhost:myport/WsServer/helloService
如果webservice在创建端口(调用getPort(…)方法)期间不可用,则会出现以下异常:

javax.xml.ws.WebServiceException: The following WSDL exception occurred: 
            WSDLException: faultCode=WSDL4JWrapper : : javax.wsdl.WSDLException: 
            WSDLException: faultCode=WSDL4JWrapper : :
            java.net.ConnectException: Connection refused: connect
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 {

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


一般来说,任何在端口上侦听而不执行任何操作的操作都应该符合要求。

Sarah,谢谢您的回答。我测试你的解决方案。请求已通过响应超时完成。我做了线程转储。Web容器的线程正在运行执行方法
java/net/SocketInputStream.socketRead0(本机方法)
Ah,好的。也许你需要的就是这里。