2009-12-07 3 views
0

У меня тоже такая же ситуация, и я настроил OpenSessionInViewFilter, как это в моем web.xml.Сессия сеанса Spring Hibernates с запросом http

<!-- Hibernates session management for request --> 
<filter> 
    <filter-name>hibReqSessionFilter</filter-name> 
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>hibReqSessionFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

, но до сих пор им получать ту же ошибку

[12/7/09 4:22:17:968 EST] 0000001e WebApp  E [Servlet Error]-[springweb]: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132) 
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174) 
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) 
at com.moodys.mspg.model.MspgLkpAnalyst_$$_javassist_5.getAnalystId(MspgLkpAnalyst_$$_javassist_5.java) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:615) 
at org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:314) 
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) 
at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263) 
at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190) 
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:754) 
at com.ibm._jsp._deallist._jspx_meth_c_out_10(_deallist.java:302) 
at com.ibm._jsp._deallist._jspx_meth_c_forEach_0(_deallist.java:375) 
at com.ibm._jsp._deallist._jspService(_deallist.java:97) 
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) 
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226) 
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:285) 
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321) 
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236) 
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257) 
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145) 
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440) 
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267) 
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815) 
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461) 
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267) 
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 

если я скостить этот фильтр и использовать ленивый = «ложь» в моем ORM XMLs это работает, как ожидают.

Но я хочу, чтобы вещи были ленивыми. Может ли тело помочь мне в получении этого achived

большое спасибо заранее

+0

Не могли бы вы разместить соответствующий код (особенно контроллер)? –

+0

Опубликовать больше кода! Что-то закрывает вашу сессию ... –

ответ

1

ли вы загрузить объект в одной и той же сессии/в течение той же просьбой? Если нет, вы пытаетесь лениво загрузить коллекцию на отдельном объекте (т. Е. Сеанс сущности закрыт), что приведет к LazyInitializationException.

Если объект, который вы показываете, был загружен во время предыдущего запроса, вы должны иметь возможность перезагрузить его из базы данных, чтобы затем связать его с текущим сеансом Hibernate.

(За короткое объяснение управляемых/отдельных лиц, см мой answer to this unrelated question.)

Редактировать на основе комментариев: Hm, в этом случае, моя магия заканчивается здесь. Исключение становится ясным - в то время, когда вы пытаетесь загрузить коллекцию, нет открытого сеанса. Если вы действительно не храните объект в сеансе где-то, возможно, потому, что вы проходите цикл POST/redirect/GET, тогда я могу только посоветовать вам пройти через OpenSessionInViewFilter.doFilterInternal() с отладчиком, чтобы увидеть, что там происходит. Удачи!

+0

Спасибо за ваш ответ Хеннинг. Это создавало проблему только для одного запроса. Я должен проецировать один столбец, который существует на одном-единственном корабле-реаниматоре с моей сущностью (что вызывает эту ошибку). Если я intorduce ленивый = «ложный» оператор, он работает. Но я хочу, чтобы он ленился. Пожалуйста, помогите – Shiv

0

Весна будет искать фабрику сеансов в контексте вашего приложения, по умолчанию имя sessionFactory. Пожалуйста, настройте имя для OpenSessionInViewFilter, если вы не используете имя по умолчанию.

Смежные вопросы