> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> Sent: Wednesday, December 16, 2009 1:07 PM
> To: [email protected]
> Subject: Re: Get "You cannot access the EntityTransaction when using
> managed transactions." when I implement @Transactional methods with
> OpenJPA
> 
> Hi,
> 
> There are two transaction models you can use in a Java EE container.
> If you use the JTA datasource, you need to use the Java EE transaction
> manager. If you use only a non-JTA datasource, you can manage the
> transactions using EntityTransaction.

I'm not really sure exactly how to create a non-jta datasource in this
environment.  The OpenJPA doc doesn't really explain this.  When
creating a datasource in WebLogic, I see options for transaction
settings, but I don't see a clear indication of JTA or non-JTA.  There
is a "supports global transactions" option, which makes it XA (or not),
but I don't think that's exactly the same thing.

> I don't know the details with regard to integrating with Spring, but
> you might be ok with just using the non-JTA datasource in your
> environment. If you use the JTA datasource, you need to use the
> managed transaction interface (I recall you can look this up as a JNDI
> resource).
> 
> Craig
> 
> On Dec 16, 2009, at 8:45 AM, KARR, DAVID (ATTCINW) wrote:
> 
> > I have an app using Spring 2.5.6, OpenJPA 1.2.1, and WebLogic
> > 10.3.2.  I
> > specified a JTA datasource in the persistence.xml.  I have a Spring
> > controller that calls my DAO class which uses the EntityManager.
> This
> > is working ok with respect to transactions.  As my app is only going
> > to
> > be reading the database, I would think I wouldn't need transactions.
> > However, because of one problem I'm having with traversing an
> > association path, I thought I would try to implement a transactional
> > service layer, and do the association walking within that layer.
> >
> > So, I added a class with a "@Transactional" method and put that in
> > between the Controller and the DAO.  Now, I'm seeing the following
> > exception stack trace:
> >
> > --------------------
> > Caused by:
> > org.springframework.transaction.CannotCreateTransactionException:
> > Could
> > not open JPA EntityManager for transaction; nested exception is
> > <openjpa-1.2.1-r752877:753278 nonfatal user error>
> > org.apache.openjpa.persistence.InvalidStateException: You cannot
> > access
> > the EntityTransaction when using managed transactions.
> >     at
> > org
> >
.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransaction
> > Manager.java:375)
> >     at
> > org
> >
.springframework.transaction.support.AbstractPlatformTransactionManag
> > er.getTransaction(AbstractPlatformTransactionManager.java:374)
> >     at
> > org
> >
.springframework.transaction.interceptor.TransactionAspectSupport.cre
> > ateTransactionIfNecessary(TransactionAspectSupport.java:263)
> >     at
> > org
> >
.springframework.transaction.interceptor.TransactionInterceptor.invok
> > e(TransactionInterceptor.java:101)
> >     at
> > org
> >
.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
> > lectiveMethodInvocation.java:171)
> >     at
> > org.springframework.aop.framework.Cglib2AopProxy
> > $DynamicAdvisedIntercept
> > or.intercept(Cglib2AopProxy.java:635)
> >     at
> > com.att.ecom.dynamiccontent.service.CatalogService$$EnhancerByCGLIB$
> > $5a7
> > c3444.retrieveCatalogTree(<generated>)
> >     at
> > com.att.ecom.dynamiccontent.content.Content.getCatalog(Content.java:
> > 35)
> > --------------------
> 
> Craig L Russell
> Architect, Sun Java Enterprise System http://db.apache.org/jdo
> 408 276-5638 mailto:[email protected]
> P.S. A good JDO? O, Gasp!

Reply via email to