-
1. Re: fuse servicemix 4.4 -JTA
janstey Aug 30, 2011 10:58 AM (in response to chandraprabha)There is an example here https://github.com/cmoulliard/sparks/tree/master/fuse-webinars/camel-persistence-part2/dao-jta using OpenJPA. Should be similar with Hibernate if you are using JPA config rather than Hibernate specific config.
Cheers,
Jon
-
2. Re: fuse servicemix 4.4 -JTA
chandraprabha Aug 30, 2011 12:51 PM (in response to janstey)Thanks a lot for the example.
Kindly let me know if there is some example for handaling multiple entityManagerFactory.
1.Oracle
2.Postgres
And i want to add the transaction support at business layer .
business layer function
public void insertUpdateData(){
oracleDao.getVal();
postGreDao.getVal();
}
-
3. Re: fuse servicemix 4.4 -JTA
janstey Aug 30, 2011 1:11 PM (in response to chandraprabha)I think you will need to create a persistence unit for each DB like explained here:
http://stackoverflow.com/questions/1902997/multiple-database-with-springhibernatejpa
-
4. Re: fuse servicemix 4.4 -JTA
chandraprabha Aug 30, 2011 2:26 PM (in response to janstey)what should be the value of hibernate.transaction.manager_lookup_class in case of servicemix
-
5. Re: fuse servicemix 4.4 -JTA
chandraprabha Aug 30, 2011 2:40 PM (in response to chandraprabha)I also read on fuse site :
The X/Open XA standard describes a standardized interface for integrating resources with a transaction manager. If you want to manage a transaction that includes more than one resource, it is essential that the participating resources support the XA standard. Resources that support the XA standard expose a special object, the XA switch, which enables transaction managers (or TP monitors) to take control of their transactions. The XA standard supports both the 1-phase commit protocol and the 2-phase commit protocol
Please let meknow if there is any example of this.
-
6. Re: fuse servicemix 4.4 -JTA
janstey Aug 30, 2011 2:49 PM (in response to chandraprabha)I haven't looked at the latest version of Hibernate so I'm not sure if they have OSGi support for this type of element yet. In the past I just created a custom one like so:
import java.util.Properties; import javax.transaction.Transaction; import javax.transaction.TransactionManager; import org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader; import org.hibernate.transaction.TransactionManagerLookup; import org.osgi.framework.BundleContext; import org.osgi.framework.InvalidSyntaxException; import org.osgi.util.tracker.ServiceTracker; public class OsgiTransactionManagerLookup implements TransactionManagerLookup { private static TransactionManager transactionManager; public TransactionManager getTransactionManager(Properties props) { try { if (transactionManager == null) { DefaultClassLoader classLoader = (DefaultClassLoader) this.getClass().getClassLoader(); BundleContext context = classLoader.getBundle().getBundleContext(); ServiceTracker serviceTracker = new ServiceTracker(context, context.createFilter("(objectClass=javax.transaction.TransactionManager)"), null); serviceTracker.open(); transactionManager = (TransactionManager) serviceTracker.getService(); } } catch (InvalidSyntaxException e) { throw new IllegalStateException("No javax.transaction.TransactionManager found as OSGi service.", e); } return transactionManager; } public String getUserTransactionName() { return "java:comp/UserTransaction"; } public Object getTransactionIdentifier(Transaction transaction) { return transaction; } }
-
7. Re: fuse servicemix 4.4 -JTA
janstey Aug 30, 2011 2:51 PM (in response to chandraprabha)This just means if you want to use XA (like enlisting several resources like brokers, DBs, etc in a single TX) you have to make sure the resources themselves are XA aware. Oracle definitely is and probably Postgres too.
-
8. Re: fuse servicemix 4.4 -JTA
chandraprabha Aug 30, 2011 4:22 PM (in response to janstey)Thanks for response.
I am getting Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
..
1. I have daos where i am using persistence unit to enject the entityManager
2. in Service layer i have function which call oracleDao and PostgresDao
My persistence_oracle.xml
-
9. Re: fuse servicemix 4.4 -JTA
chandraprabha Aug 30, 2011 10:27 PM (in response to chandraprabha)Can any one please help
-
10. Re: fuse servicemix 4.4 -JTA
chandraprabha Sep 1, 2011 7:09 PM (in response to janstey)The OsgiTransactionManagerLookup is throwing :
Caused by: java.lang.ClassCastException: org.apache.felix.framework.ModuleImpl$ModuleClassLoaderJava5 cannot be cast to org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader
at com.luthresearch.surveysavvy.interim.business.service.util.OsgiTransactionManagerLookup.getTransactionManager(OsgiTransactionManagerLookup.java:19)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:367)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 29 more