4 Replies Latest reply: Apr 10, 2012 3:05 AM by Linh Pham RSS

JTS version of JBossTS with Hibernate/JPA

Uno Kazuya Newbie

Hi,

I'm trying transaction propergation between EJBs w/ JBossAS 6.

 

But when I tried JTS version of JBossTS. I got a strange error.

 

1. At first, I installed JTS version of JBossTS to JBossAS 6.

 

$ export JAVA_HOME=....

$ export JBOSS_HOME=....

$ jar xvf jboss-as-distribution-6.0.0.

Final.zip
$ cd jboss-6.0.0.Final
$ cd docs/examples/transactions
$ ant jts

 


2. edit all/deploy/transaction-jboss-beans.xml :

 

<bean name="JTSEnvironmentBean" class="com.arjuna.ats.jts.common.JTSEnvironmentBean">
   <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=JTSEnvironmentBean",
               exposedInterface=com.arjuna.ats.jts.common.JTSEnvironmentBeanMBean.class, registerDirectly=true)
   </annotation>
   <constructor factoryClass="com.arjuna.ats.jts.common.jtsPropertyManager" factoryMethod="getJTSEnvironmentBean"/>
   <property name="alwaysPropagateContext">true</property>
</bean>

 


3. started JBossAS.

 

$ cd ../../../bin
$ ./run.sh --configuration all -b localhost

 


4. Deployed three classes bellow (as a war file).

 

===== A servlet =====

 

@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {

 

        @EJB
        private JpaService service;

 

        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                service.executeLocal();
        }
}

 

===== An EJB =====

 

@Stateless
public class JpaService {

 

        @PersistenceContext
        EntityManager em;

 

        @TransactionAttribute(TransactionAttributeType.REQUIRED)
        public void executeLocal() {
                System.out.println("executeLocal(): JPA + REQUIRED");
                Foo foo = new Foo();
                foo.setProperty("bar");
                em.persist(foo);
                em.flush();
        }
}

 

===== An entity =====

 

@Entity(name="FOO_ENTITIES")
public class Foo {

 

        @Id
        @GeneratedValue
        private Long id;

 

        @Column(name="PROPERTY")
        private String property;

 

        public String getProperty() {
                return property;
        }

 

        public void setProperty(String property) {
                this.property = property;
        }
}

 


5. I executed my TestServlet, and got a error bellow.

 

17:29:14,678 WARN  [com.arjuna.ats.jts] ARJUNA-22037 ServerTopLevelAction.registerResource caught exception: org.omg.CosTransactions.Inactive: IDL:omg.org/CosTransactions/Inactive:1.0
        at org.omg.CosTransactions.InactiveHelper.read(InactiveHelper.java:42) [:6.0.0.Final]
        at org.omg.CosTransactions._CoordinatorStub.register_resource(_CoordinatorStub.java:1130) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.orbspecific.interposition.resources.arjuna.ServerTopLevelAction.registerResource(ServerTopLevelAction.java:601) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.orbspecific.interposition.resources.arjuna.ServerTopLevelAction.<init>(ServerTopLevelAction.java:120) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.createHierarchy(Interposition.java:178) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.setupHierarchy(Interposition.java:109) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.create(Interposition.java:68) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.InterpositionCreator.recreateLocal(InterpositionCreator.java:48) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.FactoryElement.recreateLocal(FactoryList.java:66) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.FactoryList.recreateLocal(FactoryList.java:113) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple.recreateLocal(TransactionFactoryImple.java:222) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.createHierarchy(ContextManager.java:702) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.currentPIContext(ContextManager.java:609) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.current(ContextManager.java:169) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.associate(ContextManager.java:310) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.OTSImpleManager.current(OTSImpleManager.java:79) [:6.0.0.Final]
        at com.arjuna.ats.internal.jta.transaction.jts.TransactionImple.getTransaction(TransactionImple.java:1129) [:6.0.0.Final]
        at com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.getTransaction(TransactionManagerImple.java:69) [:6.0.0.Final]
        at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.getTransaction(BaseTransactionManagerDelegate.java:95) [:6.0.0.Final]
        at org.hibernate.ejb.transaction.JoinableCMTTransaction.isTransactionInProgress(JoinableCMTTransaction.java:53) [:3.6.0.Final]
        at org.hibernate.ejb.transaction.JoinableCMTTransactionFactory.isTransactionInProgress(JoinableCMTTransactionFactory.java:52) [:3.6.0.Final]
        at org.hibernate.jdbc.JDBCContext.isTransactionInProgress(JDBCContext.java:235) [:3.6.0.Final]
        at org.hibernate.impl.SessionImpl.isTransactionInProgress(SessionImpl.java:546) [:3.6.0.Final]
        at org.hibernate.ejb.AbstractEntityManagerImpl.isTransactionInProgress(AbstractEntityManagerImpl.java:944) [:3.6.0.Final]
        at org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:123) [:3.6.0.Final]
        at org.jboss.jpa.deployment.ManagedEntityManagerFactory$SessionSynchronization.afterCompletion(ManagedEntityManagerFactory.java:138) [:1.0.2-alpha-3]
        at com.arjuna.ats.internal.jta.resources.jts.orbspecific.SynchronizationImple.after_completion(SynchronizationImple.java:139) [:6.0.0.Final]
        at com.arjuna.ArjunaOTS.ManagedSynchronizationPOATie.after_completion(ManagedSynchronizationPOATie.java:58) [:6.0.0.Final]
        at com.arjuna.ArjunaOTS.ManagedSynchronizationPOA._invoke(ManagedSynchronizationPOA.java:53) [:6.0.0.Final]
        at org.jacorb.poa.RequestProcessor.invokeOperation(Unknown Source) [:6.0.0.Final]
        at org.jacorb.poa.RequestProcessor.process(Unknown Source) [:6.0.0.Final]
        at org.jacorb.poa.RequestProcessor.run(Unknown Source) [:6.0.0.Final]

 

17:29:14,694 WARN  [com.arjuna.ats.jts] ARJUNA-22039 ServerTopLevelAction - could not register interposed hierarchy!
17:29:14,694 WARN  [com.arjuna.ats.jts] ARJUNA-22008 ContextManager.createHierarchy caught exception: org.omg.CORBA.TRANSACTION_ROLLEDBACK:   vmcid: 0x0  minor code: 0  completed: No
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.createHierarchy(Interposition.java:190) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.setupHierarchy(Interposition.java:109) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.create(Interposition.java:68) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.resources.arjuna.InterpositionCreator.recreateLocal(InterpositionCreator.java:48) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.FactoryElement.recreateLocal(FactoryList.java:66) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.interposition.FactoryList.recreateLocal(FactoryList.java:113) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple.recreateLocal(TransactionFactoryImple.java:222) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.createHierarchy(ContextManager.java:702) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.currentPIContext(ContextManager.java:609) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.current(ContextManager.java:169) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.context.ContextManager.associate(ContextManager.java:310) [:6.0.0.Final]
        at com.arjuna.ats.internal.jts.OTSImpleManager.current(OTSImpleManager.java:79) [:6.0.0.Final]
        at com.arjuna.ats.internal.jta.transaction.jts.TransactionImple.getTransaction(TransactionImple.java:1129) [:6.0.0.Final]
        at com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.getTransaction(TransactionManagerImple.java:69) [:6.0.0.Final]
        at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.getTransaction(BaseTransactionManagerDelegate.java:95) [:6.0.0.Final]
        at org.hibernate.ejb.transaction.JoinableCMTTransaction.isTransactionInProgress(JoinableCMTTransaction.java:53) [:3.6.0.Final]
        at org.hibernate.ejb.transaction.JoinableCMTTransactionFactory.isTransactionInProgress(JoinableCMTTransactionFactory.java:52) [:3.6.0.Final]
        at org.hibernate.jdbc.JDBCContext.isTransactionInProgress(JDBCContext.java:235) [:3.6.0.Final]
        at org.hibernate.impl.SessionImpl.isTransactionInProgress(SessionImpl.java:546) [:3.6.0.Final]
        at org.hibernate.ejb.AbstractEntityManagerImpl.isTransactionInProgress(AbstractEntityManagerImpl.java:944) [:3.6.0.Final]
        at org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:123) [:3.6.0.Final]
        at org.jboss.jpa.deployment.ManagedEntityManagerFactory$SessionSynchronization.afterCompletion(ManagedEntityManagerFactory.java:138) [:1.0.2-alpha-3]
        at com.arjuna.ats.internal.jta.resources.jts.orbspecific.SynchronizationImple.after_completion(SynchronizationImple.java:139) [:6.0.0.Final]
        at com.arjuna.ArjunaOTS.ManagedSynchronizationPOATie.after_completion(ManagedSynchronizationPOATie.java:58) [:6.0.0.Final]
        at com.arjuna.ArjunaOTS.ManagedSynchronizationPOA._invoke(ManagedSynchronizationPOA.java:53) [:6.0.0.Final]
        at org.jacorb.poa.RequestProcessor.invokeOperation(Unknown Source) [:6.0.0.Final]
        at org.jacorb.poa.RequestProcessor.process(Unknown Source) [:6.0.0.Final]
        at org.jacorb.poa.RequestProcessor.run(Unknown Source) [:6.0.0.Final]

 

17:29:14,694 ERROR [STDERR] org.hibernate.TransactionException: Unable to check transaction status
17:29:14,694 ERROR [STDERR]     at org.hibernate.ejb.transaction.JoinableCMTTransaction.isTransactionInProgress(JoinableCMTTransaction.java:58)
17:29:14,694 ERROR [STDERR]     at org.hibernate.ejb.transaction.JoinableCMTTransactionFactory.isTransactionInProgress(JoinableCMTTransactionFactory.java:52)
17:29:14,694 ERROR [STDERR]     at org.hibernate.jdbc.JDBCContext.isTransactionInProgress(JDBCContext.java:235)
17:29:14,694 ERROR [STDERR]     at org.hibernate.impl.SessionImpl.isTransactionInProgress(SessionImpl.java:546)
17:29:14,694 ERROR [STDERR]     at org.hibernate.ejb.AbstractEntityManagerImpl.isTransactionInProgress(AbstractEntityManagerImpl.java:944)
17:29:14,694 ERROR [STDERR]     at org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:123)
17:29:14,694 ERROR [STDERR]     at org.jboss.jpa.deployment.ManagedEntityManagerFactory$SessionSynchronization.afterCompletion(ManagedEntityManagerFactory.java:138)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jta.resources.jts.orbspecific.SynchronizationImple.after_completion(SynchronizationImple.java:139)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ArjunaOTS.ManagedSynchronizationPOATie.after_completion(ManagedSynchronizationPOATie.java:58)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ArjunaOTS.ManagedSynchronizationPOA._invoke(ManagedSynchronizationPOA.java:53)
17:29:14,694 ERROR [STDERR]     at org.jacorb.poa.RequestProcessor.invokeOperation(Unknown Source)
17:29:14,694 ERROR [STDERR]     at org.jacorb.poa.RequestProcessor.process(Unknown Source)
17:29:14,694 ERROR [STDERR]     at org.jacorb.poa.RequestProcessor.run(Unknown Source)
17:29:14,694 ERROR [STDERR] Caused by: javax.transaction.SystemException: org.omg.CORBA.TRANSACTION_ROLLEDBACK:   vmcid: 0x0  minor code: 0  completed: No
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.getTransaction(TransactionManagerImple.java:77)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.getTransaction(BaseTransactionManagerDelegate.java:95)
17:29:14,694 ERROR [STDERR]     at org.hibernate.ejb.transaction.JoinableCMTTransaction.isTransactionInProgress(JoinableCMTTransaction.java:53)
17:29:14,694 ERROR [STDERR]     ... 12 more
17:29:14,694 ERROR [STDERR] Caused by: org.omg.CORBA.TRANSACTION_ROLLEDBACK:   vmcid: 0x0  minor code: 0  completed: No
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.createHierarchy(Interposition.java:190)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.setupHierarchy(Interposition.java:109)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.interposition.resources.arjuna.Interposition.create(Interposition.java:68)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.interposition.resources.arjuna.InterpositionCreator.recreateLocal(InterpositionCreator.java:48)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.interposition.FactoryElement.recreateLocal(FactoryList.java:66)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.interposition.FactoryList.recreateLocal(FactoryList.java:113)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple.recreateLocal(TransactionFactoryImple.java:222)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.context.ContextManager.createHierarchy(ContextManager.java:702)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.context.ContextManager.currentPIContext(ContextManager.java:609)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.context.ContextManager.current(ContextManager.java:169)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.context.ContextManager.associate(ContextManager.java:310)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jts.OTSImpleManager.current(OTSImpleManager.java:79)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jta.transaction.jts.TransactionImple.getTransaction(TransactionImple.java:1129)
17:29:14,694 ERROR [STDERR]     at com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.getTransaction(TransactionManagerImple.java:69)
17:29:14,694 ERROR [STDERR]     ... 14 more

 

But when tried with default (non-JTS) configuration, these three classes works fine.
So, what's wrong?