Domanda

Dicono che una sessione chiusa in ibernazione e webapp con Ajax sia un problema comune con Java e Spring, quindi devo impostare OpenSessionInViewInFilter in web.xml in questo modo

<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>

Ma nonostante ciò, ottengo la "quotazione della sessione chiusa" eccezione di ibernazione quando provo a utilizzare Hibernate Criteria api, quindi ho provato un altro modo di 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">

           

e l'intercettore

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

               

Stessa sessione "chiusa". problema. Per favore, aiutatemi qui. Sono nuovo in Java, quindi il tuo aiuto è molto apprezzato.

Attualmente sto eseguendo il plugin molo di Maven, versione 6.1.10.

È stato utile?

Soluzione

Assicurati di non passare i dati tra thread diversi. Ciò è particolarmente semplice se si utilizza il caricamento lento (controllare le impostazioni predefinite di mapping ibernazione).

Dì se un'entità Y è caricata in modo pigro e fa riferimento dall'entità X (via Hibernate) e passi X da un thread all'altro e in questo un altro thread fai x.getY (), sei nei guai.

Altri suggerimenti

Trovato. Devo dichiarare @Transactional nella mia classe di servizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top