What can I adjust?
There are three timeouts you can set:
1. CONNECTION_TIMEOUT: The amount of time WebSphere JAX-WS client would wait to establish a http/https connection (default is 180 seconds)
2. WRITE_TIMEOUT: The amount of time the client would wait to finish sending the request (default is 300 seconds)
3. RESPONSE_TIMEOUT: The amount of time the client would wait to finish receiving the response (default is 300 seconds)
How can I set them in my application code?
You can adjust them by setting properties on the requestContext. See code sample below.
HelloWorldSOAPProxy proxy = new HelloWorldSOAPProxy(); // generated proxy class
Map
requestContext.put(com.ibm.wsspi.webservices.Constants.CONNECTION_TIMEOUT_PROPERTY , "1");
requestContext.put(com.ibm.wsspi.webservices.Constants.WRITE_TIMEOUT_PROPERTY , "2");
requestContext.put(com.ibm.wsspi.webservices.Constants.RESPONSE_TIMEOUT_PROPERTY , "40");
proxy.sayHello("Billy");
Note: The property value in the Map must be a String; and in seconds.
My code does not work in my environment. How do I troubleshoot it?
Use the WebSphere AdminConsole to enable this trace specification (on the client side): "com.ibm.ws.websvcs.*=all=enabled:org.apache.axis2.*=all=enabled"
You should see something like this in the trace (if you set the response timeout).
[04/08/2009 19:28:37:937 EDT] 00000000 > ibm.ws.websvcs.transport.http.SOAPOverHTTPSender prepareHttpRequestHeaders(): com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender@33233323 Entry
[04/08/2009 19:28:37:953 EDT] 00000000 3 ibm.ws.websvcs.transport.common.ConfigFromJAX_WS ...ConfigFromJAX_WS.getReadTimeout() : 40
[04/08/2009 19:28:37:953 EDT] 00000000 3 ibm.ws.websvcs.transport.http.SOAPOverHTTPSender syncTimeoutValue 40000 ms for http
Additional tip:
If you are using a standalone Java client (outside of the J2EE container), you can set the WebSphere traceSpec using system properties.
System.setProperty("java.util.logging.manager","com.ibm.ws.bootstrap.WsLogManager");
System.setProperty("traceSettingsFile","MyTraceSettings.properties");
System.setProperty("java.util.logging.configureByServer","true");
and put your traceSpec in a file (e.g. MyTraceSettings.properties) on the working directory.
traceFileName=c:/temp/trace.log
com.ibm.ws.websvcs.*=all=enabled:org.apache.axis2.*=all=enabled
What if I can't or don't want to change the application code?
You can configure the HTTP Transport Policy to adjust these timeouts. See link in InfoCentre for details.
That's all for now.
Hi,
ReplyDeleteI noticed that to set the JAXWS connection timeout, for instance, one could define the HTTP Transport Policy in the Policy Set of the set the timeout.
But, I have a WS-Security Policy in my Policy Set and adding a HTTP Transport Policy seems to upset the application( get some exceptions and app does not work ).
Any other suggestions ?
cheers,
jay
Wow what a nice post.I like it.
ReplyDeleteThanks for more sharing..........
xn6pxi_george-marchelos-2_tech
Siebel SmartScript accelerates abettor capability with a workflow-based, dynamically generated user interface that helps adviser every alternation with a customer. Siebel SmartScript can be invoked automatically several ways, such as based aloft business rules, through awning pops, by Siebel CTI, or programmatically.
ReplyDeletecall center outsourcing
I had a great time reading around your post as I read it extensively. Excellent writing! I am looking forward to hearing more from you.web hosting companies | best hosting companies
ReplyDelete