weblogic 12中的EJB初始化错误,但不是10

时间:2017-09-18 07:19:15

标签: java java-ee ejb weblogic ear

我正在处理有关遗留应用程序,weblogic和ejb的一些奇怪的事情。我有一些代码在weblogic 10中作为EAR部署而没有任何错误,但是现在,我正在针对12版本进行测试。不幸的是,它没有成功部署。

我有一个名为" Monitor"的单例类,带有这个构造函数:

$location.search().id

因此,在运行时,可能会启用或禁用监视器。

另一方面,我有MonitorJMSGateway ejb:

 private Monitor(){
    if(MonitorProperties.getInstance().getEnabled()){
        try{                
            Context objContext = new InitialContext();
            monitorJmsGatewayRemote = (MonitorJmsGatewayRemote)objContext.lookup(MonitorProperties.getInstance().getJndiEjbGatewayProperty());
            active = true;
            if(tracer.isInfoEnabled()){
                tracer.info("'"+FrameworkApplicationContext.getInstance().getApplicationId()+"' Framework monitor is initialize");
            }           
        }catch(Exception excep){
            tracer.warn("'"+FrameworkApplicationContext.getInstance().getApplicationId()+"' It's not possible to initialize the framework monitor. "+ excep.getMessage());
            active = false;
        }       

        init();
    }else{
        active = false;
    }
}    

问题是我得到了一个nullpointer,因为log4.properties文件不存在。没关系,好​​的。但奇怪的是这个应用程序在weblogic 10中正确部署,但在12中没有。这听起来像10中的懒惰初始化内容(由于自定义监视被禁用,ejb未初始化,异常不会引发并且应用程序已成功部署)

日志错误跟踪如下

@Stateless(name="FwkMonitorJmsGatewayBean")
@Remote(MonitorJmsGatewayRemote.class)  
public class MonitorJmsGateway implements MonitorJmsGatewayRemote {

private static Tracer tracer = null;

static{//Inicializamos el log4j
    PropertyConfigurator.configure(Thread.currentThread().getContextClassLoader().getResourceAsStream(MonitorJmsGatewayConstants.LOG4J_PROPERTIES_FILE));
    tracer = Tracer.getTracer(MonitorJmsGateway.class);
}

错误日志指向类路径中没有log4j属性文件的事实。有趣的是,错误不会出现在weblogic 10中。

1 个答案:

答案 0 :(得分:0)

我想我找到了答案。当部署ear时,weblogic 10.3期望ejb-descriptor和weblogic 12使用注释。这就是weblogic 10运行“好”的原因