DWR / OpenSessionInView & # 8220; ¡La sesión está cerrada! & # 8221; en Java e Hibernate

StackOverflow https://stackoverflow.com/questions/1807164

  •  05-07-2019
  •  | 
  •  

Pregunta

Dicen que una sesión cerrada en hibernación y aplicación web con ajax es un problema común con java y spring, así que tengo que configurar OpenSessionInViewInFilter en el web.xml como este

<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>
<filter>
    <filter-name>springFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>springFilter</filter-name>
    <url-pattern>/dwr/*</url-pattern>
</filter-mapping>

Pero incluso con eso, obtengo que " La sesión está cerrada " Excepción de hibernación cuando trato de usar la API de Hibernate Criteria, por lo que probé de otra manera utilizando OpenSessioninViewInterceptor

<bean id="urlMapping"
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="alwaysUseFullPath" value="false"/>
     <property name="mappings">
            <props>
                <prop key="*">dwrController</prop>
            </props>
    </property>
    <property name="interceptors">

           

y el interceptor

<bean id="openSessionInViewInterceptor"class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">

               

La misma sesión de " está cerrada " problema. Por favor ayúdame aquí. Soy nuevo en Java por lo que su ayuda es muy apreciada.

Actualmente estoy ejecutando dentro del complemento de embarcadero de Maven, versión 6.1.10.

¿Fue útil?

Solución

Asegúrate de no pasar los datos a través de diferentes hilos. Esto es especialmente fácil si usa la carga diferida (verifique los valores predeterminados de su hibernación).

Diga si una entidad Y está cargada de forma perezosa y se hace referencia a ella desde la entidad X (a través de Hibernate) y pasa X de un hilo a otro y en este otro hilo hace x.getY (), está en problemas.

Otros consejos

Lo encontré. Necesito declarar @Transactional en mi clase de servicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top