How to Set Timeout for JAX-WS WebService Call

前端 未结 6 1778
醉酒成梦
醉酒成梦 2020-12-14 09:30

I\'m working on a WebService Client and I want to set a Timeout for my WebService Call. I have tried different approaches but still I\'m not able to achieve this. I\'m using

相关标签:
6条回答
  • 2020-12-14 09:40

    Like kolossus said you should use:

    com.sun.xml.internal.ws.client.BindingProviderProperties     
    

    And String values are:

    com.sun.xml.internal.ws.connect.timeout
    com.sun.xml.internal.ws.request.timeout
    

    Although internal packages shouldn't be used, this is the only way if you work with default JDK6. So, in this case setting receive and connect timeout should be done with:

    bindingProvider.getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT,requestTimeoutMs);
    
    bindingProvider.getRequestContext().put(BindingProviderProperties.CONNECT_TIMEOUT,connectTimeoutMs);
    

    But beware, constant values are different if you are using other JAXWS reference implementation, i.e. JAXWS-RT 2.1.4 BindingProviderProperties:

    com.sun.xml.ws.client.BindingProviderProperties
    

    you will have different String values for REQUEST_TIMEOUT and CONNECT_TIMEOUT:

    com.sun.xml.ws.request.timeout
    com.sun.xml.ws.connect.timeout
    
    0 讨论(0)
  • 2020-12-14 09:41

    I have a old installation runtime that have this environment: Jdk-1.5, Jboss-4.2.3.GA and the WSClient was created by JAX-WS specification 2.0.

    to activate Soap Request Timeout I use the follow code ((BindingProvider)port).getRequestContext().put(org.jboss.ws.core.StubExt.PROPERTY_CLIENT_TIMEOUT, String.valueOf(readTimeout));

    and the jar jbossws-client.jar copied in jboss-4.2.3.GA\server\default\lib\

    0 讨论(0)
  • 2020-12-14 09:42

    Setting the following options works for me. I am using the Metro JAXWS implementation.

    ((BindingProvider)portType).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 10000);
    ((BindingProvider) portType).getRequestContext().put(JAXWSProperties.REQUEST_TIMEOUT, 50000);
    

    portType is the Web Service endpoint interface.

    Values of the above fields from the com.sun.xml.internal.ws.developer.JAXWSProperties

    public static final java.lang.String CONNECT_TIMEOUT = "com.sun.xml.internal.ws.connect.timeout";
    public static final java.lang.String REQUEST_TIMEOUT = "com.sun.xml.internal.ws.request.timeout";
    
    0 讨论(0)
  • 2020-12-14 09:43

    For me setting javax.xml.ws.client.connectionTimeout and javax.xml.ws.client.receiveTimeout solved the problem.

    ((BindingProvider)port).getRequestContext().put("javax.xml.ws.client.connectionTimeout", timeout);
    ((BindingProvider)port).getRequestContext().put("javax.xml.ws.client.receiveTimeout", timeout);
    

    refer link

    0 讨论(0)
  • 2020-12-14 09:47

    Upgrade jbossws-native library and use StubExt.PROPERTY_CLIENT_TIMEOUT

    For upgrading jbossws-native, follow this link.

    *jbossws-native-3.4.0 is the latest supported version for Jboss 5.1.0GA. You can see JBossWS - Supported Target Containers

    This worked for me

    0 讨论(0)
  • 2020-12-14 09:48

    You could try these settings (they are paired to be used in pairs)

    BindingProviderProperties.REQUEST_TIMEOUT
    BindingProviderProperties.CONNECT_TIMEOUT
    

    BindingProviderProperties should be from com.sun.xml.internal.WS.client

    Or the strings for JBoss:

    javax.xml.ws.client.connectionTimeout
    javax.xml.ws.client.receiveTimeout
    

    All properties to be put on getRequestContext() in milliseconds.

    (BindingProvider)wsPort).getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, yourTimeoutInMillisec);
    

    For JBoss specifically, you might want to use the property StubExt.PROPERTY_CLIENT_TIMEOUT from org.jboss.ws.core.StubExt. See this thread for details.

    0 讨论(0)
提交回复
热议问题