簡體   English   中英

Weblogic 12中出現EJB初始化錯誤,但10中沒有

[英]EJB Initialization error in weblogic 12 but not in 10

我正在處理有關遺留應用程序,weblogic和ejb的一些怪異的東西。 我有一些代碼作為EAR部署在weblogic 10中,沒有任何錯誤,但是現在,我正在針對12版本進行測試。 不幸的是,它無法成功部署。

我有一個名為“ Monitor”的單例類,並帶有以下構造函數:

 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;
    }
}    

因此,在運行時,可以啟用或禁用監視器。

另一方面,我有MonitorJMSGateway 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);
}

問題是我得到了一個空指針,因為log4.properties文件不存在。 很好,好的。 但是奇怪的是,這個應用程序是在weblogic 10中部署的,而不是在12中部署的。這聽起來像是10中的懶惰初始化的事情(由於禁用了自定義監視,未初始化ejb,未引發異常)並且應用程序已成功部署)

日志錯誤跟蹤如下

####<18-sep-2017, 8:42:29,43 AM CEST> <Error> <Deployer> <CASER-5041> <AdminServer> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <a7a2e7ff-e3ef-4cf9-8686-75d7d0d27689-00000013> <1505716949043> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-149265> <Failure occurred in the execution of deployment request with ID "2686211063156" for task "0" on [partition-name: DOMAIN]. Error is: "weblogic.application.ModuleException: java.lang.NoClassDefFoundError: Could not initialize class es.caser.archit.monitor.jmsgateway.FwkMonitorJmsGatewayBean_nrwnbe_Impl"
weblogic.application.ModuleException: java.lang.NoClassDefFoundError: Could not initialize class es.caser.archit.monitor.jmsgateway.FwkMonitorJmsGatewayBean_nrwnbe_Impl
    at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
    at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
    at weblogic.work.ContextWrap.run(ContextWrap.java:46)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
Caused By: java.lang.NoClassDefFoundError: Could not initialize class es.caser.archit.monitor.jmsgateway.FwkMonitorJmsGatewayBean_nrwnbe_Impl
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at weblogic.utils.classloaders.GenericClassLoader.defineCodeGenClass(GenericClassLoader.java:1357)
    at weblogic.ejb.container.ejbc.bytecodegen.GeneratorFactory.generateClass(GeneratorFactory.java:100)
    at weblogic.ejb.container.ejbc.bytecodegen.GeneratorFactory.generate(GeneratorFactory.java:51)
    at weblogic.ejb.container.ejbc.EJBCompiler.generate(EJBCompiler.java:606)
    at weblogic.ejb.container.ejbc.EJBCompiler.doCompile(EJBCompiler.java:201)
    at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:345)
    at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:313)
    at weblogic.ejb.container.deployer.EJBDeployer.compileEjbs(EJBDeployer.java:420)
    at weblogic.ejb.container.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:351)
    at weblogic.ejb.container.deployer.EJBDeployer.prepare(EJBDeployer.java:716)
    at weblogic.ejb.container.deployer.EjbModuleExtension.postPrepare(EjbModuleExtension.java:97)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:297)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
    at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
    at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
    at weblogic.work.ContextWrap.run(ContextWrap.java:46)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
> 
####<18-sep-2017, 8:42:29,43 AM CEST> <Error> <Deployer> <CASER-5041> <AdminServer> <[ACTIVE] ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <a7a2e7ff-e3ef-4cf9-8686-75d7d0d27689-00000012> <1505716949043> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-149265> <Failure occurred in the execution of deployment request with ID "2686211063156" for task "weblogic.deploy.configChangeTask.0" on [partition-name: DOMAIN]. Error is: "weblogic.application.ModuleException: java.lang.NullPointerException"
weblogic.application.ModuleException: java.lang.NullPointerException
    at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
    at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
    at weblogic.work.ContextWrap.run(ContextWrap.java:46)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
Caused By: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:532)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:427)
    at es.caser.archit.monitor.jmsgateway.MonitorJmsGateway.<clinit>(MonitorJmsGateway.java:23)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at weblogic.utils.classloaders.GenericClassLoader.defineCodeGenClass(GenericClassLoader.java:1357)
    at weblogic.ejb.container.ejbc.bytecodegen.GeneratorFactory.generateClass(GeneratorFactory.java:100)
    at weblogic.ejb.container.ejbc.bytecodegen.GeneratorFactory.generate(GeneratorFactory.java:51)
    at weblogic.ejb.container.ejbc.EJBCompiler.generate(EJBCompiler.java:606)
    at weblogic.ejb.container.ejbc.EJBCompiler.doCompile(EJBCompiler.java:201)
    at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:345)
    at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:313)
    at weblogic.ejb.container.deployer.EJBDeployer.compileEjbs(EJBDeployer.java:420)
    at weblogic.ejb.container.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:351)
    at weblogic.ejb.container.deployer.EJBDeployer.prepare(EJBDeployer.java:716)
    at weblogic.ejb.container.deployer.EjbModuleExtension.postPrepare(EjbModuleExtension.java:97)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:297)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
    at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
    at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
    at weblogic.work.ContextWrap.run(ContextWrap.java:46)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

錯誤日志指向以下事實:類路徑中沒有log4j屬性文件。 有趣的是,錯誤不會出現在weblogic 10中。

我想我已經找到了答案。 部署耳朵后,weblogic 10.3需要一個ejb-descriptor,而weblogic 12將使用注釋。 這就是為什么weblogic 10運行“很好”的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM