4 Replies Latest reply on Apr 10, 2012 3:05 AM by lpham1

    JTS version of JBossTS with Hibernate/JPA

    kzuno

      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?