2013-05-17 37 views
0

你好我得到下面提到的異常而持續的數據獲取異常而持續的數據

18:23:50,385 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/IOCS].[mvc-dispatcher]] (http-localhost-127.0.0.1-8080-2) Servlet.service() for servlet mvc-dispatcher threw exception: javax.persistence.TransactionRequiredException: no transaction is in progress 
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:970) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_17] 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) [org.springframework.orm-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at com.sun.proxy.$Proxy26.flush(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_17] 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) [org.springframework.orm-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at com.sun.proxy.$Proxy26.flush(Unknown Source) 
at com.web.iocs.dao.impl.LoginDAOImpl.inserUserDetails(LoginDAOImpl.java:63) [classes:] 
at com.web.iocs.bo.impl.LoginBOImpl.insertUserDetails(LoginBOImpl.java:38) [classes:] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_17] 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) [org.springframework.aop-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196) [org.springframework.aop-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at com.sun.proxy.$Proxy29.insertUserDetails(Unknown Source) 
at com.web.iocs.action.LoginAction.login(LoginAction.java:53) [classes:] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_17] 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17] 
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) [org.springframework.web-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) [org.springframework.web.servlet-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) [org.springframework.web.servlet-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:774) [org.springframework.web.servlet-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) [org.springframework.web.servlet-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) [org.springframework.web.servlet-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) [org.springframework.web.servlet-3.0.3.RELEASE.jar:3.0.3.RELEASE] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] 
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] 
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] 
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_17] 

MVC-調度員的servlet看起來像這樣

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" 
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

<context:annotation-config /> 
<context:component-scan base-package="com.web.iocs" /> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass"> 
     <value>org.springframework.web.servlet.view.tiles2.TilesView</value>  
    </property> 
</bean> 

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">  
    <property name="definitions"> 
     <list>    
      <value>/WEB-INF/tiles.xml</value>   
     </list>  
    </property> 
</bean> 



<tx:jta-transaction-manager transaction-manager="transactionManager" /> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name='entityManagerFactory' ref='entityManagerFactory' /> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 
    </property> 
</bean> 

<tx:annotation-driven /> 

<bean 
    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"> 
    <property name="persistenceUnits"> 
     <map> 
      <entry key="OCSPersistenceUnit" value="persistence/OCSPersistenceUnit" /> 
     </map> 
    </property> 
</bean> 

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="OCSPersistenceUnit" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="false" /> 
     </bean> 
    </property> 
</bean> 

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="classpath:messages" /> 
    <property name="defaultEncoding" value="UTF-8" />  
</bean> 

DAO文件有些像這樣

/** 
* 
*/ 
package com.web.iocs.dao.impl; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 
import org.apache.log4j.Logger; 
import org.springframework.stereotype.Repository; 
import com.web.iocs.dao.LoginDAO; 
import com.web.iocs.model.UserDetails; 
import com.web.iocs.model.UserModel; 


/** 
* @author 
* 
*/ 
@Repository 
public class LoginDAOImpl implements LoginDAO { 

private static final Logger LOG = Logger.getLogger(LoginDAOImpl.class); 


@PersistenceContext(unitName="OCSPersistenceUnit") 
private EntityManager entityManager; 



/* (non-Javadoc) 
* @see com.web.iocs.dao.LoginDAO#getUserDetails(com.web.iocs.model.UserModel) 
*/ 
public UserModel getUserDetails(UserModel userModel) { 

    /*LOG.info("IN getUserDetails() METHOD"); 

    //Session session = sessionFactory.getCurrentSession(); 

    //Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 

    session.beginTransaction(); 

    userModel=(UserModel)session.get("from userModel", userModel.getUserName()); 

    LOG.info(userModel.toString()); 

    session.getTransaction().commit(); 

    LOG.info("OUT getUserDetails() METHOD");*/ 

    return userModel; 
} 

public int inserUserDetails(UserDetails userDetails) { 
    LOG.info("Entity Manager "+getEntityManager().isOpen()); 
    getEntityManager().persist(userDetails); 
    getEntityManager().flush(); 
    LOG.info("User details persisted"); 

    return 1; 
} 

public EntityManager getEntityManager() { 
    return entityManager; 
} 

public void setEntityManager(EntityManager entityManager) { 
    this.entityManager = entityManager; 
} 
    } 

我想使用spring事務管理來保存數據。 由於提前

回答

1

嘗試添加@Transactional上述方法LoginDAOImpl.insertUserDetails(UserDetails userDetails)

+0

謝謝亞歷它的工作!我之前在[link](@ service)層的insertUserDetails方法之上添加了[link](@Transactional)。 –