Web Services

Review the Web services performance best practices: http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/rwbs_perfbestpractices.html?lang=en

Review the custom properties of the HTTP transport chain for web services: http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/rwbs_httptransportprop.html

Set -Dcom.ibm.ws.websvcs.getJAXBContext.cacheClassList.persist=true (http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/cwbs_tuning_jaxbcontext.html)

On WAS >= 8.5.5.2, if applicable, use com.ibm.websphere.webservices.jaxwsOptimizeLevelOne=true (http://www-01.ibm.com/support/docview.wss?uid=swg1PI14203).

If you have web services applications that use transport level security for XML encryption or digital signatures, use the unrestricted JCE policy files: http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_tunev6wss.html

JAX-RPC (not JAX-WS) web services support response compression using com.ibm.websphere.webservices.http.responseContentEncoding (http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/rwbs_httptransportprop.html)

If sending web services requests from an MDB, use com.ibm.ws.websvcs.transport.jms.cacheReplyQCF=true (http://www-01.ibm.com/support/docview.wss?uid=swg1PM93004)

If using JAX-WS on WAS >= 8.5.5.2, consider setting -DcacheTransformerFactory=true (http://www-01.ibm.com/support/docview.wss?uid=swg1PI06819).

If using a JAX-WS client with WAS security enabled and WS-Reliable Messaging is not needed, consider setting com.ibm.websvcs.client.serializeSecurityContext=false (http://www-01.ibm.com/support/docview.wss?uid=swg1PI07385).

WSPerf Tool

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/Troubleshooting_Web_Services_Performance_Problems_In_IBM_WebSphere_Application_Server_With_Web_Services_Performance_WSPerf_Trace?lang=en

Inbound Web Services Processing

Monitor PMI statistics on inbound web services processing: http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_performance.html

Preferring Local Execution

If the web services client is running in the same JVM as the web service target, consider using the optimized local communication path:

To improve performance, there is an optimized communication path between a web services client application and a web container that are located in the same application server process. Requests from the web services client that are normally sent to the web container using a network connection are delivered directly to the web container using an optimized local path. The local path is available because the web services client application and the web container are running in the same process.

The optimized local communication path is disabled by default. You can enable the local communication path with the enableInProcessConnections custom property. Before configuring this custom property, make sure that you are not using wildcards for host names in your web container end points. Set this property to true in the web container to enable the optimized local communication path. When disabled, the web services client and the web container communicate using network transports.

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/rrun_inbound.html

Outbound Connection Cache

For performance reasons, ensure that the com.ibm.websphere.webservices.http.maxConnection custom property is at least half the size of the maximum number of threads in the web container thread pool. The default size for the web container thread pool is 50. As a result, the default size of the com.ibm.websphere.webservices.http.maxConnection property is set to 25 and 50 for JAX-RPC and JAX-WS, respectively. You can adjust the setting for com.ibm.websphere.webservice.http.maxConnection upwards from this initial value, as required, to better utilize the threads.

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/rwbs_httptransportprop.html

The outbound connection cache does not have PMI monitoring but does have a lightweight monitor trace:

  • JAX-RPC
    • com.ibm.ws.webservices.engine.transport.channel.Monitor=all=enabled
  • JAX-WS
    • com.ibm.ws.websvcs.transport.channel.Monitor=all=enabled

Details about this monitoring capability may be found here: http://www-01.ibm.com/support/docview.wss?uid=swg1PK77273

Web Services Response Caching

Enabling the web services client cache is an option to improve the performance of your system by using the dynamic cache service to save responses from remote web services for a specified amount of time... You enable the web services caching by enabling the dynamic cache service and servlet caching. After a response is returned from a remote web service, the response is saved in the client cache on the application server. Any identical requests that are made to the same remote web service are then responded to from the cache for a specified period of time. The web services client cache relies primarily on time-based invalidations because the target web service can be outside of your enterprise network and unaware of your client caching. Therefore, you can specify the amount of time in the cache and the rules to build cache entry IDs in the cache in your client application. (http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/tdyn_wsclientcache.html)

Using Dynacache to cache web service responses: http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/rdyn_webservicescaching.html

Previous Section (Messaging) | Next Section (Asynchronous Beans) | Back to Table of Contents