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:

  1. 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

  2. Remove the above JARs if those are present inside the WARs of Studio, Sigma, Modelhouse and other applications built using CT.

  3. Download the following Bitronix related JARs:

    https://drive.google.com/file/d/15irsemIxRJCu_cx4rt44fpJ_qWExdzsU/view?usp=sharing

  4. 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

  5. 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

  6. Perform the following steps in Server.xml:

    1. In the Resource tag, change following:

      factory="org.objectweb.jotm.datasource.DataSourceFactory" ///as factory="com.intellectdesign.canvas.database.factory.BTDataSourceFactory"
    2. Add the following values:

      maxIdleTime="60" aquisitionTimeout="150" min=”10” max=”100”
  7. Perform the following steps in Context.xml:

    1. 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"/>
    2. Add the following Transaction factory tag for Bitronix: