fixing ODE-302
Project: http://git-wip-us.apache.org/repos/asf/ode/repo Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/558b2c67 Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/558b2c67 Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/558b2c67 Branch: refs/heads/master Commit: 558b2c67ab45dd39e9da982cb9cb3cc32debabbc Parents: 64be6dc Author: Tammo van Lessen <[email protected]> Authored: Tue Aug 27 00:19:32 2013 +0200 Committer: Tammo van Lessen <[email protected]> Committed: Tue Aug 27 00:19:32 2013 +0200 ---------------------------------------------------------------------- Rakefile | 2 +- .../main/java/org/apache/ode/jbi/OdeContext.java | 12 +++++++++++- .../main/java/org/apache/ode/jbi/OdeLifeCycle.java | 16 +++++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode/blob/558b2c67/Rakefile ---------------------------------------------------------------------- diff --git a/Rakefile b/Rakefile index d5744f4..ca91737 100644 --- a/Rakefile +++ b/Rakefile @@ -396,7 +396,7 @@ define "ode" do define "jbi" do compile.with projects("bpel-api", "bpel-connector", "bpel-dao", "bpel-epr", "bpel-obj", "bpel-runtime", "scheduler-simple", "bpel-schemas", "bpel-store", "utils", "agents"), - AXIOM, COMMONS.pool, JAVAX.transaction, JBI, WSDL4J, XERCES, SLF4J, LOG4J + AXIOM, COMMONS.logging, COMMONS.pool, JAVAX.transaction, GERONIMO.transaction, JBI, SLF4J, LOG4J, WSDL4J, XERCES package(:jar) package(:jbi).tap do |jbi| http://git-wip-us.apache.org/repos/asf/ode/blob/558b2c67/jbi/src/main/java/org/apache/ode/jbi/OdeContext.java ---------------------------------------------------------------------- diff --git a/jbi/src/main/java/org/apache/ode/jbi/OdeContext.java b/jbi/src/main/java/org/apache/ode/jbi/OdeContext.java index ef2c67a..3fabd87 100644 --- a/jbi/src/main/java/org/apache/ode/jbi/OdeContext.java +++ b/jbi/src/main/java/org/apache/ode/jbi/OdeContext.java @@ -75,6 +75,8 @@ final public class OdeContext { private static OdeContext __self; private ComponentContext _context; + + private TransactionManager _txm; private Map<QName, Document> _descriptorCache = new ConcurrentHashMap<QName, Document>(); @@ -171,7 +173,15 @@ final public class OdeContext { } public TransactionManager getTransactionManager() { - return (TransactionManager) getContext().getTransactionManager(); + if (_txm != null) { + return (TransactionManager) getContext().getTransactionManager(); + } + + return _txm; + } + + public void setTransactionManager(TransactionManager txm) { + _txm = txm; } public synchronized MyEndpointReference activateEndpoint(QName pid, Endpoint endpoint) throws Exception { http://git-wip-us.apache.org/repos/asf/ode/blob/558b2c67/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java ---------------------------------------------------------------------- diff --git a/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java b/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java index 46fbce9..40fb044 100644 --- a/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java +++ b/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java @@ -33,12 +33,12 @@ import javax.transaction.TransactionManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.transaction.manager.GeronimoTransactionManager; import org.apache.ode.bpel.connector.BpelServerConnector; import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC; import org.apache.ode.bpel.engine.BpelServerImpl; import org.apache.ode.bpel.engine.ProcessAndInstanceManagementMBean; import org.apache.ode.bpel.extvar.jdbc.JdbcExternalVariableModule; - import org.apache.ode.bpel.iapi.BpelEventListener; import org.apache.ode.bpel.intercept.MessageExchangeInterceptor; import org.apache.ode.il.dbutil.Database; @@ -180,6 +180,20 @@ public class OdeLifeCycle implements ComponentLifeCycle { } private void initDataSource() throws JBIException { + switch (_ode._config.getDbMode()) { + case EMBEDDED: + case INTERNAL: + try { + TransactionManager txm = new GeronimoTransactionManager(); + _ode.setTransactionManager(txm); + } catch (Exception e) { + throw new RuntimeException("Unable to create Geronimo Transaction Manager", e); + } + break; + default: + break; + } + _db = Database.create(_ode._config); _db.setTransactionManager(_ode.getTransactionManager()); _db.setWorkRoot(new File(_ode.getContext().getInstallRoot()));
