ODE-1068: Upgraded hibernate to 4.3.11
Project: http://git-wip-us.apache.org/repos/asf/ode/repo Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/e24fc113 Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/e24fc113 Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/e24fc113 Branch: refs/heads/master Commit: e24fc113339dd5a1ee4813ebe3f5206ff12a0ee8 Parents: c5594a7 Author: sathwik <[email protected]> Authored: Tue Nov 28 15:37:10 2017 +0530 Committer: sathwik <[email protected]> Committed: Tue Nov 28 15:37:10 2017 +0530 ---------------------------------------------------------------------- Rakefile | 21 ++++++++- .../HibDaoConnectionFactoryImpl.java | 31 +++++++++++-- .../store/hib/DbConfStoreConnectionFactory.java | 48 ++++++++++++++++---- .../daohib/DataSourceConnectionProvider.java | 25 ++++++++-- .../HibernateTransactionManagerLookup.java | 46 +++++++++++-------- .../ode/daohib/HibertenateJtaPlatform.java | 45 ++++++++++++++++++ .../apache/ode/daohib/NativeHiLoGenerator.java | 2 +- .../org/apache/ode/daohib/SessionManager.java | 13 ++++-- .../bpel/BpelDAOConnectionFactoryImpl.java | 19 +++++--- .../ode/daohib/bpel/hobj/GZipDataType.java | 6 +-- .../apache/ode/daohib/bpel/hobj/HProcess.java | 2 +- dependencies.rb | 8 ++-- tomee-server/src/main/server/bin/start.bat | 3 +- tomee-server/src/main/server/bin/start.sh | 3 +- 14 files changed, 211 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/Rakefile ---------------------------------------------------------------------- diff --git a/Rakefile b/Rakefile index 6fd5c28..3ae6838 100644 --- a/Rakefile +++ b/Rakefile @@ -298,6 +298,16 @@ define "ode" do compile { open_jpa_enhance } resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo") + task "hbm-replace-namespace" do |task| + Dir["#{_("target/classes/org/apache/ode/store/hib")}/*.hbm.xml"].each do |f| + file_content = File.read(f) + file_content.gsub!("http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd","http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd") + File.open(f,'w') {|wf| wf << file_content} + end + end + + task "compile" => ["hbm-replace-namespace"] + test.with projects("bpel-obj"), COMMONS.collections, COMMONS.lang, JAVAX.connector, JAVAX.transaction, DOM4J, XERCES, XALAN, JAXEN, SAXON, OPENJPA, GERONIMO.transaction, SLF4J, SPRING_TEST, DERBY, GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, JAVAX.connector, JAVAX.ejb, H2::REQUIRES @@ -335,7 +345,16 @@ define "ode" do File.open(process_instance_hbm_file, "w") { |f| f << process_instance_hbm } end end - task "compile" => "hbm-hack" + + task "hbm-replace-namespace" do |task| + Dir["#{_("target/classes/org/apache/ode/daohib/bpel/hobj")}/*.hbm.xml"].each do |f| + file_content = File.read(f) + file_content.gsub!("http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd","http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd") + File.open(f,'w') {|wf| wf << file_content} + end + end + + task "compile" => ["hbm-hack", "hbm-replace-namespace"] test.with project("bpel-epr"), BACKPORT, COMMONS.collections, COMMONS.lang, DERBY, COMMONS.pool, COMMONS.dbcp, GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, JAVAX.connector, JAVAX.ejb, SPRING, SPRING_TEST http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/HibDaoConnectionFactoryImpl.java ---------------------------------------------------------------------- diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/HibDaoConnectionFactoryImpl.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/HibDaoConnectionFactoryImpl.java index 34d9104..98d9668 100644 --- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/HibDaoConnectionFactoryImpl.java +++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/HibDaoConnectionFactoryImpl.java @@ -39,10 +39,15 @@ import org.apache.ode.daohib.bpel.ProcessProfileDaoImpl; import org.apache.ode.daohib.bpel.hobj.HProcess; import org.apache.ode.daohib.bpel.hobj.HProcessInstance; import org.hibernate.MappingException; -import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.SessionFactoryObserver; import org.hibernate.cfg.Configuration; -import org.hibernate.event.PostInsertEvent; -import org.hibernate.event.PostInsertEventListener; +import org.hibernate.event.service.spi.EventListenerRegistry; +import org.hibernate.event.spi.EventType; +import org.hibernate.event.spi.PostInsertEvent; +import org.hibernate.event.spi.PostInsertEventListener; +import org.hibernate.persister.entity.EntityPersister; + @SuppressWarnings("serial") public class HibDaoConnectionFactoryImpl extends BpelDAOConnectionFactoryImpl implements PostInsertEventListener { @@ -56,7 +61,19 @@ public class HibDaoConnectionFactoryImpl extends BpelDAOConnectionFactoryImpl im @Override public Configuration getDefaultConfiguration() throws MappingException { Configuration conf = super.getDefaultConfiguration(); - conf.setListener("post-insert", HibDaoConnectionFactoryImpl.this); + + conf.setSessionFactoryObserver(new SessionFactoryObserver() { + @Override + public void sessionFactoryCreated(SessionFactory sessionFactory) { + ((org.hibernate.internal.SessionFactoryImpl) sessionFactory).getServiceRegistry() + .getService( EventListenerRegistry.class ) + .appendListeners(EventType.POST_INSERT, HibDaoConnectionFactoryImpl.this); + } + + @Override + public void sessionFactoryClosed(SessionFactory arg0) { + } + }); return conf; } }; @@ -64,6 +81,10 @@ public class HibDaoConnectionFactoryImpl extends BpelDAOConnectionFactoryImpl im return _staticSessionManager; } + public boolean requiresPostCommitHanding(EntityPersister paramEntityPersister) { + return false; + } + public BpelDAOConnection getConnection() { return new ProfilingBpelDAOConnectionImpl(_sessionManager); } @@ -101,4 +122,4 @@ public class HibDaoConnectionFactoryImpl extends BpelDAOConnectionFactoryImpl im return new ProcessInstanceProfileDaoImpl(_sm, (ProcessInstanceDaoImpl)instance); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java ---------------------------------------------------------------------- diff --git a/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java b/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java index fec2d30..848168f 100644 --- a/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java +++ b/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java @@ -32,7 +32,7 @@ import javax.transaction.TransactionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.ode.bpel.iapi.BpelEngineException; -import org.apache.ode.daohib.HibernateTransactionManagerLookup; +import org.apache.ode.daohib.HibertenateJtaPlatform; import org.apache.ode.daohib.SessionManager; import org.apache.ode.store.ConfStoreConnectionFactory; import org.apache.ode.store.Messages; @@ -41,9 +41,13 @@ import org.apache.ode.utils.msg.MessageBundle; import org.hibernate.HibernateException; import org.hibernate.MappingException; import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; -import org.hibernate.connection.ConnectionProvider; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.service.UnknownUnwrapTypeException; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; +import org.hibernate.service.spi.Configurable; import org.hibernate.dialect.Dialect; public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory { @@ -81,15 +85,22 @@ public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory // 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.JTA_PLATFORM)) + __log.warn("Ignoring user-specified Hibernate property: " + Environment.JTA_PLATFORM); if (properties.containsKey(Environment.SESSION_FACTORY_NAME)) __log.warn("Ignoring user-specified Hibernate property: " + Environment.SESSION_FACTORY_NAME); + if (properties.containsKey(Environment.TRANSACTION_STRATEGY)) + __log.warn("Ignoring user-specified Hibernate property: " + Environment.TRANSACTION_STRATEGY); + if (properties.containsKey(Environment.CURRENT_SESSION_CONTEXT_CLASS)) + __log.warn("Ignoring user-specified Hibernate property: " + Environment.CURRENT_SESSION_CONTEXT_CLASS); 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.JTA_PLATFORM, HibertenateJtaPlatform.class.getName()); + + // Need to use CMTTransactionFactory instead of JTATransactionFactory in Hibernate 4 + // Refer: https://jira.spring.io/browse/SPR-9480?focusedCommentId=81419&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-81419 + properties.put(Environment.TRANSACTION_STRATEGY, "org.hibernate.transaction.CMTTransactionFactory"); properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "jta"); if(__log.isDebugEnabled()) __log.debug("Store connection properties: " + properties ); @@ -97,7 +108,10 @@ public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory initTxMgr(txFactoryClassName); SessionManager.registerTransactionManager(_guid, _txMgr); - _sessionFactory = getDefaultConfiguration().setProperties(properties).buildSessionFactory(); + Configuration configuration = getDefaultConfiguration().setProperties(properties); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); + _sessionFactory = configuration.buildSessionFactory(serviceRegistry); } public ConfStoreConnectionHib getConnection() { @@ -146,14 +160,14 @@ public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory .addClass(VersionTrackerDAOImpl.class); } - public static class DataSourceConnectionProvider implements ConnectionProvider { + public static class DataSourceConnectionProvider implements ConnectionProvider, Configurable { private String _guid; public DataSourceConnectionProvider() { } - public void configure(Properties props) throws HibernateException { - _guid = props.getProperty(SessionManager.PROP_GUID); + public void configure(Map props) throws HibernateException { + _guid = (String) props.get(SessionManager.PROP_GUID); } public Connection getConnection() throws SQLException { @@ -170,6 +184,20 @@ public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory public boolean supportsAggressiveRelease() { return true; } + + public boolean isUnwrappableAs(Class unwrapType) { + return ConnectionProvider.class.equals(unwrapType) || + DataSourceConnectionProvider.class.isAssignableFrom(unwrapType); + } + + public <T> T unwrap(Class<T> unwrapType) { + if (ConnectionProvider.class.equals(unwrapType) || + DataSourceConnectionProvider.class.isAssignableFrom(unwrapType)) { + return (T) this; + } else { + throw new UnknownUnwrapTypeException( unwrapType ); + } + } } } http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java index a3947a9..cc3e8c1 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/DataSourceConnectionProvider.java @@ -21,23 +21,27 @@ package org.apache.ode.daohib; import java.sql.Connection; import java.sql.SQLException; +import java.util.Map; import java.util.Properties; import org.apache.ode.utils.DbIsolation; import org.hibernate.HibernateException; -import org.hibernate.connection.ConnectionProvider; +import org.hibernate.service.UnknownUnwrapTypeException; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; +import org.hibernate.service.spi.Configurable; -public class DataSourceConnectionProvider implements ConnectionProvider { +public class DataSourceConnectionProvider implements ConnectionProvider, Configurable { private Properties _props; public DataSourceConnectionProvider() { } - public void configure(Properties props) throws HibernateException { - _props = props; + public void configure(Map props) throws HibernateException { + _props = new Properties(); + _props.putAll(props); } public Connection getConnection() throws SQLException { @@ -58,4 +62,17 @@ public class DataSourceConnectionProvider implements ConnectionProvider { return true; } + public boolean isUnwrappableAs(Class unwrapType) { + return ConnectionProvider.class.equals(unwrapType) || + DataSourceConnectionProvider.class.isAssignableFrom(unwrapType); + } + + public <T> T unwrap(Class<T> unwrapType) { + if (ConnectionProvider.class.equals(unwrapType) || + DataSourceConnectionProvider.class.isAssignableFrom(unwrapType)) { + return (T) this; + } else { + throw new UnknownUnwrapTypeException( unwrapType ); + } + } } http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/HibernateTransactionManagerLookup.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/HibernateTransactionManagerLookup.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/HibernateTransactionManagerLookup.java index 5b627a8..95fbba6 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/HibernateTransactionManagerLookup.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/HibernateTransactionManagerLookup.java @@ -24,29 +24,35 @@ import javax.transaction.TransactionManager; import javax.transaction.Transaction; import org.hibernate.HibernateException; -import org.hibernate.transaction.TransactionManagerLookup; +//import org.hibernate.transaction.TransactionManagerLookup; /** * Implementation of the {@link org.hibernate.transaction.TransactionManagerLookup} interface that * uses {@link SessionManager} to obtain the JTA {@link TransactionManager} object. */ -public class HibernateTransactionManagerLookup implements TransactionManagerLookup { +// public class HibernateTransactionManagerLookup implements TransactionManagerLookup { +// +// /** Constructor. */ +// public HibernateTransactionManagerLookup() { +// super(); +// } +// +// public TransactionManager getTransactionManager(Properties props) +// throws HibernateException { +// return SessionManager.getTransactionManager(props); +// } +// +// public String getUserTransactionName() { +// return null; +// } +// +// public Object getTransactionIdentifier(Transaction transaction) { +// return transaction; +// } +// } - /** Constructor. */ - public HibernateTransactionManagerLookup() { - super(); - } - - public TransactionManager getTransactionManager(Properties props) - throws HibernateException { - return SessionManager.getTransactionManager(props); - } - - public String getUserTransactionName() { - return null; - } - - public Object getTransactionIdentifier(Transaction transaction) { - return transaction; - } -} +/** +* @Depreicated +* Replaced by org.apache.ode.daohib.HibertenateJtaPlatform +*/ +public class HibernateTransactionManagerLookup {} http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/HibertenateJtaPlatform.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/HibertenateJtaPlatform.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/HibertenateJtaPlatform.java new file mode 100644 index 0000000..a88a29b --- /dev/null +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/HibertenateJtaPlatform.java @@ -0,0 +1,45 @@ +/* + * 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.daohib; + +import java.util.Map; +import java.util.Properties; + +import javax.transaction.TransactionManager; +import javax.transaction.UserTransaction; + +import org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform; + +public class HibertenateJtaPlatform extends AbstractJtaPlatform { + Properties properties = new Properties(); + + public void configure(Map configValues) { + super.configure(configValues); + properties.putAll(configValues); + } + + protected TransactionManager locateTransactionManager() { + return SessionManager.getTransactionManager(properties); + } + + protected UserTransaction locateUserTransaction() { + return (UserTransaction) SessionManager.getTransactionManager(properties); + } + +} http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/NativeHiLoGenerator.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/NativeHiLoGenerator.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/NativeHiLoGenerator.java index 2d9661a..f144838 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/NativeHiLoGenerator.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/NativeHiLoGenerator.java @@ -25,7 +25,7 @@ import java.util.Properties; import org.hibernate.HibernateException; import org.hibernate.MappingException; import org.hibernate.dialect.Dialect; -import org.hibernate.engine.SessionImplementor; +import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.id.Configurable; import org.hibernate.id.IdentifierGenerator; import org.hibernate.id.PersistentIdentifierGenerator; http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java index 346fc34..68bb83b 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java @@ -26,8 +26,10 @@ import org.hibernate.HibernateException; import org.hibernate.MappingException; import org.hibernate.Session; import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; +import org.hibernate.service.ServiceRegistry; import javax.sql.DataSource; import javax.transaction.TransactionManager; @@ -70,10 +72,13 @@ public class SessionManager { _txManagers.put(_uuid,tx); _dataSources.put(_uuid,ds); - _sessionFactory = getDefaultConfiguration() - .setProperties(env) - .setProperty(PROP_GUID, _uuid) - .buildSessionFactory(); + Configuration configuration = getDefaultConfiguration() + .setProperties(env) + .setProperty(PROP_GUID, _uuid); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); + + _sessionFactory = configuration.buildSessionFactory(serviceRegistry); /* Some Hibernate dialects (like IngresDialect) do not support update for join. http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java index ed8018b..1e75d9e 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java @@ -32,12 +32,11 @@ import org.slf4j.LoggerFactory; import org.apache.ode.bpel.dao.BpelDAOConnection; import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC; import org.apache.ode.daohib.DataSourceConnectionProvider; -import org.apache.ode.daohib.HibernateTransactionManagerLookup; +import org.apache.ode.daohib.HibertenateJtaPlatform; import org.apache.ode.daohib.SessionManager; import org.hibernate.HibernateException; import org.hibernate.cfg.Environment; import org.hibernate.dialect.Dialect; -import org.hibernate.dialect.resolver.DialectFactory; /** * Hibernate-based {@link org.apache.ode.bpel.dao.BpelDAOConnectionFactory} @@ -94,14 +93,22 @@ public class BpelDAOConnectionFactoryImpl implements BpelDAOConnectionFactoryJDB // 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.JTA_PLATFORM)) + __log.warn("Ignoring user-specified Hibernate property: " + Environment.JTA_PLATFORM); if (properties.containsKey(Environment.SESSION_FACTORY_NAME)) __log.warn("Ignoring user-specified Hibernate property: " + Environment.SESSION_FACTORY_NAME); + if (properties.containsKey(Environment.TRANSACTION_STRATEGY)) + __log.warn("Ignoring user-specified Hibernate property: " + Environment.TRANSACTION_STRATEGY); + if (properties.containsKey(Environment.CURRENT_SESSION_CONTEXT_CLASS)) + __log.warn("Ignoring user-specified Hibernate property: " + Environment.CURRENT_SESSION_CONTEXT_CLASS); 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.JTA_PLATFORM, HibertenateJtaPlatform.class.getName()); + + // Need to use CMTTransactionFactory instead of JTATransactionFactory in Hibernate 4 + // Refer: https://jira.spring.io/browse/SPR-9480?focusedCommentId=81419&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-81419 + properties.put(Environment.TRANSACTION_STRATEGY, "org.hibernate.transaction.CMTTransactionFactory"); + properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "jta"); // Isolation levels override; when you use a ConnectionProvider, this has no effect http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/GZipDataType.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/GZipDataType.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/GZipDataType.java index c272eaa..d9c0800 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/GZipDataType.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/GZipDataType.java @@ -34,7 +34,7 @@ import java.util.zip.GZIPOutputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.usertype.UserType; /** @@ -108,7 +108,7 @@ public class GZipDataType implements UserType { } /** Retrieve an instance of the mapped class from a JDBC resultset. */ - public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws SQLException { + public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor sessionImplementor, Object owner) throws SQLException { if (names.length != 1) throw new IllegalStateException("Expected a single column name instead of "+names.length); byte[] buf = rs.getBytes(names[0]); if (buf == null) { @@ -130,7 +130,7 @@ public class GZipDataType implements UserType { } /** Write an instance of the mapped class to a prepared statement. */ - public void nullSafeSet(PreparedStatement st, Object value, int index) throws SQLException { + public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor sessionImplementor) throws SQLException { byte[] buf = (byte[]) value; if (buf != null) { synchronized (STATS_LOCK) { http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java ---------------------------------------------------------------------- diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java index 9db4fa7..5aa9042 100644 --- a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java +++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java @@ -166,7 +166,7 @@ public class HProcess extends HObject{ * @hibernate.column * name="PROCID" * not-null="true" - * unique="true" + * unique-key="UNIQ_PROCID" */ public String getProcessId() { return _processId; http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/dependencies.rb ---------------------------------------------------------------------- diff --git a/dependencies.rb b/dependencies.rb index 983cffa..32de919 100644 --- a/dependencies.rb +++ b/dependencies.rb @@ -76,10 +76,10 @@ GERONIMO = struct( :connector =>"org.apache.geronimo.components:geronimo-connector:jar:3.1.3" ) HAZELCAST ="com.hazelcast:hazelcast:jar:3.4.2" -HIBERNATE = ["org.hibernate:hibernate-core:jar:3.6.10.Final", "commons-collections:commons-collections:jar:3.1", - "javassist:javassist:jar:3.12.0.GA", "antlr:antlr:jar:2.7.6", - "dom4j:dom4j:jar:1.6.1", "org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final", - "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final"] +HIBERNATE = ["org.hibernate:hibernate-core:jar:4.3.11.Final", "org.javassist:javassist:jar:3.18.1-GA", "antlr:antlr:jar:2.7.7", + "dom4j:dom4j:jar:1.6.1", "org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final", + "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final" , "org.jboss:jandex:jar:1.1.0.Final", + "org.jboss.logging:jboss-logging:jar:3.1.3.GA" , "org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1"] HSQLDB = "org.hsqldb:hsqldb:jar:2.3.3" JACKSON = [ "com.fasterxml.jackson.core:jackson-core:jar:2.4.0", "com.fasterxml.jackson.core:jackson-databind:jar:2.4.0", http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/tomee-server/src/main/server/bin/start.bat ---------------------------------------------------------------------- diff --git a/tomee-server/src/main/server/bin/start.bat b/tomee-server/src/main/server/bin/start.bat index b4cad16..06759d8 100644 --- a/tomee-server/src/main/server/bin/start.bat +++ b/tomee-server/src/main/server/bin/start.bat @@ -30,6 +30,7 @@ set ODE_SERVER_CONF=%~dp0..\conf set ODE_SERVER_JAVAOPTS=%JAVA_OPTS% set ODE_SERVER_JAVAOPTS=%ODE_SERVER_JAVAOPTS% -Dode.server.home=%ODE_SERVER_HOME% -Dderby.syste.home=%ODE_SERVER_HOME% set ODE_SERVER_JAVAOPTS=%ODE_SERVER_JAVAOPTS% -Djava.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory +set ODE_SERVER_JAVAOPTS=%ODE_SERVER_JAVAOPTS% -Dorg.jboss.logging.provider=slf4j if "%JAVA_HOME%"=="" goto noJavaHome if not exist "%JAVA_HOME%"\bin\java.exe goto noJava @@ -63,4 +64,4 @@ REM ================================================================ REM END REM ================================================================ :end -@endlocal \ No newline at end of file +@endlocal http://git-wip-us.apache.org/repos/asf/ode/blob/e24fc113/tomee-server/src/main/server/bin/start.sh ---------------------------------------------------------------------- diff --git a/tomee-server/src/main/server/bin/start.sh b/tomee-server/src/main/server/bin/start.sh index 6d4a0b6..ce21b61 100755 --- a/tomee-server/src/main/server/bin/start.sh +++ b/tomee-server/src/main/server/bin/start.sh @@ -96,7 +96,8 @@ done ODE_SERVER_JAVAOPTS="$JAVA_OPTS \ -Dode.server.home=$ODE_SERVER_HOME \ -Dderby.system.home=$ODE_SERVER_HOME \ --Djava.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory" +-Djava.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory \ +-Dorg.jboss.logging.provider=slf4j" # For Cygwin, switch paths to Windows format before running java
