JavaEE奇怪的实体行为

JavaEE奇怪的实体行为,java,windows,web,ejb,Java,Windows,Web,Ejb,我有一种奇怪的行为。我正在做一个项目,这是一个使用JavaEE的web应用程序。它使用Eclipselink 2.3持久性服务部署在GlassFish 3.1.1上。一切都在Eclipse、Windows7 professional 64位、JDK+JVM 64位上 我有一个业务对象要处理。首先,我设置了相应的实体。只要调用一个方法,一切都很好。如果我在其中调试,实体会突然变为null 在此调用之前,实体被实例化 代码如下: // get my entity tramiteProxy = e

我有一种奇怪的行为。我正在做一个项目,这是一个使用JavaEE的web应用程序。它使用Eclipselink 2.3持久性服务部署在GlassFish 3.1.1上。一切都在Eclipse、Windows7 professional 64位、JDK+JVM 64位上

我有一个业务对象要处理。首先,我设置了相应的实体。只要调用一个方法,一切都很好。如果我在其中调试,实体会突然变为null

在此调用之前,实体被实例化

代码如下:

// get my entity  
tramiteProxy = ejbTramiteFactory.getEntity(tramite);  

// get corresponding business thru factory  
IRegistrableInLiquidador registrableInLiquidadorBusiness = (IRegistrableInLiquidador)     ejbTramiteFactory.getCBusiness(tramiteProxy);  


// invoke business  
// up to here everything is fine, you can inspect business variable and it shows correct, entity is instantiated as expected   

registrableInLiquidadorBusiness.registrarNovedadInIntegrador();  
现在我们在业务对象(
registableInLiquidOrBusiness
)内部进行调试:

我必须补充一点,对象实体是在业务之父中声明的一个变量,它从中扩展

所以我不知道还能尝试什么。我查看了与此相关的每一行代码,发现任何错误都是徒劳的

下一步可能是下载Eclipselink源代码并对其进行调试,看看幕后发生了什么,尽管我甚至不知道这是否与此有关


任何建议都将不胜感激。

该类可能是一个@Stateless bean,而
registernovedadinintegrader
是该bean上的一个业务方法吗?是的,它是一个@Stateless bean。经过一些研究,我必须假设作为一个无状态bean,因此为一个请求“保留”它的状态,如果一个用户想要设置任何属性,比如我的实体,我应该调用该类上的一个方法,setEntity(实体),在该调用之后,状态丢失,因此在下一次调用中,我的实体为null(EJB引擎将为我提供另一个业务EJB实例,而不是我以前使用的那个实例)。您的分析是正确的;无状态bean的特定方面会导致您的实体为null。
// Here if one checks the entity it became null !!!  

public void registrarNovedadInIntegrador() throws CException {  
    try {  
        CIntegradorBusiness ejbIntegradorBusiness = CCTX  
            .getEJB(CIntegradorBusiness.class);  

        // Here's the problem: getEntity() returns null, the entity of this business object became *magically* null  

        ejbIntegradorBusiness.registrarNovedad(getEntity(),null);  

    } catch (Exception e) {  
        throw new CException(1, e);  
    }  
}