gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:54:28 43 4
gpt4 key购买 nike

我正在尝试测试部署在 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

如果在创建端口时 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 {

}
}

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

一般来说,任何监听端口但什么都不做的东西应该符合要求。

关于java - 如何测试 JAX-WS 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980712/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com