Java 如何测试JAX-WS连接超时
我正在尝试测试部署在IBMWebSphereApplicationServer8.5上的jaxws客户端的连接超时属性。我通过以下方式设置超时属性: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()
((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,好的。也许你需要的就是这里。