2009-05-01 9 views
2

でリソースバンドルをロードする例外はここでは、現在の運用環境から新しいデータセンター環境に私たちのアプリケーションを移行しながら、私たちが直面している別の問題は、(参照です詳細は下記)のJava 1.5、JavaのEE 5は、6.1 WAS:ResourceBundle.getBundleは(...)

  • 現在のプロダクション環境:Javaの1.4はJava EE 3は、5.1 WAS、JSF 2.1
  • 新しい環境:Javaの1.5はJava EE 5は、WAS 6.1、JSF 2.1は

ここ次の構造を持つサードパーティのjarファイルがあります(画像を確認してください -
alt text http://i43.tinypic.com/fxdqo0.jpg


このクラスは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. jarファイルをEARレベルで移動します。

ここで間違っている可能性がどのように勧めてください。

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

よろしく、
- アシシュ

+0

私はあなたがJSF 1.2を意味していると推測しています:http://java.sun.com/javaee/javaserverfaces/reference/api/index.html – McDowell

+0

アプリケーションにdb.propertiesがどこにありますか? – McDowell

+0

リソースバンドルは、ロケール固有のメッセージとラベル用です。データベースはロケール固有ですか?私はこれがJNDIの目的だと思っていたでしょう。それは私にとってデータベースのプロパティのための間違った場所のようです。そのようにプールすることはできません。 – duffymo

答えて

1

あなたのエントリーの設定でクラスローダーの順序を変更しようとしてください。管理コンソールのアプリケーション(PARENT_FIRSTPARENT_LAST)をEARレベルとWARレベルの両方で使用します。

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

それが問題である場合は、クラスローダの順序を変更すると、クラスの予想されるコピーをロードするようになります。

また、管理コンソールのクラスローダービューアでもそのことを確認できます。

+0

クラスローダーをPARENT_LASTにすると、魅力的に機能します。 おかげでたくさんのダビデ... – Vini

0

あなたはあなたのdb.propertiesは、WEB-INF/classesディレクトリの下にファイルを入れてみましたか?

+0

はい、最初はファイルがWEB-INF/classesの下にあったので、同じ問題に直面していましたので、ファイルをWEB-INF/classesとWEBの下に置きます-INF/lib(両方の場所) – Vini