Author: mriou
Date: Mon Oct  9 17:35:49 2006
New Revision: 454573

URL: http://svn.apache.org/viewvc?view=rev&rev=454573
Log:
Using a separate, configurable class to get the transaction manager (with 
default being Jotm).

Added:
    
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/JotmFactory.java
Modified:
    
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEConfigProperties.java
    incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java

Modified: 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEConfigProperties.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEConfigProperties.java?view=diff&rev=454573&r1=454572&r2=454573
==============================================================================
--- 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEConfigProperties.java
 (original)
+++ 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEConfigProperties.java
 Mon Oct  9 17:35:49 2006
@@ -35,11 +35,10 @@
     private static final Log __log = 
LogFactory.getLog(ODEConfigProperties.class);
     private static final Messages __msgs = 
Messages.getMessages(Messages.class);
     private static final String CONFIG_FILE_NAME = "ode-axis2.properties";
-    private static final String PROP_NAMESPACE = "ode-axis2.pidNamespace";
-    private static final String PROP_ALLOW_INCOMPLETE_DEPLOYMENT = 
"ode-axis2.allowIncompleteDeployment";
     private static final String PROP_DB_MODE = "ode-axis2.db.mode";
     private static final String PROP_DB_EXTERNAL_DS = 
"ode-axis2.db.ext.dataSource";
     private static final String PROP_DB_EMBEDDED_NAME = 
"ode-axis2.db.emb.name";
+    private static final String PROP_TX_FACTORY_CLASS = 
"ode-axis2.tx.factory.class";
     private static final String PROP_POOL_MAX = "ode-axis2.db.pool.max";
     private static final String PROP_POOL_MIN = "ode-axis2.db.pool.min";
     private static final String PROP_CONNECTOR_PORT = "ode-axis2.jca.port";
@@ -128,6 +127,10 @@
 
     public String getWorkingDir() {
         return getProperty(ODEConfigProperties.PROP_WORKING_DIR);
+    }
+
+    public String getTxFactoryClass() {
+        return getProperty(ODEConfigProperties.PROP_TX_FACTORY_CLASS, 
"org.apache.ode.axis2.util.JotmFactory");
     }
 
 }

Modified: 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java?view=diff&rev=454573&r1=454572&r2=454573
==============================================================================
--- incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java 
(original)
+++ incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java 
Mon Oct  9 17:35:49 2006
@@ -259,36 +259,14 @@
     }
 
     private void initTxMgr() throws ServletException {
-        InitialContext ctx;
+        String txFactoryName = _odeConfig.getTxFactoryClass();
+        __log.debug("Initializing transaction manager using " + txFactoryName);
         try {
-            ctx = new InitialContext();
-        } catch (NamingException e) {
-            throw new ServletException("Couldn't find any JNDI to lookup.", e);
-        }
-        try {
-            // First try
-            _txMgr = (TransactionManager) 
ctx.lookup("javax.transaction.TransactionManager");
-        } catch (NamingException e) {
-            try {
-                // Second try
-                _txMgr = (TransactionManager) 
ctx.lookup("javax.transaction.TransactionManager");
-            } catch (NamingException ex) {
-                __log.info("Couldn't find a transaction manager, using the 
default (JOTM).");
-                // Giving up: couldn't find a proper transaction manager, 
fallback to Jotm.
-                try {
-                    Jotm jotm = new Jotm(true, false);
-                    jotm.getTransactionManager().setTransactionTimeout(30);
-                    _txMgr = jotm.getTransactionManager();
-                } catch (Exception e1) {
-                    throw new ServletException("Couldn't initialize a proper 
transaction manager!", e);
-                }
-            }
-        } finally {
-            try {
-                ctx.close();
-            } catch (NamingException e) {
-                __log.error(e);
-            }
+            Class txFactClass = Class.forName(txFactoryName);
+            Object txFact = txFactClass.newInstance();
+            _txMgr = (TransactionManager) 
txFactClass.getMethod("getTransactionManager", null).invoke(txFact);
+        } catch (Exception e) {
+            throw new ServletException("Couldn't initialize a transaction 
manager!", e);
         }
     }
 

Added: 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/JotmFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/JotmFactory.java?view=auto&rev=454573
==============================================================================
--- 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/JotmFactory.java
 (added)
+++ 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/JotmFactory.java
 Mon Oct  9 17:35:49 2006
@@ -0,0 +1,22 @@
+package org.apache.ode.axis2.util;
+
+import org.objectweb.jotm.Jotm;
+
+import javax.transaction.TransactionManager;
+import javax.servlet.ServletException;
+
+/**
+ * @author mriou
+ */
+public class JotmFactory {
+
+    public TransactionManager getTransactionManager() {
+        try {
+            Jotm jotm = new Jotm(true, false);
+            jotm.getTransactionManager().setTransactionTimeout(30);
+            return jotm.getTransactionManager();
+        } catch (Exception e) {
+            throw new RuntimeException("Couldn't initialize a proper 
transaction manager!", e);
+        }
+    }
+}


Reply via email to