java - 设置 jax-ws 客户端超时

标签 java web-services jax-ws

我在设置 jax-ws 超时时遇到了问题。我的代码是:

@WebServiceClient(name = "VoipDBJDBCService", targetNamespace = "http://db.server.voipmeter.jextreme.eu/", wsdlLocation = "http://trace0.nyc.blinkmind.com:8080/voipdb?wsdl")
public class VoipDBJDBCService extends Service {
    public VoipDBJDBCService(URL wsdlLocation) {
        super(wsdlLocation, new QName("http://db.server.voipmeter.jextreme.eu/", "VoipDBJDBCService"));
    }

    @WebEndpoint(name = "VoipDBJDBCPort")
    public VoipDB getVoipDBJDBCPort() {
        return super.getPort(new QName("http://db.server.voipmeter.jextreme.eu/", "VoipDBJDBCPort"), VoipDB.class);
    }
}

以及用法:

VoipDB db = new VoipDBJDBCService(new URL(url)).getVoipDBJDBCPort();

我如何 Hook 超时?我在这里找到了“解决方案”:https://jax-ws.dev.java.net/guide/HTTP_Timeouts.html但我不知道我应该把它卡在哪里。如何获得代理?当我调用 getPort 客户端尝试连接时,如果服务器没有响应,客户端将永远挂起。

更新: 如果有任何区别,则从小程序 init() 方法中调用此代码。

最佳答案

使用 Metro/Glassfish...

//1 minute for connection
((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.connect.timeout", 1 * 60 * 1000); 

//3 minutos for request
((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.request.timeout", 3 * 60 * 1000); 

关于java - 设置 jax-ws 客户端超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130913/

相关文章:

java - 使用 JAX-WS 使用 ASP.net Web 服务,获取 "The specified type is abstract"

WcfTestClient:合约 'IMetadataExchange' 错误

web-services - 对 SAP PI 服务进行匿名身份验证的未经授权的 HTTP 请求

java - 保留 GridBagLayout 组件顺序?

java - 在 RelativeLayout android 中使用 java 动态更改 TextView 的位置

java - 将第三方库与 netbeans 结合使用

java - 枚举警告

java - WebServiceContext 保持为空

java - 如何在 glassfish 中从一个容器调用另一个容器中的 Web 服务