【问题标题】:Connection details & timeouts in a java web service clientJava Web 服务客户端中的连接详细信息和超时
【发布时间】:2011-03-02 01:33:42
【问题描述】:

我必须为给定的 WSDL 文件实现一个 Web 服务客户端。 我使用 SDK 的 'wsimport' 工具从 WSDL 创建 Java 类以及将 web 服务的唯一方法 (enhanceAddress(auth, param, address)) 包装成简单的 java 方法的类。到目前为止,一切都很好。网络服务功能正常,返回结果正确。代码如下所示:

try {
  EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
  //Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
  throw new AddressValidationException("Error during uniserv webservice request.", e);
}

现在的问题:我需要获取有关连接的信息以及可能发生的任何错误,以便填充各种 JMX 值(例如 COUNT_READ_TIMEOUT、COUNT_CONNECT_TIMEOUT、...) 不幸的是,该方法没有正式抛出任何异常,因此为了获得有关 ConnectException 的详细信息,我需要在将抛出的 ClientTransportException 上使用 getCause()。

更糟糕的是:我尝试测试读取超时值,但没有。我更改了 wsdl 文件中服务的位置,以将请求发布到一个 php 脚本,该脚本只是永远等待并且不会返回。猜猜看:Web 服务客户端确实没有超时,但也一直等待(我在等待 30 多分钟后终止了应用程序)。这不是我的应用程序的一个选项,因为如果其中一些“卡住”,我最终会用完 tcp 连接。

enhanceAddress(auth, param, address) 方法未实现,但使用 javax.jws 进行注释。* 注释,这意味着我无法查看/更改/检查实际执行的代码。

除了扔掉整个 wsimport/javax.jsw-stuff 并实现我自己的肥皂客户端之外,我还有其他选择吗?

【问题讨论】:

    标签: java timeout jax-ws jmx java-web-start


    【解决方案1】:

    要设置读取超时和连接超时,您可以在设置服务和端口实例时配置绑定参数:


        Service = new Service();
    
        Port = Service.getPort();
    
        ((BindingProvider) Port).getRequestContext().put(
                BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                "http://localhost:8080/service");
        ((BindingProvider) Port).getRequestContext().put(
                BindingProviderProperties.CONNECT_TIMEOUT,
                30);
        ((BindingProvider) Port).getRequestContext().put(
                BindingProviderProperties.REQUEST_TIMEOUT,
                30);
    

    现在,当您通过“端口”执行服务时,如果后端响应缓慢,您将收到响应超时和/或连接超时。这些值遵循 Socket 类的超时值。

    当超过这些超时时,您将收到超时异常或连接异常,您可以输入计数器代码来跟踪您获得了多少。

    【讨论】:

    • 自从两周前遇到问题后,我编写了自己的客户端。尽管如此,我还是测试了你的方法并且它正在工作!当时我确实找到了一段类似的代码,但是当我尝试强制转换为 BindingProvider 时,不知何故它给了我一个 ClassCastException。
    • 我也有类似的问题,但是拿到端口的时候超时了,怎么解决??
    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 2012-10-30
    • 2013-12-17
    • 2017-10-02
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多