Java 1.5, Java EE 5, WAS 6.1: Exception lors du chargement d'un ensemble de ressources avec ResourceBundle.getBundle (…)
Question
Voici un autre problème auquel nous sommes confrontés lors de la migration de notre application de l'environnement de production actuel vers le nouvel environnement de centre de données (voir les détails ci-dessous)
- Environnement de production actuel: Java 1.4, Java EE 3, WAS 5.1, JSF 2.1
- Nouvel environnement: Java 1.5, Java EE 5, WAS 6.1, JSF 2.1
Nous avons ici un fichier jar tiers avec la structure suivante (vérifiez l’image - pardonnez-moi en cachant quelques détails)
Cette classe contient le code permettant de charger les propriétés de la base de données à partir d'un ResourceBundle (db.properties). Voici le code rendu par Cavaj:
private static ResourceBundle getDBProperties() { if(dbProperties == null) { dbProperties = ResourceBundle.getBundle("db"); } return dbProperties; }
Cette application fonctionne correctement dans l'environnement actuel. Mais de toute façon, lorsque nous déplaçons l'application vers le nouvel environnement, un "MissingResourceException" apparaît. (voir ci-dessous):
Caused by: java.util.MissingResourceException: Can't find bundle for base name db, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:863) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:832) at java.util.ResourceBundle.getBundle(ResourceBundle.java:576) at com.myco.wo.vs.util.OrderLovUtilities.getDBProperties(OrderLovUtilities.java:195)
Nous avons essayé les solutions suivantes, mais aucune n'a fonctionné:
- a renommé le fichier db.properties en db_en_US.properties
- Mise du fichier de propriétés dans le pot
- déplacer le fichier jar au niveau de l'ERA.
Veuillez indiquer ce qui pourrait ne pas être correct ici Et que pouvons-nous faire pour que cela fonctionne:)
Remarque: le fichier db.properties se trouve dans le répertoire WEB-INF / classes. Nous avons également essayé de le placer sur les emplacements mentionnés ci-dessus, mais en vain.
Cordialement,
- Ashish
La solution
Essayez de modifier l’ordre des chargeurs de classe dans les paramètres de votre ent. application dans la console d'administration (de PARENT_FIRST
à PARENT_LAST
) aux niveaux EAR et WAR.
Il me semble que la classe tierce ( com.myco.wo.vs.util.OrderLovUtilities
) n'est pas chargée à partir de votre fichier jar dans WEB-INF / lib, mais qu'elle vient plutôt à partir d'un autre emplacement sur le serveur. Son chargeur de classe ne voit alors pas le fichier de propriétés.
Si tel est le problème, la modification de l'ordre du chargeur de classes devrait entraîner le chargement de la copie attendue de la classe.
De plus, le visualiseur de chargeur de classe dans la console d'administration peut vous éclairer.
Autres conseils
Avez-vous essayé de placer votre fichier db.properties dans le répertoire WEB-INF / classes?