简体   繁体   English

例外-非交易

[英]Exception - non-transactional

I was question: Java+Spring: SEVERE Servletservice Realy thanks for help.I have another problem: 我当时的问题是: Java + Spring:SEVERE Servletservice非常感谢您的帮助。我还有另一个问题:

Jan 25, 2013 8:10:20 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/test] threw exception [Request processing failed; nested exception is org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here] with root cause
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
    at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
    at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:622)
    at pl.ivmx.contact.dao.ContactDAOImpl.listContact(ContactDAOImpl.java:25)
    at pl.ivmx.contact.service.ContactServiceImpl.listContact(ContactServiceImpl.java:25)
    at pl.ivmx.contact.controller.ContactController.listContacts(ContactController.java:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

I change return "/contact" to return "contact" and i put <context:component-scan base-package="pl.ivmx.contact" /> from applicationContext.xml to dispatcher-servlet.xml . 我将返回“ / contact”更改为返回“ contact”,然后将<context:component-scan base-package="pl.ivmx.contact" />applicationContext.xml <context:component-scan base-package="pl.ivmx.contact" />dispatcher-servlet.xml中 Can somebody help me again ? 有人可以再帮我一次吗?

You have <bean id="contactService" class="pl.ivmx.contact.service.ContactServiceImpl"> </bean> in the servlet context - you should move your service class to the root web application context (where <tx:annotation-driven> and the transaction manager are/should be declared). 您在servlet上下文中具有<bean id="contactService" class="pl.ivmx.contact.service.ContactServiceImpl"> </bean> -您应将服务类移至根Web应用程序上下文(其中<tx:annotation-driven>和事务管理器)。

Spring AOP-based/Bean postprocessor base tools like Global Method Security, Transactions, Caching, PlaceholderConfigurers(things that process ${..} placeholders) work on per container basis. 基于Spring AOP / Bean后处理器的工具,如全局方法安全性,事务,缓存,PlaceholderConfigurers(处理${..}占位符的事物)基于每个容器工作。 As the ContactServiceImpl bean is declared in the dispatcher servlet context, it's not being wrapped with a proxy, so the @Transactional is ignored. 由于ContactServiceImpl bean是在调度程序servlet上下文中声明的,因此它没有被代理包装,因此@Transactional被忽略。

In other words you should not place your DAO/Service classes into dispatcher-servlet.xml. 换句话说,您不应将DAO / Service类放入dispatcher-servlet.xml中。

See Difference between applicationContext.xml and spring-servlet.xml in Spring Framework 请参阅Spring Framework中applicationContext.xml和spring-servlet.xml之间的区别

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM