Как реализовать перехватчик сеанса/транзакции Hibernate, чтобы избежать LazyInitializationException, когда результат JSOJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать перехватчик сеанса/транзакции Hibernate, чтобы избежать LazyInitializationException, когда результат JSO

Сообщение Anonymous »

Я пытаюсь реализовать перехватчик сеанса/транзакции Hibernate, чтобы избежать LazyInitializationException в результатах JSON в Struts 2, но получаю следующее исключение:

Код: Выделить всё

245968 [http-8080-7] ERROR util.HibernateEndTransInterceptor  - org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:  j a v a . l a n g . r e f l e c t . I n v o c a t i o n T a r g e t E x c e p t i o n < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N W r i t e r . b e a n ( J S O N W r i t e r . j a v a : 2 3 8 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N W r i t e r . p r o c e s s C u s t o m ( J S O N W r i t e r . j a v a : 1 7 1 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N W r i t e r . p r o c e s s ( J S O N W r i t e r . j a v a : 1 6 1 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N W r i t e r . v a l u e ( J S O N W r i t e r . j a v a : 1 2 7 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N W r i t e r . w r i t e ( J S O N W r i t e r . j a v a : 9 5 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N U t i l . s e r i a l i z e ( J S O N U t i l . j a v a : 1 1 6 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N R e s u l t . c r e a t e J S O N S t r i n g ( J S O N R e s u l t . j a v a : 1 9 6 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . j s o n . J S O N R e s u l t . e x e c u t e ( J S O N R e s u l t . j a v a : 1 7 0 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . e x e c u t e R e s u l t ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 3 7 4 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . i n v o k e ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 2 7 8 ) < b r   / >         a t   u t i l . H i b e r n a t e E n d T r a n s I n t e r c e p t o r . i n t e r c e p t ( H i b e r n a t e E n d T r a n s I n t e r c e p t o r . j a v a : 5 5 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . i n v o k e ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 2 4 9 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . i n t e r c e p t o r . d e b u g g i n g . D e b u g g i n g I n t e r c e p t o r . i n t e r c e p t ( D e b u g g i n g I n t e r c e p t o r . j a v a : 2 5 6 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . i n v o k e ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 2 4 9 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . i n t e r c e p t o r . D e f a u l t W o r k f l o w I n t e r c e p t o r . d o I n t e r c e p t ( D e f a u l t W o r k f l o w I n t e r c e p t o r . j a v a : 1 7 6 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . i n t e r c e p t o r . M e t h o d F i l t e r I n t e r c e p t o r . i n t e r c e p t ( M e t h o d F i l t e r I n t e r c e p t o r . j a v a : 9 8 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . i n v o k e ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 2 4 9 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . v a l i d a t o r . V a l i d a t i o n I n t e r c e p t o r . d o I n t e r c e p t ( V a l i d a t i o n I n t e r c e p t o r . j a v a : 2 6 5 ) < b r   / >         a t   o r g . a p a c h e . s t r u t s 2 . i n t e r c e p t o r . v a l i d a t i o n . A n n o t a t i o n V a l i d a t i o n I n t e r c e p t o r . d o I n t e r c e p t ( A n n o t a t i o n V a l i d a t i o n I n t e r c e p t o r . j a v a : 6 8 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . i n t e r c e p t o r . M e t h o d F i l t e r I n t e r c e p t o r . i n t e r c e p t ( M e t h o d F i l t e r I n t e r c e p t o r . j a v a : 9 8 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . i n v o k e ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 2 4 9 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . i n t e r c e p t o r . C o n v e r s i o n E r r o r I n t e r c e p t o r . i n t e r c e p t ( C o n v e r s i o n E r r o r I n t e r c e p t o r . j a v a : 1 3 8 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n . i n v o k e ( D e f a u l t A c t i o n I n v o c a t i o n . j a v a : 2 4 9 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . i n t e r c e p t o r . P a r a m e t e r s I n t e r c e p t o r . d o I n t e r c e p t ( P a r a m e t e r s I n t e r c e p t o r . j a v a : 2 3 6 ) < b r   / >         a t   c o m . o p e n s y m p h o n y . x w o r k 2 . i n t e r c e p t o r . M e t h o d F i l t e r I n t e r c e p t o r . i n t e r c e p t ( M e t h o d F i l t e r I n t e r c e p t o r . j a v a : 9 8 ) < br />    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at util.HibernateBeginTransInterceptor.intercept(HibernateBeginTransInterceptor.java:32)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at util.LoginInterceptor.intercept(LoginInterceptor.java:36)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:831)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:652)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1203)
at java.lang.Thread.run(Thread.java:722)
Caused by:  org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:238)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
... 73 more
Caused by: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:238)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
... 78 more
Caused by: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:238)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
... 83 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:218)
... 88 more
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:272)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
at com.lm.model.common.Language_$$_javassist_0.getName(Language_$$_javassist_0.java)
...  93 more
Мой перехватчик выглядит так:

Код: Выделить всё

package util;

import java.util.Map;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import util.hibernate.HibernateUtil;

import com.lm.action.ActionsConstants;
import com.lm.action.user.Constants;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class HibernateEndTransInterceptor implements Interceptor, Constants, ActionsConstants {

private static final long serialVersionUID = -8734958511612355789L;

private static SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
private transient Logger log = Logger.getLogger(HibernateEndTransInterceptor.class);
private Session s=null;
private Transaction t=null;

@Override
public void destroy() {
}

@Override
public void init() {
}

@Override
public String intercept(final ActionInvocation invocation) throws Exception {
/*invocation.addPreResultListener(new PreResultListener() {

@Override
public void beforeResult(ActionInvocation arg0, String arg1) {
Map resultsMap = invocation.getProxy().getConfig().getResults();
//ResultConfig finalResultConfig = resultsMap.get(resultCode);

}
});*/

Map strutsSession = invocation.getInvocationContext().getSession();
String res=null;
try {
s=sessionFactory.openSession();
t = s.beginTransaction();
strutsSession.put("hibernateSession", s);
strutsSession.put("hibernateTransaction", t);
res=invocation.invoke();
t.commit();
} catch (Throwable t2) {
log.error(t2,t2);
try {
t.rollback();
} catch (Throwable t3) {
log.error(t3,t3);
}
} finally {
try {
s.close();
} catch (Throwable t) {
log.error(t,t);
}
strutsSession.remove("hibernateSession");
strutsSession.remove("hibernateTransaction");
}
return res;
}

}
Это не работает. Я получаю LazyInitializationException даже до trans.commit() и session.close();


Подробнее здесь: https://stackoverflow.com/questions/152 ... lazyinitia
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»