Change from JOTM JARs to Bitronix JARs
Following procedure is applicable for Tomcat server only.
As Java Open Transaction Manager (JOTM) has issues with connections being lost or over used, we suggest to replace the existing Transaction Manager with more reliable Bitronix for Tomcat server.
Perform the following steps to add Bitronix JARs in your application, if it throws java.sql.SQLRecoverableException: IO Error:
Remove the following JOTM transaction JARs in the tomcat/lib folder:
carol-iiop-delegate.jar
carol-interceptors.jar
carol.jar
howl.jar
jotm-core.jar
jotm-datasource.jar
ow2-connector-1.5-spec.jar
ow2-jta-1.1-spec.jar
xapool-1.6.jar
xapool.jar
Remove the above JARs if those are present inside the WARs of Studio, Sigma, Modelhouse and other applications built using CT.
Download the following Bitronix related JARs:
https://drive.google.com/file/d/15irsemIxRJCu_cx4rt44fpJ_qWExdzsU/view?usp=sharing
Add the downloaded Bitronix JARs to the tomcat/lib folder:
BTFactory.jar
btm-2.1.4.jar
jta-1.1.jar
slf4j-api-1.7.30.jar
log4j-api-2.18.0.jar
log4j-core-2.18.0.jar
log4j-slf4j-impl-2.18.0.jar
Verify the following JARs (any version of log4j JARs) are not present in the WARs of Studio, Sigma or any other applications build using CT:
log4j-1.2-api-2.16.0.jar
log4j-api-2.16.0.jar
log4j-core-2.16.0.jar
log4j-api-2.17.1.jar
log4j-core-2.17.1.jar
Perform the following steps in Server.xml:
In the Resource tag, change following:
factory="org.objectweb.jotm.datasource.DataSourceFactory" ///as factory="com.intellectdesign.canvas.database.factory.BTDataSourceFactory"
Add the following values:
maxIdleTime="60" aquisitionTimeout="150" min=”10” max=”100”
The above values are samples only. It can be configured as per implementation requirements. Refer https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html for additional configuration properties.
Perform the following steps in Context.xml:
Remove the existing Transaction tag. For Example:
<Transaction factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="600" /> <Resource name="TransactionSynchronizationRegistry" auth="Container" type="javax.transaction.TransactionSynchronizationRegistry" factory="org.objectweb.jotm.TransactionSynchronizationRegistryFactory"/>
Add the following Transaction factory tag for Bitronix: