2017-09-18 5 views
1

Je fais face à des choses bizarres concernant une application héritée, weblogic et ejb. J'ai du code qui est déployé dans weblogic 10 comme un EAR sans aucune erreur mais maintenant, je le teste contre la version 12. Malheureusement, il ne se déploie pas correctement.EJB Erreur d'initialisation dans weblogic 12 mais pas dans 10

J'ai une classe singleton appelée "Monitor", avec ce constructeur:

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

Ainsi, lors de l'exécution, le moniteur peut être activé ou désactivé.

D'autre part, j'ai l'ejb MonitorJMSGateway:

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

Le problème est que je reçois un nullpointer parce que le fichier ne log4.properties existe pas. C'est bon, d'accord. Mais le truc bizarre est que cette application se déploie directement dans weblogic 10, mais pas dans 12. Cela ressemble à des trucs d'initialisation paresseux dans 10 (en raison du fait que la surveillance personnalisée est désactivée, l'ejb n'est pas initialisé, l'exception n'est pas levée et l'application est déployée avec succès)

les traces d'erreur du journal sont les suivantes

####<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) 

le journal d'erreur est pointée sur le fait qu'il n'y a pas de propriétés log4j fichier dans le classpath. Ce qui est drôle, c'est que cette erreur n'apparaît pas dans weblogic 10.

+0

Pouvez-vous également publier la pile d'erreurs? –

+0

Terminé @PradeepPati! Merci pour votre suggestion! – Bringer

+0

Il est probable que votre serveur WLS10 a été configuré pour ajouter un répertoire supplémentaire au chemin d'accès aux classes. Ce répertoire contiendra le fichier log4j.properties et éventuellement d'autres fichiers de configuration. Sinon, ces fichiers doivent être dans un fichier jar qui se trouve dans votre fichier EAR afin d'être accessible depuis un fichier EJB. C'est du moins ce que j'avais l'habitude de faire ... –

Répondre

0

Je pense avoir trouvé la réponse. Lorsque l'oreille est déployée, weblogic 10.3 attend un descripteur ejb et weblogic 12 utilise des annotations. C'est pourquoi weblogic 10 fonctionne "bien"

+0

Le même fichier ejb-jar.xml utilisé par 10.3 devrait fonctionner dans WLS 12. Le weblogic.xml associé ("ne peut pas rappeler le nom correct) peut besoin de mises à jour bien. –