Fix for Opening Excessive Number of Connections when using Send of Siebel EAI JMS Transport Business Service
1. 5. 2019
Oracle Siebel in Versions IP 18 and IP 19 till Patch 3 has a critical issue with not releasing JMS connections on Tomcat. For more details see the Document (Doc ID 2528784.1 EAI JMS Transport' Opening Excessive Number of Connections and java.lang.OutOfMemoryError: Java heap space) on Oracle Support Web. Problem is significant when Business Service EAI JMS Transport, Method Send is called from a new Siebel Process, e.g. from Worflow Process Manger invoked from Batch Job or Workflow Monitor Agent. In this Scenario, Siebel creates a new Process, process calls the workflow and the given method. Method invokes HTTP request response on local Tomcat, Tomcat identifies new process, instantiates Java class JMSBusinessService and calls method Send, see in next picture, the fragment of the code.
You can see, the method created a new connection. After workflow finishes, process on Siebel site is finished as well and the connection between Tomcat and JMS remains open. It remains open until garbage collector disposes it, this can last very long. Imagine you are publishing orders to order execution using workflow policy agent, soo you will get Java Out of memory problem. You can check the number of open connection on Tomcat using following command:
…jdk/jdk1.8.0_172/bin/jstack [pid of tomcat] | grep "Old I/O"|wc -l
Problem is not so critical if JMS send invocations are done within UI Application Object managers, the same process uses the same connection on Tomcat side.
Oracle solves this issue in IP19.3. If customer needs to solve the issue earlier, here is the proposed solution. After analysis of JMSBusinessService.java one can see that there exists explicit method for closing the connection.
The propsed solution is, to extend the workflow where method Send is invoked with invokation of method CloseConnection. See the following picture for more details.
Just one more hint, do not call this method from JMS Receiver workflow after sending the response, in that case the connection is manager be the receiver.
Späť na Blog