[jboss-user] [JBoss/Spring Integration] - no transaction is in progress exception

springfans do-not-reply at jboss.com
Wed Mar 26 03:58:47 EDT 2008


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




More information about the jboss-user mailing list