2009-05-01 2 views
2

hier ist eine andere Probleme, die wir konfrontiert sind, während unsere Anwendung von aktuellen Produktionsumgebung in die neue Datencenter-Umgebung migrieren (siehe Details unten)Java 1.5, Java EE 5, WAS 6.1: Ausnahme mit ResourceBundle.getBundle ein Ressourcenbündel Laden (...)

  • Aktuelle Produktionsumgebung: Java 1.4, Java EE 3, 5,1, JSF 2.1
  • neue Umgebung: Java 1.5, Java EE 5, WAS 6.1, JSF 2,1

Hier Wir haben eine JAR-Datei von Drittanbietern mit der folgenden Struktur (überprüfen Sie das Bild - verzeihen Sie mir einige Details)
alt text http://i43.tinypic.com/fxdqo0.jpg


Diese Klasse hat den Code versteckt die Datenbankeigenschaften aus einem Resource (db.properties) zu laden. Hier ist der Code von Cavaj:

Diese Anwendung funktioniert gut in der aktuellen Umgebung. Aber irgendwie, wenn wir die Anwendung auf die neue Umgebung zu bewegen bekommen wir eine „Missing“ (siehe unten):

 
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) 

Wir haben versucht folgenden Abhilfen aber keiner arbeitete:

  1. Umbenannt die db.properties als db_de_DE.properties
  2. Setzen der Eigenschaftendatei in den Behälter
  3. Verschieben der JAR-Datei auf EAR-Ebene.

Bitte legen nahe, auf das, was hier falsch sein könnte. Und was können wir tun, damit es funktioniert :)

Hinweis: Die Datei db.properties befindet sich unter dem Verzeichnis WEB-INF/classes. Auch haben wir versucht, es auf die oben genannten Orte zu setzen, aber ohne Erfolg.

Grüße,
- Ashish

+0

Ich vermute, Sie meinen JSF 1.2: http://java.sun.com/javaee/javaserverfaces/reference/api/index.html – McDowell

+0

Wo befindet sich db.properties in Ihrer Anwendung? – McDowell

+0

Ressourcenpakete gelten für länderspezifische Nachrichten und Labels. Sind Ihre Datenbanken länderspezifisch? Ich hätte gedacht, dass JNDI das war. Es scheint mir der falsche Ort für Datenbankeigenschaften zu sein. Kein Pooling auf diese Weise möglich. – duffymo

Antwort

1

Versuchen Sie, die Reihenfolge der Klassenlader in Ihren Einstellungen zu ändern. Anwendung in der Admin-Konsole (von PARENT_FIRST bis PARENT_LAST) auf beiden Ebenen EAR und WAR.

Es scheint mir, dass 3rd-Party-Klasse (com.myco.wo.vs.util.OrderLovUtilities) nicht aus Ihrer JAR-Datei in WEB-INF/lib geladen wird, aber es kommt eher von einem anderen Ort auf dem Server. Der Klassenlader sieht dann die Eigenschaftendatei nicht.

Wenn das Problem auftritt, sollte das Ändern der Reihenfolge des Klassenladeprogramms dazu führen, dass die erwartete Kopie der Klasse geladen wird.

Auch der Klassenlader-Viewer in der Admin-Konsole kann etwas Licht ins Dunkel bringen.

+0

Der Classloader wurde auf PARENT_LAST gesetzt und es funktionierte wie ein Zauber. Vielen Dank David ... – Vini

0

Haben Sie versucht, Ihre db.properties Datei unter WEB-INF/classes setzen?

+0

Ja, anfänglich war die Datei unter WEB-INF/Klassen, dann hatten wir auch das selbe Problem, also haben wir die Datei unter WEB-INF/Klassen und WEB gestellt -INF/lib (beide Orte) – Vini