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.
Vous devez vous connecter pour publier un commentaire.
Essayez de s'assurer que la classe est dans le dossier /lib dossier de l'ordinateur où l'application est en cours de déploiement.
Ai eu de travail... Le problème était que je l'avais mis en place comme Projet Web plutôt que Java EE Utilitaire de Projet dans Oracle Enterprise Edition pour Eclipse.
Comme un projet web, il a été de le mettre .les fichiers de classe à l'intérieur de WEB-INF/classes au lieu de APP-INF.
Aussi, nécessaires pour mettre en erreur.propriétés à l'intérieur de mon domaine.
C:\Oracle\Middleware\user_projects\domains\MyDomain
En ce qui concerne ma propre question:
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?
Si -Dweblogic.ext.dirs n'est pas définie, la valeur par défaut est $DOMAINE/lib;$WL_HOME/common/lib/ext,$WL_HOME/server/lib/ext
Donc, si vous stockez erreur.propriétés de $DOMAINE/lib, il sera sur le chemin de la classe, et vous devriez être en mesure de le charger à l'aide de getResourceAsStream("erreur.les propriétés")