DWR / OpenSessionInView „Session ist geschlossen!“ In Java und Hibernate
Frage
Sie sagen, dass eine geschlossene Sitzung in Hibernate und Webapp mit Ajax ist ein häufiges Problem mit Java und Feder so muss ich die OpenSessionInViewInFilter in der web.xml wie folgt festgelegt
<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>
Aber auch mit, dass ich die „Session ist geschlossen“ Hibernate Ausnahme, wenn ich versuche, Hibernate Criteria api zu verwenden, so habe ich versucht, eine andere Feder Art und Weise mit 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">
und der Interceptor
<bean id="openSessionInViewInterceptor"class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
Same "Session geschlossen" -Problem. Bitte helfen Sie mir hier. Ich bin neu in Java so Ihre Hilfe wird sehr geschätzt.
Ich bin derzeit innerhalb Maven Jetty Plugin, Version 6.1.10.
Lösung
Stellen Sie sicher, dass Sie die Daten nicht über verschiedene Threads übergeben. Dies ist besonders einfach, wenn Sie verzögertes Laden (überprüfen Sie Ihre Hibernate Mapping-Standardeinstellung) verwenden.
Sagen Sie, wenn ein Unternehmen Y faul geladen ist und von Einheit X (via Hibernate) verwiesen und Sie passieren X von einem Thread zum anderen und in diesem anderen Thread Sie tun x.getY (), sind Sie in Schwierigkeiten.
Andere Tipps
es gefunden. Ich brauche @Transactional in meiner Dienstklasse zu erklären.