[英]synchronized method in stateless session bean not working as expected in glassfish
[英]Stateless is not working in AS 7
我得到這個:
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/PontoComentario].[jsp]] (http--0.0.0.0-8080-2) Servlet.service() for servlet jsp threw exception: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:149) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:195) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) [hibernate-core-4.0.1.Final.jar:4.0.1.Final
經過jsp處理。 我的EMFactory是這樣的:
import javax.ejb.Stateless;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.persistence.EntityManager;
import javax.transaction.UserTransaction;
@Stateless
public class EMFactory {
public static EntityManager getEntityManager() {
try {
Context ctx = new InitialContext();
return (EntityManager) ctx.lookup("java:comp/env/PontoComentario/EntityManager");
} catch (Exception e) {
return null;
}
}
public static UserTransaction getUserTransaction() {
try {
Context ctx = new InitialContext();
return (UserTransaction) ctx.lookup("java:comp/UserTransaction");
} catch (Exception e) {
return null;
}
}
}
我不確定為什么要得到它,我使用的是AS 5,而且效果很好。 如果您需要其他任何代碼,請詢問。
這是在jsp中使用的scriptlet的可悲部分:
<%
UsuarioDao dao = new UsuarioDao();
List<Usuario> lista;
if (usuarioLogado.getAdministrador()) {
lista = dao.getListOrder("codigo");
} else {
lista = dao.getListCond("obj.administrador = true order by obj.codigo");
... 等等。
您為什么不簡單地使用注釋將對EntityManager的引用注入:
@PersistenceContext EntityManager em;
您是否真的從JSP訪問SLSB? 不是來自servlet控制器嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.