You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by se...@apache.org on 2009/03/26 22:54:09 UTC
svn commit: r758880 - in /ode/branches/APACHE_ODE_1.X: ./
axis2-war/src/test/java/org/apache/ode/axis2/management/
bpel-epr/src/main/java/org/apache/ode/il/config/
bpel-store/src/main/java/org/apache/ode/store/
bpel-store/src/main/java/org/apache/ode/s...
Author: seanahn
Date: Thu Mar 26 21:54:08 2009
New Revision: 758880
URL: http://svn.apache.org/viewvc?rev=758880&view=rev
Log:
ode-564, Make the process store JTA compatible
Added:
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreTransactionProvider.java
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/JpaTxMgrProvider.java
Modified:
ode/branches/APACHE_ODE_1.X/Rakefile
ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/management/DeploymentTest.java
ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnection.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnectionFactory.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/ConfStoreConnectionJpa.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
Modified: ode/branches/APACHE_ODE_1.X/Rakefile
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/Rakefile?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/Rakefile (original)
+++ ode/branches/APACHE_ODE_1.X/Rakefile Thu Mar 26 21:54:08 2009
@@ -315,8 +315,8 @@
desc "ODE Process Store"
define "bpel-store" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-obj", "bpel-schemas", "bpel-epr",
- "dao-hibernate", "utils"),
- COMMONS.logging, JAVAX.persistence, JAVAX.stream, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J
+ "dao-hibernate", "dao-jpa", "utils"),
+ COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA
compile { open_jpa_enhance }
resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo")
Modified: ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/management/DeploymentTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/management/DeploymentTest.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/management/DeploymentTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/management/DeploymentTest.java Thu Mar 26 21:54:08 2009
@@ -210,7 +210,7 @@
}
private void undeploy(String pakage) throws Exception {
- // Prepare undeploy message
+ // Prepare undeploy message
OMNamespace depns = _factory.createOMNamespace(Namespaces.ODE_PMAPI, "deployapi");
OMElement root = _factory.createOMElement("undeploy", depns);
OMElement part = _factory.createOMElement("packageName", null);
Modified: ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java Thu Mar 26 21:54:08 2009
@@ -35,7 +35,6 @@
* @author mszefler
*/
public class OdeConfigProperties {
-
private static final long serialVersionUID = 1L;
private static final Log __log = LogFactory.getLog(OdeConfigProperties.class);
@@ -87,6 +86,8 @@
public static final String PROP_PROCESS_HYDRATION = "process.hydration";
public static final String PROP_DAOCF = "dao.factory";
+
+ public static final String DEFAULT_TX_FACTORY_CLASS_NAME = "org.apache.ode.il.EmbeddedGeronimoFactory";
private File _cfgFile;
@@ -229,7 +230,7 @@
}
public String getTxFactoryClass() {
- return getProperty(OdeConfigProperties.PROP_TX_FACTORY_CLASS, "org.apache.ode.il.EmbeddedGeronimoFactory");
+ return getProperty(OdeConfigProperties.PROP_TX_FACTORY_CLASS, DEFAULT_TX_FACTORY_CLASS_NAME);
}
public String getEventListeners() {
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnection.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnection.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnection.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnection.java Thu Mar 26 21:54:08 2009
@@ -24,10 +24,6 @@
/**
*/
public interface ConfStoreConnection {
- void begin();
- void commit();
- void rollback();
-
DeploymentUnitDAO createDeploymentUnit(String name);
DeploymentUnitDAO getDeploymentUnit(String name);
@@ -39,5 +35,4 @@
long getNextVersion();
void setVersion(long version);
-
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnectionFactory.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnectionFactory.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnectionFactory.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ConfStoreConnectionFactory.java Thu Mar 26 21:54:08 2009
@@ -22,8 +22,6 @@
* Connection factory for DB store.
* @author mszefler
*/
-public interface ConfStoreConnectionFactory {
-
-
+public interface ConfStoreConnectionFactory extends ProcessStoreTransactionProvider {
ConfStoreConnection getConnection();
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java Thu Mar 26 21:54:08 2009
@@ -114,23 +114,24 @@
public ProcessStoreImpl(EndpointReferenceContext eprContext, DataSource ds, String persistenceType, OdeConfigProperties props, boolean createDatamodel) {
this.eprContext = eprContext;
if (ds != null) {
- // ugly hack
- if (persistenceType.toLowerCase().indexOf("hib") != -1)
- _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(ds, props.getProperties(), createDatamodel);
- else
- _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(ds, createDatamodel);
- } else {
- // If the datasource is not provided, then we create a HSQL-based in-memory
- // database. Makes testing a bit simpler.
- DataSource hsqlds = createInternalDS(new GUID().toString());
- if ("hibernate".equalsIgnoreCase(persistenceType))
- _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(hsqlds, props.getProperties(), createDatamodel);
- else
- _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(hsqlds, createDatamodel);
- _inMemDs = hsqlds;
- }
-
- }
+ // ugly hack
+ if (persistenceType.toLowerCase().indexOf("hib") != -1) {
+ _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(ds, props.getProperties(), createDatamodel, props.getTxFactoryClass());
+ } else {
+ _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(ds, createDatamodel, props.getTxFactoryClass());
+ }
+ } else {
+ // If the datasource is not provided, then we create a HSQL-based
+ // in-memory database. Makes testing a bit simpler.
+ DataSource hsqlds = createInternalDS(new GUID().toString());
+ if ("hibernate".equalsIgnoreCase(persistenceType)) {
+ _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(hsqlds, props.getProperties(), createDatamodel, props.getTxFactoryClass());
+ } else {
+ _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(hsqlds, createDatamodel, props.getTxFactoryClass());
+ }
+ _inMemDs = hsqlds;
+ }
+ }
/**
* Constructor that hardwires OpenJPA on a new in-memory database. Suitable for tests.
@@ -139,7 +140,7 @@
this.eprContext = eprContext;
DataSource hsqlds = createInternalDS(new GUID().toString());
//when in memory we always create the model as we are starting from scratch
- _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(hsqlds, true);
+ _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(hsqlds, true, OdeConfigProperties.DEFAULT_TX_FACTORY_CLASS_NAME);
_inMemDs = hsqlds;
}
@@ -704,27 +705,23 @@
abstract class Callable<V> implements java.util.concurrent.Callable<V> {
public V call() {
boolean success = false;
+ // in JTA, transaction is bigger than the session
+ _cf.beginTransaction();
ConfStoreConnection conn = getConnection();
try {
- conn.begin();
V r = call(conn);
- conn.commit();
+ _cf.commitTransaction();
success = true;
return r;
} finally {
if (!success)
try {
- conn.rollback();
+ _cf.rollbackTransaction();
} catch (Exception ex) {
__log.error("DbError", ex);
}
- try {
- conn.close();
- } catch (Exception ex) {
- __log.error("DbError", ex);
- }
}
-
+ // session is closed automatically when committed or rolled back under JTA
}
abstract V call(ConfStoreConnection conn);
Added: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreTransactionProvider.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreTransactionProvider.java?rev=758880&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreTransactionProvider.java (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreTransactionProvider.java Thu Mar 26 21:54:08 2009
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ode.store;
+
+public interface ProcessStoreTransactionProvider {
+ void beginTransaction();
+ void commitTransaction();
+ void rollbackTransaction();
+}
\ No newline at end of file
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java Thu Mar 26 21:54:08 2009
@@ -26,7 +26,6 @@
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
-import org.hibernate.Transaction;
import javax.xml.namespace.QName;
import java.util.Collection;
@@ -41,7 +40,6 @@
private static final Log __log = LogFactory.getLog(ConfStoreConnectionHib.class);
private Session _session;
- private Transaction _tx;
static final ThreadLocal<Session> _current = new ThreadLocal<Session>();
@@ -105,17 +103,4 @@
public void close() {
_session.close();
}
-
- public void begin() {
- _tx=_session.beginTransaction();
- }
-
- public void commit() {
- _tx.commit();
- }
-
- public void rollback() {
- _tx.rollback();
- }
-
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java Thu Mar 26 21:54:08 2009
@@ -21,6 +21,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.iapi.BpelEngineException;
+import org.apache.ode.daohib.HibernateTransactionManagerLookup;
+import org.apache.ode.daohib.SessionManager;
import org.apache.ode.store.ConfStoreConnectionFactory;
import org.apache.ode.store.Messages;
import org.apache.ode.utils.GUID;
@@ -35,6 +37,8 @@
import org.hibernate.dialect.DialectFactory;
import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
@@ -74,11 +78,13 @@
HIBERNATE_DIALECTS.put("Apache Derby", new DialectFactory.VersionInsensitiveMapper(DEFAULT_HIBERNATE_DIALECT));
}
+ private TransactionManager _txMgr;
+
private final DataSource _ds;
final SessionFactory _sessionFactory;
- public DbConfStoreConnectionFactory(DataSource ds, Properties initialProps, boolean createDatamodel) {
+ public DbConfStoreConnectionFactory(DataSource ds, Properties initialProps, boolean createDatamodel, String txFactoryClassName) {
_ds = ds;
// Don't want to pollute original properties
@@ -89,8 +95,6 @@
__log.debug("using data source: " + ds);
_dataSources.put(_guid, ds);
- properties.put("guid", _guid);
- properties.put(Environment.CONNECTION_PROVIDER, DataSourceConnectionProvider.class.getName());
if (properties.get(Environment.DIALECT) == null) {
try {
@@ -106,14 +110,46 @@
properties.put(Environment.HBM2DDL_AUTO, "create-drop");
}
- _sessionFactory = getDefaultConfiguration().setProperties(properties).buildSessionFactory();
+
+ // Note that we don't allow the following properties to be overriden by the client.
+ if (properties.containsKey(Environment.CONNECTION_PROVIDER))
+ __log.warn("Ignoring user-specified Hibernate property: " + Environment.CONNECTION_PROVIDER);
+ if (properties.containsKey(Environment.TRANSACTION_MANAGER_STRATEGY))
+ __log.warn("Ignoring user-specified Hibernate property: " + Environment.TRANSACTION_MANAGER_STRATEGY);
+ if (properties.containsKey(Environment.SESSION_FACTORY_NAME))
+ __log.warn("Ignoring user-specified Hibernate property: " + Environment.SESSION_FACTORY_NAME);
+
+ properties.put(SessionManager.PROP_GUID, _guid);
+ properties.put(Environment.CONNECTION_PROVIDER, DataSourceConnectionProvider.class.getName());
+ properties.put(Environment.TRANSACTION_MANAGER_STRATEGY, HibernateTransactionManagerLookup.class.getName());
+ properties.put(Environment.TRANSACTION_STRATEGY, "org.hibernate.transaction.JTATransactionFactory");
+ properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "jta");
+ if(__log.isDebugEnabled()) __log.debug("Store connection properties: " + properties );
+
+ initTxMgr(txFactoryClassName);
+ SessionManager.registerTransactionManager(_guid, _txMgr);
+
+ _sessionFactory = getDefaultConfiguration().setProperties(properties).buildSessionFactory();
}
public ConfStoreConnectionHib getConnection() {
- return new ConfStoreConnectionHib(_sessionFactory.openSession());
+ return new ConfStoreConnectionHib(_sessionFactory.getCurrentSession());
}
+ @SuppressWarnings("unchecked")
+ private void initTxMgr(String txFactoryClassName) {
+ __log.info("ProcessStore initializing transaction manager using " + txFactoryClassName);
+ try {
+ Class txFactClass = getClass().getClassLoader().loadClass(txFactoryClassName);
+ Object txFact = txFactClass.newInstance();
+ _txMgr = (TransactionManager) txFactClass.getMethod("getTransactionManager", (Class[]) null).invoke(txFact);
+ } catch (Exception e) {
+ __log.fatal("Couldn't initialize a transaction manager with factory: " + txFactoryClassName, e);
+ throw new RuntimeException("Couldn't initialize a transaction manager with factory: " + txFactoryClassName, e);
+ }
+ }
+
private String guessDialect(DataSource dataSource) throws Exception {
String dialect = null;
@@ -149,6 +185,30 @@
}
+ public void beginTransaction() {
+ try {
+ _txMgr.begin();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void commitTransaction() {
+ try {
+ _txMgr.commit();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void rollbackTransaction() {
+ try {
+ _txMgr.rollback();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
static Configuration getDefaultConfiguration() throws MappingException {
return new Configuration().addClass(ProcessConfDaoImpl.class).addClass(DeploymentUnitDaoImpl.class)
.addClass(VersionTrackerDAOImpl.class);
@@ -161,7 +221,7 @@
}
public void configure(Properties props) throws HibernateException {
- _guid = props.getProperty("guid");
+ _guid = props.getProperty(SessionManager.PROP_GUID);
}
public Connection getConnection() throws SQLException {
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/ConfStoreConnectionJpa.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/ConfStoreConnectionJpa.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/ConfStoreConnectionJpa.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/ConfStoreConnectionJpa.java Thu Mar 26 21:54:08 2009
@@ -19,6 +19,8 @@
package org.apache.ode.store.jpa;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.ode.store.ConfStoreConnection;
import org.apache.ode.store.DeploymentUnitDAO;
@@ -31,7 +33,8 @@
* @author Matthieu Riou <mriou at apache dot org>
*/
public class ConfStoreConnectionJpa implements ConfStoreConnection {
-
+ private static Log LOG = LogFactory.getLog(ConfStoreConnectionJpa.class);
+
private EntityManager _em;
static final ThreadLocal<EntityManager> _current = new ThreadLocal<EntityManager>();
@@ -41,17 +44,9 @@
_current.set(em);
}
- public void begin() {
- _em.getTransaction().begin();
- }
-
public void close() {
}
- public void commit() {
- _em.getTransaction().commit();
- }
-
public DeploymentUnitDAO createDeploymentUnit(String name) {
DeploymentUnitDaoImpl du = new DeploymentUnitDaoImpl();
du.setName(name);
@@ -68,10 +63,6 @@
return _em.createQuery("SELECT du from org.apache.ode.store.jpa.DeploymentUnitDaoImpl du").getResultList();
}
- public void rollback() {
- _em.getTransaction().rollback();
- }
-
public long getNextVersion() {
List<VersionTrackerDAOImpl> res = _em.createQuery("select v from VersionTrackerDAOImpl v").getResultList();
if (res.size() == 0) return 1;
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java Thu Mar 26 21:54:08 2009
@@ -19,33 +19,93 @@
package org.apache.ode.store.jpa;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ode.dao.jpa.JpaTxMgrProvider;
import org.apache.ode.store.ConfStoreConnection;
import org.apache.ode.store.ConfStoreConnectionFactory;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+
import java.util.HashMap;
/**
* @author Matthieu Riou <mriou at apache dot org>
*/
public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory {
-
+ private static final Log __log = LogFactory.getLog(DbConfStoreConnectionFactory.class);
+
private DataSource _ds;
private EntityManagerFactory _emf;
- public DbConfStoreConnectionFactory(DataSource ds, boolean createDatamodel) {
+ private TransactionManager _txMgr;
+
+ @SuppressWarnings("unchecked")
+ public DbConfStoreConnectionFactory(DataSource ds, boolean createDatamodel, String txFactoryClassName) {
_ds = ds;
- HashMap propMap = new HashMap();
- propMap.put("javax.persistence.nonJtaDataSource", ds);
+ initTxMgr(txFactoryClassName);
+
+ HashMap<String, Object> propMap = new HashMap<String,Object>();
propMap.put("openjpa.Log", "log4j");
-// propMap.put("openjpa.jdbc.DBDictionary", "org.apache.openjpa.jdbc.sql.DerbyDictionary");
+ propMap.put("openjpa.ManagedRuntime", new JpaTxMgrProvider(_txMgr));
+ propMap.put("openjpa.ConnectionFactory", _ds);
+ propMap.put("openjpa.ConnectionFactoryMode", "managed");
+ propMap.put("openjpa.FlushBeforeQueries", "false");
+ propMap.put("openjpa.FetchBatchSize", 1000);
+ propMap.put("openjpa.jdbc.TransactionIsolation", "read-committed");
+
if (createDatamodel) propMap.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
+
_emf = Persistence.createEntityManagerFactory("ode-store", propMap);
}
- public ConfStoreConnection getConnection() {
- return new ConfStoreConnectionJpa(_emf.createEntityManager());
+ @SuppressWarnings("unchecked")
+ public ConfStoreConnection getConnection() {
+ HashMap propMap2 = new HashMap();
+ propMap2.put("openjpa.TransactionMode", "managed");
+ return new ConfStoreConnectionJpa(_emf.createEntityManager(propMap2));
}
-}
+
+ public void beginTransaction() {
+ try {
+ if(__log.isDebugEnabled()) __log.debug("begin transaction on " + _txMgr);
+ _txMgr.begin();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void commitTransaction() {
+ try {
+ if(__log.isDebugEnabled()) __log.debug("commit transaction on " + _txMgr);
+ _txMgr.commit();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void rollbackTransaction() {
+ try {
+ if(__log.isDebugEnabled()) __log.debug("rollback transaction on " + _txMgr);
+ _txMgr.rollback();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void initTxMgr(String txFactoryClassName) {
+ __log.info("ProcessStore initializing transaction manager using " + txFactoryClassName);
+ try {
+ Class txFactClass = getClass().getClassLoader().loadClass(txFactoryClassName);
+ Object txFact = txFactClass.newInstance();
+ _txMgr = (TransactionManager) txFactClass.getMethod("getTransactionManager", (Class[]) null).invoke(txFact);
+ } catch (Exception e) {
+ __log.fatal("Couldn't initialize a transaction manager with factory: " + txFactoryClassName, e);
+ throw new RuntimeException("Couldn't initialize a transaction manager with factory: " + txFactoryClassName, e);
+ }
+ }
+}
\ No newline at end of file
Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java Thu Mar 26 21:54:08 2009
@@ -19,6 +19,8 @@
package org.apache.ode.store.hib;
import junit.framework.TestCase;
+
+import org.apache.ode.il.config.OdeConfigProperties;
import org.apache.ode.store.ConfStoreConnection;
import org.apache.ode.store.ConfStoreConnectionFactory;
import org.apache.ode.store.DeploymentUnitDAO;
@@ -38,7 +40,7 @@
hsqlds.setUser("sa");
hsqlds.setPassword("");
- cf = new DbConfStoreConnectionFactory(hsqlds, new Properties(), true);
+ cf = new DbConfStoreConnectionFactory(hsqlds, new Properties(), true, OdeConfigProperties.DEFAULT_TX_FACTORY_CLASS_NAME);
}
public void tearDown() throws Exception {
@@ -47,76 +49,76 @@
public void testEmpty() {
ConfStoreConnection conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
assertEquals(0, conn.getDeploymentUnits().size());
assertNull(conn.getDeploymentUnit("foobar"));
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
public void testCreateDU() {
ConfStoreConnection conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.createDeploymentUnit("foo");
assertNotNull(du);
assertEquals("foo", du.getName());
assertNotNull(du.getDeployDate());
} finally {
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.getDeploymentUnit("foo");
assertNotNull(du);
assertEquals("foo", du.getName());
} finally {
- conn.commit();
+ cf.commitTransaction();
}
}
public void testRollback() {
ConfStoreConnection conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.createDeploymentUnit("foo");
assertNotNull(du);
assertEquals("foo", du.getName());
assertNotNull(du.getDeployDate());
} finally {
- conn.rollback();
+ cf.rollbackTransaction();
conn.close();
}
conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.getDeploymentUnit("foo");
assertNull(du);
} finally {
- conn.commit();
+ cf.commitTransaction();
}
}
public void testGetDeploymentUnits() {
ConfStoreConnection conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
conn.createDeploymentUnit("foo1");
conn.createDeploymentUnit("foo2");
conn.createDeploymentUnit("foo3");
conn.createDeploymentUnit("foo4");
} finally {
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
assertNotNull(conn.getDeploymentUnit("foo1"));
assertNotNull(conn.getDeploymentUnit("foo2"));
@@ -124,7 +126,7 @@
assertNotNull(conn.getDeploymentUnit("foo4"));
assertNull(conn.getDeploymentUnit("foo5"));
} finally {
- conn.commit();
+ cf.commitTransaction();
}
}
@@ -132,7 +134,7 @@
public void testCreateProcess() {
QName foobar = new QName("foo","bar");
ConfStoreConnection conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.createDeploymentUnit("foo1");
ProcessConfDAO p = du.createProcess(foobar,foobar,1);
@@ -141,12 +143,12 @@
assertNotNull(p.getDeploymentUnit());
assertEquals("foo1", p.getDeploymentUnit().getName());
} finally {
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.getDeploymentUnit("foo1");
ProcessConfDAO p = du.getProcess(foobar);
@@ -157,7 +159,7 @@
assertEquals(foobar,p.getType());
} finally {
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
@@ -166,18 +168,18 @@
public void testProcessProperties() {
QName foobar = new QName("foo","bar");
ConfStoreConnection conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.createDeploymentUnit("foo1");
ProcessConfDAO p = du.createProcess(foobar,foobar,1);
p.setProperty(foobar,"baz");
} finally {
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
conn = cf.getConnection();
- conn.begin();
+ cf.beginTransaction();
try {
DeploymentUnitDAO du = conn.getDeploymentUnit("foo1");
ProcessConfDAO p = du.getProcess(foobar);
@@ -186,7 +188,7 @@
assertNotNull(p.getPropertyNames());
assertTrue(p.getPropertyNames().contains(foobar));
} finally {
- conn.commit();
+ cf.commitTransaction();
conn.close();
}
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java Thu Mar 26 21:54:08 2009
@@ -41,7 +41,7 @@
public Connection getConnection() throws SQLException {
Connection c = SessionManager.getConnection(_props);
- if (_isolationLevel != 0) {
+ if (_isolationLevel != 0 && c.getTransactionIsolation() != _isolationLevel) {
c.setTransactionIsolation(_isolationLevel);
}
return c;
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java Thu Mar 26 21:54:08 2009
@@ -18,6 +18,8 @@
*/
package org.apache.ode.daohib;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.ode.daohib.bpel.hobj.*;
import org.apache.ode.utils.uuid.UUID;
import org.hibernate.HibernateException;
@@ -41,7 +43,9 @@
* managing sessions.
*/
public class SessionManager {
- private static final String PROP_GUID = "ode.hibernate.guid";
+ private static final Log __log = LogFactory.getLog(SessionManager.class);
+
+ public static final String PROP_GUID = "ode.hibernate.guid";
private static final Map<String, TransactionManager> _txManagers =
Collections.synchronizedMap(new HashMap<String, TransactionManager>());
@@ -71,6 +75,10 @@
return _txManager;
}
+ public static void registerTransactionManager(String uuid, TransactionManager txm) {
+ _txManagers.put(uuid, txm);
+ }
+
/**
* Get the current Hibernate Session.
*/
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionImpl.java Thu Mar 26 21:54:08 2009
@@ -51,7 +51,6 @@
import org.apache.ode.daohib.bpel.hobj.HCorrelationSet;
import org.apache.ode.daohib.bpel.hobj.HLargeData;
import org.apache.ode.daohib.bpel.hobj.HMessageExchange;
-import org.apache.ode.daohib.bpel.hobj.HObject;
import org.apache.ode.daohib.bpel.hobj.HProcess;
import org.apache.ode.daohib.bpel.hobj.HProcessInstance;
import org.apache.ode.daohib.bpel.hobj.HScope;
@@ -74,27 +73,27 @@
* Hibernate-based {@link BpelDAOConnection} implementation.
*/
public class BpelDAOConnectionImpl implements BpelDAOConnection {
-
private static final Log __log = LogFactory.getLog(BpelDAOConnectionImpl.class);
- private Session _session;
-
protected SessionManager _sm;
public BpelDAOConnectionImpl(SessionManager sm) {
_sm = sm;
- _session = _sm.getSession();
+ }
+
+ protected Session getSession(){
+ return _sm.getSession();
}
public MessageExchangeDAO createMessageExchange(char dir) {
HMessageExchange mex = new HMessageExchange();
mex.setDirection(dir);
- _session.save(mex);
+ getSession().save(mex);
return new MessageExchangeDaoImpl(_sm, mex);
}
public MessageExchangeDAO getMessageExchange(String mexid) {
- HMessageExchange mex = (HMessageExchange) _session.get(HMessageExchange.class, new Long(mexid));
+ HMessageExchange mex = (HMessageExchange) getSession().get(HMessageExchange.class, new Long(mexid));
return mex == null ? null : new MessageExchangeDaoImpl(_sm, mex);
}
@@ -106,14 +105,14 @@
process.setDeployDate(new Date());
process.setGuid(guid);
process.setVersion(version);
- _session.save(process);
+ getSession().save(process);
return new ProcessDaoImpl(_sm, process);
}
public ProcessDAO getProcess(QName processId) {
try {
- Criteria criteria = _session.createCriteria(HProcess.class);
+ Criteria criteria = getSession().createCriteria(HProcess.class);
criteria.add(Expression.eq("processId", processId.toString()));
// For the moment we are expecting only one result.
HProcess hprocess = (HProcess) criteria.uniqueResult();
@@ -132,11 +131,11 @@
* @see org.apache.ode.bpel.dao.ProcessDAO#getInstance(java.lang.Long)
*/
public ProcessInstanceDAO getInstance(Long instanceId) {
- return _getInstance(_sm, _session, instanceId);
+ return _getInstance(_sm, getSession(), instanceId);
}
public ScopeDAO getScope(Long siidl) {
- return _getScope(_sm, _session, siidl);
+ return _getScope(_sm, getSession(), siidl);
}
public Collection<ProcessInstanceDAO> instanceQuery(InstanceFilter criteria) {
@@ -145,7 +144,7 @@
}
List<ProcessInstanceDAO> daos = new ArrayList<ProcessInstanceDAO>();
- Iterator<HProcessInstance> iter = _instanceQuery(_session, false, criteria);
+ Iterator<HProcessInstance> iter = _instanceQuery(getSession(), false, criteria);
while (iter.hasNext()) {
daos.add(new ProcessInstanceDaoImpl(_sm, iter.next()));
}
@@ -213,7 +212,7 @@
@SuppressWarnings( { "unchecked", "deprecation" })
public List<Date> bpelEventTimelineQuery(InstanceFilter ifilter, BpelEventFilter efilter) {
CriteriaBuilder cb = new CriteriaBuilder();
- Criteria crit = _session.createCriteria(HBpelEvent.class);
+ Criteria crit = getSession().createCriteria(HBpelEvent.class);
if (ifilter != null)
cb.buildCriteria(crit, efilter);
if (ifilter != null)
@@ -226,7 +225,7 @@
@SuppressWarnings("unchecked")
public List<BpelEvent> bpelEventQuery(InstanceFilter ifilter, BpelEventFilter efilter) {
CriteriaBuilder cb = new CriteriaBuilder();
- Criteria crit = _session.createCriteria(HBpelEvent.class);
+ Criteria crit = getSession().createCriteria(HBpelEvent.class);
if (efilter != null)
cb.buildCriteria(crit, efilter);
if (ifilter != null)
@@ -259,7 +258,7 @@
HibernateInstancesQueryCompiler compiler = new HibernateInstancesQueryCompiler();
CommandEvaluator<List, Session> eval = compiler.compile((Query) rootNode);
- List<HProcessInstance> instancesList = (List<HProcessInstance>) eval.evaluate(_session);
+ List<HProcessInstance> instancesList = (List<HProcessInstance>) eval.evaluate(getSession());
Collection<ProcessInstanceDAO> result = new ArrayList<ProcessInstanceDAO>(instancesList.size());
for (HProcessInstance instance : instancesList) {
@@ -279,7 +278,7 @@
iids[i] = dao.getInstanceId();
i++;
}
- Collection<HCorrelationSet> csets = _session.getNamedQuery(HCorrelationSet.SELECT_CORSETS_BY_INSTANCES).setParameterList("instances", iids).list();
+ Collection<HCorrelationSet> csets = getSession().getNamedQuery(HCorrelationSet.SELECT_CORSETS_BY_INSTANCES).setParameterList("instances", iids).list();
Map<Long, Collection<CorrelationSetDAO>> map = new HashMap<Long, Collection<CorrelationSetDAO>>();
for (HCorrelationSet cset: csets) {
Long id = cset.getInstance().getId();
@@ -293,9 +292,10 @@
return map;
}
- public Collection<CorrelationSetDAO> getActiveCorrelationSets() {
+ @SuppressWarnings("unchecked")
+ public Collection<CorrelationSetDAO> getActiveCorrelationSets() {
ArrayList<CorrelationSetDAO> csetDaos = new ArrayList<CorrelationSetDAO>();
- Collection<HCorrelationSet> csets = _session.getNamedQuery(HCorrelationSet.SELECT_ACTIVE_CORSETS).setParameter("state", ProcessState.STATE_ACTIVE).list();
+ Collection<HCorrelationSet> csets = getSession().getNamedQuery(HCorrelationSet.SELECT_ACTIVE_CORSETS).setParameter("state", ProcessState.STATE_ACTIVE).list();
for (HCorrelationSet cset : csets)
csetDaos.add(new CorrelationSetDaoImpl(_sm, cset));
return csetDaos;
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java Thu Mar 26 21:54:08 2009
@@ -25,7 +25,6 @@
import org.apache.ode.bpel.dao.CorrelatorDAO;
import org.apache.ode.bpel.dao.ProcessDAO;
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
-import org.apache.ode.bpel.dao.CorrelationSetDAO;
import org.apache.ode.daohib.SessionManager;
import org.apache.ode.daohib.bpel.hobj.HActivityRecovery;
import org.apache.ode.daohib.bpel.hobj.HBpelEvent;
@@ -33,7 +32,6 @@
import org.apache.ode.daohib.bpel.hobj.HCorrelationSet;
import org.apache.ode.daohib.bpel.hobj.HCorrelator;
import org.apache.ode.daohib.bpel.hobj.HCorrelatorMessage;
-import org.apache.ode.daohib.bpel.hobj.HCorrelatorMessageKey;
import org.apache.ode.daohib.bpel.hobj.HFaultData;
import org.apache.ode.daohib.bpel.hobj.HLargeData;
import org.apache.ode.daohib.bpel.hobj.HMessage;
@@ -86,8 +84,8 @@
return instance;
}
-
- public CorrelatorDAO getCorrelator(String corrId) {
+ @SuppressWarnings("unchecked")
+ public CorrelatorDAO getCorrelator(String corrId) {
entering("ProcessDaoImpl.getCorrelator");
Iterator results;
Query q = getSession().createFilter(_process.getCorrelators(),
@@ -154,6 +152,10 @@
deleteProcessInstances();
getSession().delete(_process); // this deletes HCorrelator -> HCorrelatorSelector
+
+ // after this delete, we have a use case that creates the process with the same procid.
+ // for hibernate to work without the database deferred constraint check, let's just flush the session.
+ getSession().flush();
}
private void deleteProcessInstances() {
@@ -219,7 +221,8 @@
return new CorrelatorDaoImpl(_sm, correlator);
}
- public Collection<ProcessInstanceDAO> getActiveInstances() {
+ @SuppressWarnings("unchecked")
+ public Collection<ProcessInstanceDAO> getActiveInstances() {
ArrayList<ProcessInstanceDAO> instDaos = new ArrayList<ProcessInstanceDAO>();
Collection<HProcessInstance> insts = getSession().getNamedQuery(HProcessInstance.SELECT_ACTIVE_INSTANCES)
.setParameter("processId", _process.getId()).setParameter("state", ProcessState.STATE_ACTIVE).list();
Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java Thu Mar 26 21:54:08 2009
@@ -96,7 +96,7 @@
propMap.put("openjpa.Log", "log4j");
// propMap.put("openjpa.jdbc.DBDictionary", "org.apache.openjpa.jdbc.sql.DerbyDictionary");
- propMap.put("openjpa.ManagedRuntime", new TxMgrProvider());
+ propMap.put("openjpa.ManagedRuntime", new JpaTxMgrProvider(_tm));
propMap.put("openjpa.ConnectionFactory", _ds);
propMap.put("openjpa.ConnectionFactoryMode", "managed");
propMap.put("openjpa.FlushBeforeQueries", "false");
@@ -141,59 +141,4 @@
public DataSource getDataSource() {
return _ds;
}
-
- private class TxMgrProvider implements ManagedRuntime {
- public TxMgrProvider() {
- }
-
- public TransactionManager getTransactionManager() throws Exception {
- return _tm;
- }
-
- public void setRollbackOnly(Throwable cause) throws Exception {
- // there is no generic support for setting the rollback cause
- getTransactionManager().getTransaction().setRollbackOnly();
- }
-
- public Throwable getRollbackCause() throws Exception {
- // there is no generic support for setting the rollback cause
- return null;
- }
-
- public Object getTransactionKey() throws Exception, SystemException {
- return _tm.getTransaction();
- }
-
- public void doNonTransactionalWork(java.lang.Runnable runnable) throws NotSupportedException {
- TransactionManager tm = null;
- Transaction transaction = null;
-
- try {
- tm = getTransactionManager();
- transaction = tm.suspend();
- } catch (Exception e) {
- NotSupportedException nse =
- new NotSupportedException(e.getMessage());
- nse.initCause(e);
- throw nse;
- }
-
- runnable.run();
-
- try {
- tm.resume(transaction);
- } catch (Exception e) {
- try {
- transaction.setRollbackOnly();
- }
- catch(SystemException se2) {
- throw new GeneralException(se2);
- }
- NotSupportedException nse =
- new NotSupportedException(e.getMessage());
- nse.initCause(e);
- throw nse;
- }
- }
- }
-}
+}
\ No newline at end of file
Added: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/JpaTxMgrProvider.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/JpaTxMgrProvider.java?rev=758880&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/JpaTxMgrProvider.java (added)
+++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/JpaTxMgrProvider.java Thu Mar 26 21:54:08 2009
@@ -0,0 +1,67 @@
+package org.apache.ode.dao.jpa;
+
+import javax.transaction.NotSupportedException;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+
+import org.apache.openjpa.ee.ManagedRuntime;
+import org.apache.openjpa.util.GeneralException;
+
+public class JpaTxMgrProvider implements ManagedRuntime {
+ private TransactionManager _txMgr;
+
+ public JpaTxMgrProvider(TransactionManager txMgr) {
+ _txMgr = txMgr;
+ }
+
+ public TransactionManager getTransactionManager() throws Exception {
+ return _txMgr;
+ }
+
+ public void setRollbackOnly(Throwable cause) throws Exception {
+ // there is no generic support for setting the rollback cause
+ getTransactionManager().getTransaction().setRollbackOnly();
+ }
+
+ public Throwable getRollbackCause() throws Exception {
+ // there is no generic support for setting the rollback cause
+ return null;
+ }
+
+ public Object getTransactionKey() throws Exception, SystemException {
+ return _txMgr.getTransaction();
+ }
+
+ public void doNonTransactionalWork(java.lang.Runnable runnable) throws NotSupportedException {
+ TransactionManager tm = null;
+ Transaction transaction = null;
+
+ try {
+ tm = getTransactionManager();
+ transaction = tm.suspend();
+ } catch (Exception e) {
+ NotSupportedException nse =
+ new NotSupportedException(e.getMessage());
+ nse.initCause(e);
+ throw nse;
+ }
+
+ runnable.run();
+
+ try {
+ tm.resume(transaction);
+ } catch (Exception e) {
+ try {
+ transaction.setRollbackOnly();
+ }
+ catch(SystemException se2) {
+ throw new GeneralException(se2);
+ }
+ NotSupportedException nse =
+ new NotSupportedException(e.getMessage());
+ nse.initCause(e);
+ throw nse;
+ }
+ }
+}
\ No newline at end of file
Modified: ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java?rev=758880&r1=758879&r2=758880&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java Thu Mar 26 21:54:08 2009
@@ -111,9 +111,6 @@
/** Time for next upgrade. */
private AtomicLong _nextUpgrade = new AtomicLong();
- /** Time for next job load */
- private AtomicLong _nextScheduleImmediate = new AtomicLong();
-
private Random _random = new Random();
public SimpleScheduler(String nodeId, DatabaseDelegate del, Properties conf) {