blog image

Fix for Opening Excessive Number of Connections when using Send of Siebel EAI JMS Transport Business Service

 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.

jms_send  

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. 

jms_closeconnection 

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.

jms_workflow_step 

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. 

Skôr ako začneme: nahliadnite do spracovania vašich osobných údajov

Ak navštívite stránku, ktorá zapisuje cookies, v počítači sa vám vytvorí malý textový súbor, ktorý sa uloží vo vašom prehliadači. Ak rovnakú stránku navštívite nabudúce, pripojíte sa vďaka nemu na web rýchlejšie. Náš web vám ponúkne relevantné informácie a bude sa vám pracovať jednoduchšie.

Súbory cookies používame najmä na anonymnú analýzu návštevnosti a vylepšovanie našich web stránok. Ak si nastavíte blokovanie zápisu cookies do vášho prehliadača, je možné, že web sa spomalí a niektoré jeho časti nemusia fungovať úplne korektne. Viac info k spracúvaniu cookies.