Java 1.5, Java EE 5, WAS 6.1: Eccezione durante il caricamento di un pacchetto di risorse con ResourceBundle.getBundle (& # 8230;)

StackOverflow https://stackoverflow.com/questions/812802

  •  03-07-2019
  •  | 
  •  

Domanda

Ecco un altro problema che stiamo affrontando durante la migrazione della nostra applicazione dall'attuale ambiente di produzione al nuovo ambiente del data center (vedere i dettagli di seguito)

  • Ambiente di produzione attuale: Java 1.4, Java EE 3, WAS 5.1, JSF 2.1
  • Nuovo ambiente: Java 1.5, Java EE 5, WAS 6.1, JSF 2.1

Qui abbiamo un file jar di terze parti con la seguente struttura (controlla l'immagine - scusami nascondendo alcuni dettagli)
alt text


Questa classe ha il codice per caricare le proprietà del database da un ResourceBundle (db.properties). Ecco il codice reso da Cavaj:

    private static ResourceBundle getDBProperties()
    {
        if(dbProperties == null)
        {
            dbProperties = ResourceBundle.getBundle("db");
        }
        return dbProperties;
    }

Questa applicazione funziona perfettamente nell'ambiente attuale. Ma in qualche modo quando spostiamo l'applicazione nel nuovo ambiente otteniamo una "MissingResourceException" (vedi sotto):

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)

Abbiamo provato le seguenti soluzioni alternative, ma nessuna ha funzionato:

  1. Rinominato db.properties come db_en_US.properties
  2. Mettendo il file delle proprietà nel vaso
  3. spostando il file jar a livello di EAR.

Per favore, suggerisci cosa potrebbe esserci di sbagliato qui. E cosa possiamo fare per farlo funzionare :)

Nota: il file db.properties si trova nella directory WEB-INF / classes. Inoltre abbiamo provato a inserirlo nelle posizioni sopra menzionate ma senza risultati.

Saluti,
- Ashish

È stato utile?

Soluzione

Prova a cambiare l'ordinamento del classloader nelle impostazioni del tuo ent. applicazione nella console di amministrazione (da PARENT_FIRST a PARENT_LAST ) su entrambi i livelli EAR e WAR.

Mi sembra che la classe di terze parti ( com.myco.wo.vs.util.OrderLovUtilities ) non sia caricata dal tuo file jar in WEB-INF / lib, ma è piuttosto disponibile da qualche altra posizione sul server. Il suo classloader quindi non vede il file delle proprietà.

Se questo è il problema, la modifica dell'ordine di Classloader dovrebbe causare il caricamento della copia prevista della classe.

Inoltre, il visualizzatore di classloader nella console di amministrazione può far luce su questo.

Altri suggerimenti

Hai provato a mettere il tuo file db.properties nella directory WEB-INF / classes?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top