Pergunta

Eles dizem que uma sessão fechada em hibernação e webapp com ajax é um problema comum com java e na primavera, por isso tenho para definir o OpenSessionInViewInFilter no 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>

Mas mesmo com isso, fico com a "sessão é fechada" hibernar exceção quando eu tento usar Hibernate Criteria API, então eu tentei outra maneira primavera usando 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">

eo interceptor

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

Same "Sessão está fechado" problema. Por favor me ajude aqui. Eu sou novo em Java para que sua ajuda é muito apreciado.

Atualmente estou executando dentro do plugin cais do Maven, versão 6.1.10.

Foi útil?

Solução

Certifique-se de que você não passar os dados entre diferentes threads. Isto é especialmente fácil se você usar o carregamento lento (verificar seus padrões de mapeamento de hibernação).

Say se uma entidade Y é preguiçoso carregado e é referenciado a partir entidade X (via Hibernate) e você passar X de um segmento para outro e neste outro segmento que você faz x.getY (), você está em apuros.

Outras dicas

A ele. Preciso declarar @Transactional na minha classe de serviço.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top