Java 1.5、Java EE 5、WAS 6.1:ResourceBundle.getBundle(…)を使用したリソースバンドルのロード例外

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

  •  03-07-2019
  •  | 
  •  

質問

現在の実稼働環境から新しいデータセンター環境にアプリケーションを移行する際に直面している別の問題があります(詳細を参照)

  • 現在の本番環境:Java 1.4、Java EE 3、WAS 5.1、JSF 2.1
  • 新しい環境:Java 1.5、Java EE 5、WAS 6.1、JSF 2.1

ここには、次の構造を持つサードパーティのjarファイルがあります(画像を確認してください-詳細を非表示にしてください)
alt text


このクラスには、ResourceBundle(db.properties)からデータベースプロパティをロードするコードがあります。 Cavajによってレンダリングされるコードは次のとおりです。

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

このアプリケーションは現在の環境で正常に動作しています。しかし、どういうわけかアプリケーションを新しい環境に移動すると" MissingResourceException"が発生します。 (以下を参照):

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)

次の回避策を試みましたが、どれも機能しませんでした:

  1. db.propertiesの名前をdb_en_US.propertiesに変更しました
  2. jarにプロパティファイルを置く
  3. EARレベルでjarファイルを移動します。

ここで何が間違っているのかを提案してください。そして、それを機能させるために何ができますか:)

注:ファイルdb.propertiesはWEB-INF / classesディレクトリの下にあります。また、上記の場所に置いてみましたが、役に立ちませんでした。

よろしく、
-アッシュ語

役に立ちましたか?

解決

entの設定でクラスローダーの順序を変更してみてください。管理コンソールのアプリケーション( PARENT_FIRST から PARENT_LAST まで)EARレベルとWARレベルの両方。

サードパーティのクラス( com.myco.wo.vs.util.OrderLovUtilities )はWEB-INF / libのjarファイルからロードされていないようですが、むしろサーバー上の他の場所から。そのクラスローダーは、プロパティファイルを見ません。

それが問題の場合、クラスローダーの順序を変更すると、予想されるクラスのコピーがロードされます。

また、管理コンソールのクラスローダービューアは、それに光を当てることができます。

他のヒント

db.propertiesファイルをWEB-INF / classesディレクトリに配置しようとしましたか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top