简体   繁体   English

无状态在AS 7中不起作用

[英]Stateless is not working in AS 7

I'm getting this: 我得到这个:

[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

After acessing the jsp. 经过jsp处理。 My EMFactory is like this: 我的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;
    }
}   
}

I'm not sure why i'm getting that, i was using AS 5 and it was working nice. 我不确定为什么要得到它,我使用的是AS 5,而且效果很好。 If you need any other piece of code just ask. 如果您需要其他任何代码,请询问。

This is a sad part of scriptlets that was use in the jsp: 这是在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");

... and so on. ... 等等。

Why don't you simply inject a reference to the EntityManager with an annotation: 您为什么不简单地使用注释将对EntityManager的引用注入:

@PersistenceContext EntityManager em; @PersistenceContext EntityManager em;

And are you really accessing your SLSB from a JSP? 您是否真的从JSP访问SLSB? Not from a servlet controller? 不是来自servlet控制器吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM