Modified: February 2, 2015
Recently, I encountered a situation where testing in a new IBM Business Process Manager Version 7.5.1 Fix Pack 1 environment uncovered an out-of-memory issue with the SOAPConnectorCacheData class. The SOAPConnectorCacheData class is basically used to improve the performance of the main web service connector by caching many fields (wsdlURL, serviceName, portName, operationName, parser, definition, wsdlMetaDataContext).
Heap dumps from testing consistently showed the following structure with a huge linked list of Teamworks SOAPConnectorCacheData:
2,068,985,792 (55%)  10 class teamworks/connector/SOAPConnector 0xffe24e0
2,068,968,112 (55%)  2 java/util/Collections$SynchronizedMap 0x1001f978
2,068,968,088 (55%)  3 com/lombardisoftware/utility/collections/LRUCache 0x1001f8a0
1,972,304,792 (53%)  3 java/util/LinkedHashMap$LinkedHashMapEntry 0xbd22eee8
129,630,976 (3%)  4 java/util/LinkedHashMap$LinkedHashMapEntry 0xa4c396c8
129,630,744 (3%)  11 teamworks/connector/SOAPConnectorCacheData 0xa4c393e8
66,028,448 (1%)  3 com/lombardisoftware/server/eai/soap/wsdl/TWWSDLMetaDataContext 0xadec2248
Upon further investigation, it was found that the following fix had been applied to IBM Business Process Manager V7.5.0 Fix Pack 1 with a value of 50 specified for the cache: JR42697: Caching of WSDL Objects Consumes Large Amount of Memory
JR42697 introduces a new cache for WSDL objects: <wsdl-cache-size>...</wsdl-cache-size>
This fix is included in V7.5.1 Fix Pack 1.
If a value is not explicitly defined, the default value is 25. In this case, the value had been set to 50. Upon reducing the value, the memory consumption decreased. In Version 7.5.1 Fix Pack 1, this value can be found in the teamworksrunningconfig.xml file.
How to make the change if the fix has been applied or you are using an IBM Business Process Manager version that includes the fix:
Copy the following XML and add it to the 100Custom.xml file under the <properties> tag. Replace the My_New_Environment value with a value that is appropriate for your environment.
Note: Open the XML file in a browser, after saving it, to ensure that special characters do not exist in it.
Location of the 100Custom.xml file:
Note: In the previous file paths, change the variables in italics, such as cell_name, node_name, and server_name, to the values that are specific to your environment.
After making the changes to the 100Custom.xml file in the deployment manager profile, make sure that the changes are applied to the nodes by doing a force synchronize and restarting the deployment manager.
Further information regarding the .xml configuration files in IBM Business Process Manager:
In summary, if you are having issues with WSDL-related caching for IBM Business Process Manager V7.5.1 Fix Pack 1, check the value of the <wsdl-cache-size> parameter. If you are migrating from a previous version where this fix was applied, the value might have been previously defined. On prior versions, apply APAR JR42697 to take advantage of the cache.
Nathan Bost is a member of the IBM Business Process Manager Level 2 Support Team and is based in Raleigh, North Carolina USA.
If you have any comments about this information, you can submit them below this blog. We welcome comments!