DeploymentException & Classe Non Trouvé sur le Serveur d'administration de WebLogic 11g

Connexes: Charge externe des fichiers de propriétés en EJB 3 application en cours d'exécution sur WebLogic 11

À l'aide d'Oracle Enterprise Pack pour Eclipse, j'ai créé un Projet d'Entreprise et l'a nommé:

PropertiesDemoEAR

Également créé un PropertiesDemoEARWeb module dans lequel j'ai mis ce code

(à l'intérieur de PropertiesDemoEARWeb /Ressources Java /src /com.projet.util):

package com.project.util;

public class PropertiesFileHandler extends ApplicationLifecycleListener {

     private static final String FILE = "C:/etc/error.properties";

     public void preStart(ApplicationLifecycleEvent evt) {
        System.out.println("\n\n\t\tInside preStart() method\n\n");
        InputStream is = 
        evt.getApplicationContext().getAppClassLoader().getResourceAsStream(FILE);
        try {
            Properties convertedProps = 
                       convertStreamToProperties(is);
            String userMissingError =
                   convertedProps.getProperty("USER_MISSING_ERROR");
            System.out.println("\n\n\t\tuserMissingError = " 
            + userMissingError + "\n\n");
        } catch (Throwable e) {
             e.printStackTrace();
        }
     }

     public Properties convertStreamToProperties(InputStream is) throws IOException {
        System.out.println("\n\n\t\tInside convertStreamToProperties() method\n\n");
        Properties props = new Properties();
        if (is == null) {
          throw new FileNotFoundException("property file '" + FILE + "' not found");
        } else {
          props.load(is);
          return props;
        }
     }

 }

À L'Intérieur PropertiesDemoEAR/EarContent/META-INF/weblogic-application.xml

J'ai ajouté la suite de l'auditeur de manière déclarative:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application 
         xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application" >
    <!--weblogic-version:10.3.5-->
    <wls:application-param>
        <wls:param-name>webapp.encoding.default</wls:param-name>
        <wls:param-value>UTF-8</wls:param-value>
    </wls:application-param>

    <wls:listener>              
         <wls:listener-class>
         com.project.util.PropertiesFileHandler
         </wls:listener-class>
    </wls:listener>
</wls:weblogic-application>

Clic droit sur la PropertiesDemoEAR /Export /OREILLE fichier /Destination:

C:\Oracle\Middleware\user_projects\domains\MyDomain\autodeploy

Quand je lance WebLogic 11g par Eclipse, j'obtiens ce message d'erreur dans la console:

 [ERROR] AdapterManager - ServletContainerAdapter manager not initialized correctly.
 <oracle.tip.adapter.apps.AppsConnectionFactory> 
 ConnectionManager cm: weblogic.connector.outbound.ConnectionManagerImpl@12433e7-eis/Apps/Apps        
 ManagedConnectionFactory mcf:   
 oracle.tip.adapter.apps.AppsManagedConnectionFactory@4303022b
 <Jun 30, 2011 5:50:24 PM PDT> <Error> <Deployer> <BEA-149265> 
 <Failure occurred in the execution of deployment request 
  with ID '1309481424487' for task '0'. Error is:   
  'weblogic.management.DeploymentException: '
   weblogic.management.DeploymentException: at
   weblogic.application.internal.flow.
   BaseLifecycleFlow$CreateListenerAction.run(BaseLifecycleFlow.java:176) at
   weblogic.security.acl.internal.
   AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at 
   weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at
   weblogic.application.internal.flow.
   BaseLifecycleFlow$BaseAction.invoke(BaseLifecycleFlow.java:104) at   
   weblogic.application.internal.
   flow.HeadLifecycleFlow.createListener(HeadLifecycleFlow.java:117)
   Truncated. see log file for complete stacktrace

   Caused By: java.lang.ClassNotFoundException: 

   com.project.util.PropertiesFileHandler 

   at weblogic.utils.classloaders.
   GenericClassLoader.findLocalClass(GenericClassLoader.java:297)

Question(s):

(1) Que suis-je bien fais de mal? Pourquoi ne peut-il pas trouver mon PropertiesFileHandler classe?

(2) Est l'emplacement (c:/etc/error.properties) de mon fichier de propriétés approprié ou doit-il être à l'intérieur de MyDomain répertoire?

(3) Est-il un répertoire par défaut ou tout simplement de la configuration de la zone que WebLogic charge des fichiers de propriétés qui sont accessibles à toute application qui s'exécute dans WebLogic?

  • De mon point de vue, il semble que vous êtes de manière significative sur-complique le problème. Êtes-vous juste essayer d'obtenir preStart() de travail, ou il y a des exigences spécifiques que vous avez à faire travailler de cette façon?
  • Voulez-vous vraiment à la cravate de la façon que vous chargez les propriétés de votre demande de la façon dont WebLogic gère le cycle de vie de l'EJB, ou est-ce purement un exercice académique?
  • Non, c'est un vrai professionnel de la tâche... Nous avons un tas de différents serveurs d'application et nous assistons à la meilleure façon de déployer le fichier EAR qui permettrait de lire les différentes propriétés des fichiers à partir de différents serveurs d'application. Pas les mêmes propriétés que le fichier est utilisé par tous. Il pourrait avoir le même nom mais des contenus différents.