RESOLVIDO: Spring 2.5 + Hibernate3/JPA + OpenEntityManagerInViewFilter = LazyInitializationException

5 respostas
rogerio.alcantara

Boa tarde galera do GUJ,

Mal fecho um tópico já estou abrindo outro! rs..

A dúvida agora é pelo famigerado: LazyInitializationException.

Ele é disparado durante a execução de uma jsp, mesmo eu configurando o OpenEntityManagerInViewFilter. =/

Bom, contextualizando: possuo 3 projetos:

com.xpto.util - utilitários gerais - StringUtils/GenericDAO e etc. - referencia para Spring/Hibernate e etc.

e

com.xpto.core - regras de negocio, services/entities/daos e etc. - referencia com.xpto.util

e

com.xpto.site - camada de apresentação - vraptor3/tiles2/jstl e etc - referencia com.xpto.core

este possui o seu applicationContext:
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
           <property name="persistenceUnitName" value="persistence-unit"/>
        </bean>

        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>    
        <tx:annotation-driven transaction-manager="transactionManager" />

        <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

        <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>    

        <context:annotation-config />

        <context:component-scan base-package="com.xpto.*"/>
</beans>
e também possui o seu web.xml com o OpenEntityManagerInViewFilter configurado:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xmlns="http://java.sun.com/xml/ns/javaee" 
		 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
		 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
		 id="WebApp_ID"
		 version="2.5">

	<display-name>com.xpto.site</display-name>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

	<!-- spring configuration -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<filter>
		<filter-name>openEntityManagerInView</filter-name>
		<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>openEntityManagerInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter>
	    <filter-name>encoding-filter</filter-name>
	    <filter-class>
	        org.springframework.web.filter.CharacterEncodingFilter
	    </filter-class>
	    <init-param>
	        <param-name>encoding</param-name>
	        <param-value>UTF-8</param-value>
	    </init-param>
	</filter>
	
	<filter-mapping>
	    <filter-name>encoding-filter</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- /spring configuration -->

	<!-- tiles configuration -->
	<servlet>
		<servlet-name>TilesServlet</servlet-name>
		<servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
		<init-param>
			<param-name>org.apache.tiles.factory.TilesContainerFactory.MUTABLE</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<!-- /tiles configuration -->

	<!-- vraptor configuration -->
	<filter>
	    <filter-name>vraptor</filter-name>
	    <filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>

	<filter-mapping>
	    <filter-name>vraptor</filter-name>
	    <url-pattern>/*</url-pattern>
	    <dispatcher>FORWARD</dispatcher>
	    <dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	<!-- vraptor configuration -->

</web-app>
Bom, um último adendo, é que todas as Minhas DAO's extendem uma daogenerica:
@Transactional
public abstract class GenericHibernateDAOImpl<TYPE, ID extends Serializable> implements GenericDAO<TYPE, ID> {

	private Class<TYPE> persistentClass;

	@PersistenceContext
	private EntityManager entityManager;

	@SuppressWarnings("unchecked")
	public GenericHibernateDAOImpl() {

		ParameterizedType paramType = null;
		Type type = getClass().getGenericSuperclass();

		if (type instanceof ParameterizedType) {

			paramType = (ParameterizedType) type;

		} else {

			paramType = (ParameterizedType) getClass().getSuperclass().getGenericSuperclass();
		}

		if (paramType.getActualTypeArguments().length == 2) {

			if (paramType.getActualTypeArguments()[1] instanceof TypeVariable) {

				throw new IllegalArgumentException("Could not persistent entity class using reflection");

			} else {

				this.persistentClass = (Class<TYPE>) paramType.getActualTypeArguments()[1];
			}

		} else {

			this.persistentClass = (Class<TYPE>) paramType.getActualTypeArguments()[0];
		}
	}


	public void delete(final TYPE entity) {

		this.getEntityManager().remove(entity);
	};

	public TYPE loadById(final ID id) {

		return (TYPE) this.getEntityManager().find(this.getEntityClass(), id);
	};

	@SuppressWarnings("unchecked")
	@Override
	public List<TYPE> listAll() {

		return this.getSession()
						.createCriteria(this.getEntityClass()) 
								.list();
	}

	public TYPE saveOrUpdate(final TYPE entity) {

		final TYPE obj = (TYPE)this.getEntityManager().merge(entity);

		return obj;
	};

	protected EntityManager getEntityManager() {

		return this.entityManager;
	}

	protected Class<TYPE> getEntityClass() {

		return this.persistentClass;
	}

	protected Session getSession() {

		Session session = null;

		if (this.entityManager.getDelegate() instanceof EntityManagerImpl) {

		    EntityManagerImpl entityManagerImpl = (EntityManagerImpl) this.entityManager.getDelegate();  
		    session = entityManagerImpl.getSession();

		} else {

		    session = (Session) this.entityManager.getDelegate();  
		}

		return session;
	}

	@Override
	public void flush() {

		this.getEntityManager().flush();
	}
}
O mais curioso, é que, segundo o DEBUG do Spring, o fechamento do JPA EntityManager só acontece depois que dá o erro! Segue trecho do stacktrace em modo DEBUG:
SITE: 14:18:18,059 DEBUG [TransactionSynchronizationManager] Initializing transaction synchronization
SITE: 14:18:18,059 DEBUG [TransactionSynchronizationManager] Retrieved value [org.springframework.orm.jpa.EntityManagerHolder@12fb24c] for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@d3cae0] bound to thread [http-8081-2]
SITE: 14:18:18,059 DEBUG [TransactionSynchronizationManager] Retrieved value [org.springframework.orm.jpa.EntityManagerHolder@12fb24c] for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@d3cae0] bound to thread [http-8081-2]
SITE: 14:18:18,061 DEBUG [JpaTransactionManager] Triggering beforeCommit synchronization
SITE: 14:18:18,061 DEBUG [JpaTransactionManager] Triggering beforeCompletion synchronization
SITE: 14:18:18,061 DEBUG [JpaTransactionManager] Initiating transaction commit
SITE: 14:18:18,062 DEBUG [JpaTransactionManager] Committing JPA transaction on EntityManager [org.hibernate.ejb.EntityManagerImpl@1aea6e2]
SITE: 14:18:18,071 DEBUG [JpaTransactionManager] Triggering afterCommit synchronization
SITE: 14:18:18,071 DEBUG [JpaTransactionManager] Triggering afterCompletion synchronization
SITE: 14:18:18,071 DEBUG [TransactionSynchronizationManager] Clearing transaction synchronization
SITE: 14:18:18,071 DEBUG [JpaTransactionManager] Not closing pre-bound JPA EntityManager after transaction
SITE: 14:18:18,071 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'outjectResult'
SITE: 14:18:18,073 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultTypeNameExtractor'
SITE: 14:18:18,073 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'outjectResult'
SITE: 14:18:18,073 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'downloadInterceptor'
SITE: 14:18:18,074 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletResponseProvider'
SITE: 14:18:18,075 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'downloadInterceptor'
SITE: 14:18:18,075 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'forwardToDefaultViewInterceptor'
SITE: 14:18:18,076 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'forwardToDefaultViewInterceptor'
SITE: 14:18:18,077 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultPageResult'
SITE: 14:18:18,077 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider'
SITE: 14:18:18,078 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletResponseProvider'
SITE: 14:18:18,079 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultPathResolver'
SITE: 14:18:18,079 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultFormatResolver'
SITE: 14:18:18,080 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider'
SITE: 14:18:18,080 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultAcceptHeaderToFormat'
SITE: 14:18:18,080 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultFormatResolver'
SITE: 14:18:18,081 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultPathResolver'
SITE: 14:18:18,081 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'objenesisProxifier'
SITE: 14:18:18,081 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultPageResult'
SITE: 14:18:18,155 ERROR [LazyInitializationException] failed to lazily initialize a collection of role: com.xpto.domain.model.entity.Employee.contacts, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.xpto.domain.model.entity.Employee.contacts, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
	at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
	at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:348)
	at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:224)
	at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:155)
	at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256)
	at org.apache.jsp.WEB_002dINF.jsp.user.contacts_jsp._jspx_meth_c_005fforEach_005f0(contacts_jsp.java:125)
	at org.apache.jsp.WEB_002dINF.jsp.user.contacts_jsp._jspService(contacts_jsp.java:75)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
	at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:650)
	at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:644)
	at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103)
	at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96)
	at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
	at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
	at org.apache.tiles.impl.BasicTilesContainer.renderContext(BasicTilesContainer.java:179)
	at org.apache.tiles.template.InsertTemplateModel.end(InsertTemplateModel.java:101)
	at org.apache.tiles.jsp.taglib.InsertTemplateTag.doTag(InsertTemplateTag.java:255)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp._jspx_meth_tiles_005finsertTemplate_005f2(profile_jsp.java:155)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp.access$4(profile_jsp.java:144)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp$Helper.invoke1(profile_jsp.java:239)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp$Helper.invoke(profile_jsp.java:409)
	at org.apache.tiles.jsp.context.JspUtil.evaluateFragmentAsString(JspUtil.java:297)
	at org.apache.tiles.jsp.taglib.PutAttributeTag.doTag(PutAttributeTag.java:256)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp._jspx_meth_tiles_005fputAttribute_005f1(profile_jsp.java:123)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp.access$1(profile_jsp.java:109)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp$Helper.invoke0(profile_jsp.java:217)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp$Helper.invoke(profile_jsp.java:406)
	at org.apache.tiles.jsp.context.JspUtil.evaluateFragment(JspUtil.java:279)
	at org.apache.tiles.jsp.taglib.InsertTemplateTag.doTag(InsertTemplateTag.java:254)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp._jspx_meth_tiles_005finsertTemplate_005f0(profile_jsp.java:84)
	at org.apache.jsp.WEB_002dINF.jsp.user.profile_jsp._jspService(profile_jsp.java:57)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:80)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:67)
	at br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:64)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at com.xpto.site.util.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:69)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
SITE: 14:18:18,183 DEBUG [RequestContextListener] Cleared thread-bound request context: [VRaptorRequest org.apache.catalina.connector.RequestFacade@1c7c4c]
SITE: 14:18:18,183 DEBUG [TransactionSynchronizationManager] Removed value [org.springframework.orm.jpa.EntityManagerHolder@12fb24c] for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@d3cae0] from thread [http-8081-2]
SITE: 14:18:18,183 DEBUG [OpenEntityManagerInViewFilter] Closing JPA EntityManager in OpenEntityManagerInViewFilter
SITE: 14:18:18,183 DEBUG [EntityManagerFactoryUtils] Closing JPA EntityManager
EBUG [RequestContextListener] Cleared thread-bound request context: [VRaptorRequest org.apache.catalina.connector.RequestFacade@1c7c4c]
SITE: 14:18:18,183 DEBUG [TransactionSynchronizationManager] Removed value [org.springframework.orm.jpa.EntityManagerHolder@12fb24c] for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@d3cae0] from thread [http-8081-2]
SITE: 14:18:18,183 DEBUG [OpenEntityManagerInViewFilter] Closing JPA EntityManager in OpenEntityManagerInViewFilter
SITE: 14:18:18,183 DEBUG [EntityManagerFactoryUtils] Closing JPA EntityManagerEBUG [RequestContextListener] Cleared thread-bound request context: [VRaptorRequest org.apache.catalina.connector.RequestFacade@1c7c4c]
SITE: 14:18:18,183 DEBUG [TransactionSynchronizationManager] Removed value [org.springframework.orm.jpa.EntityManagerHolder@12fb24c] for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@d3cae0] from thread [http-8081-2]
SITE: 14:18:18,183 DEBUG [OpenEntityManagerInViewFilter] Closing JPA EntityManager in OpenEntityManagerInViewFilter
SITE: 14:18:18,183 DEBUG [EntityManagerFactoryUtils] Closing JPA EntityManager
Alguém tem alguma dica de pq mesmo com o OpenEntityManagerInViewFilter configurado eu recebo o LazyInitializationException? Será que há alguma configuração errada?

Agradeço antecipadamente.

5 Respostas

D

Tenta assim:

@PersistenceContext(type=PersistenceContextType.EXTENDED).

Caso funcione eu sugiro ler a documentação para os impactos desta alteração.

rogerio.alcantara

Faaala Daniel!

Realmente funcionou!!!

Vou dar uma olhada na documentação como vc sugeriu!

Muito obrigado pela atenção

D

De nada, depois você aqui e me conta dos impactos e por favor coloca resolvido neste tópico caso funcione.

rogerio.alcantara

Aproveitando, uma pergunta meio Hommer! (huahauh)

Como eu coloco um tópico como Solved? Não acho nenhum botão! (rs…)

Valews!

D

Vai no botão editar do seu primeiro post e coloca na frente do título ‘resolvido’.

Por favor.

Criado 22 de setembro de 2010
Ultima resposta 22 de set. de 2010
Respostas 5
Participantes 2