I'm using Spring 2.5, Hibernate, JPA and WLS9.2, and I'm having some problems 
using the @Service annotation. I have a service implementation class annotated 
with @Service, the service class has a method called saveUser. Inside the 
saveUser method I do jpaTemplate.persists and jpaTemplate.flush . When flush is 
called, "InvalidDataAccessApiUsageException: no transaction is in progress" 
gets thrown.

Here's the stack trace:
--------------------------

严重: org.springframework.dao.InvalidDataAccessApiUsageException: no 
transaction is in progress; nested exception is 
javax.persistence.TransactionRequiredException: no transaction is in progress
  | javax.faces.el.EvaluationException: 
org.springframework.dao.InvalidDataAccessApiUsageException: no transaction is 
in progress; nested exception is 
javax.persistence.TransactionRequiredException: no transaction is in progress
  |     at 
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
  |     at 
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
  |     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
  |     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
  |     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
  |     at 
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
  |     at 
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
  |     at 
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
  |     at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
  |     at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
  |     at 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
  |     at 
org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
  |     at 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | ... 37 more
  | Caused by: javax.persistence.TransactionRequiredException: no transaction 
is in progress
  |     at 
org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:294)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at 
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:346)
  |     at $Proxy112.flush(Unknown Source)
  |     at 
org.springframework.orm.jpa.JpaTemplate$8.doInJpa(JpaTemplate.java:283)
  |     at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:185)
  |     ... 76 more
  | 
/WEB-INF/components.xml:
<core:manager conversation-timeout="120000" concurrent-request-timeout="500" 
conversation-id-parameter="cid" />
  |     <core:init transaction-management-enabled="true" debug="true" />
  |     <transaction:no-transaction />
  |     <spring:context-loader />
/WEB-INF/applicationContext.xml
<jee:jndi-lookup id="fw.defaultDataSource" jndi-name="jdbc/crm" />
  | <bean id="transactionManager" 
class="org.springframework.transaction.jta.WebLogicJtaTransactionManager" />
  | <tx:annotation-driven transaction-manager="transactionManager" />
  | <bean 
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"></bean>
  | <bean id="fw.jpaTemplate" class="org.springframework.orm.jpa..JpaTemplate">
  |             <property name="entityManagerFactory" ref="fw.defaultEMF" />
  |     </bean>
  | <bean id="fw.defaultEMF" 
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  |             <property name="dataSource" ref="fw.defaultDataSource" />
  |             <property name="jpaVendorAdapter">
  |                     <bean 
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  |                             <property name="database" value="ORACLE" />
  |                             <property name="showSql" value="true" />
  |                     </bean>
  |             </property>
  |             <property name="loadTimeWeaver">
  |                     <bean 
class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"
 />
  |             </property>
  |             <property name="persistenceUnitName" 
value="fw.defaultPersistenceUnit" />
  |     </bean>
RegisterAction.java
@In("#{userService}")
  |     private UserService userService;
  | public void register()    {
  | userService.createUser(user);
  | }
  | }
UserService.java
@Autowired
  | @Qualifier("fw.jpaTemplate")
  | org.springframework.orm.jpa.JpaTemplate jpaTemplate;
  | 
  | @Transactional
  |     public void createUser(final User user) throws ValidationException {
  | jpaTemplate.persist(user);
  | jpaTemplate.flush();
  | }
  | 
User.java
@Entity
  | @Name("user")
  | @Scope(SESSION)
  | @Table(name="Customer")
  | public class User implements Serializable
  | {....}
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4138873#4138873

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4138873

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to