2

Rational Application Developer for WebSphere 8.0.4 ヘルプのチュートリアルに従って、WSDL ファイルから JAX-WS Web サービスと EJB スケルトンを作成しました。

私の EJB コードを含む EJB プロジェクトを作成しました。ear ファイルをビルドするための EJBEar プロジェクトを作成しました。war ファイルを作成するために RouterWebProject を作成しました。

RouterWebProject はサーブレット情報を提供するので、HTTP SOAP リクエストをサーブレットにポストして、EJB の Web サービス コードにルーティングできます。

EJB サービス コードは、ResourceBundle を使用して AppSDKExamples.properties という名前のプロパティ ファイルを読み取る同じ EJB プロジェクト内のクラスを呼び出します。

static {
    ResourceBundle props = ResourceBundle.getBundle("AppSDKExamples", Locale.getDefault());
    brokerPartnerId = props.getString("broker.partner.id");
    buyPartnerId    = props.getString("svc.dealer.partner.id");
    sellPartnerId   = props.getString("platform.partner.id");
    sellPartnerId2  = props.getString("platform.partner.id2");
    accountNumber   = props.getString("account.number");
}

AppSDKExamples.properties ファイルを考えられるあらゆる場所に配置しようとしましたが、常に java.util.MissingResourceException が発生します。

このプロパティ ファイルを EJB コードで使用できるようにするにはどうすればよいですか?

現在、EJB ear は次のようになっています。

  • lib/AppSDKExamples.properties
  • lib/AppSDKExamples_en_US.properties
  • lib/その他の jar ファイル
  • META-INF/MANIFEST.MF (これにはクラスパスが含まれていません。設定方法がわかりません。)
  • EJB.jar
  • WebProject.war

EJB.jar は次のようになります。

  • プロパティ ファイルを探す com/activant/web/services/examples/class ファイル
  • Web サービスの com/activant/web/services/iaptest/class ファイル
  • META-INF/MANIFEST.MF (クラスパスに AppSDKExamples.properties と AppSDKExamples_en_US.properties があります)
  • AppSDKExamples.properties
  • AppSDKExamples_en_US.properties

war ファイルは次のようになります。

  • lib には、EJB.jar ファイルと同じ jar ファイルが含まれています。
  • META-INF (クラスパス: /lib EJB.jar)
  • WEB-INF/classes このフォルダーには、両方のプロパティ ファイルが含まれています。
  • WEB-INF/lib このフォルダには、両方のプロパティ ファイルが含まれています。
  • WEB-INF/ibm-web-bnd.xml
  • WEB-INF/ibm-web-ext.xml
  • WEB-INF/web.xml

これに関するヘルプは大歓迎です。ありがとう。

4

1 に答える 1

2

プロパティ ファイルが EJB のルートにある場合、EJB クラスはプロパティ ファイルを見つけることができるはずです。Java 2 セキュリティを有効にして実行している場合は、FilePermission を付与する必要があります。${webComponent} および ${ejbComponent} については、PROFILE_HOME/config/cells/CELL/nodes/NODE/app.policy を参照してください。

プロパティ ファイルを EAR/lib に配置するだけでは機能しません。これは、EAR/lib/ ディレクトリがクラスパス上になく、その中の .jar ファイルのみがクラスパス上にあるためです。EJB jar MANIFEST.MFに追加Class-Path: lib/するとうまくいくかもしれませんが、ディレクトリ クラス パスは JavaEE 仕様では必要ないため、WebSphere Application Server でサポートされているかどうかはわかりません。

JAR とディレクトリのみがサポートされているため、MANIFEST.MF Class-Path でプロパティ ファイルを直接参照しても機能しません (ディレクトリに関する JavaEE の警告については上記を参照してください)。

一般に、先頭のスラッシュを から削除するのがおそらく最善/libです。JavaEE プラットフォームの仕様からは、これがlibEAR 内のディレクトリを参照する必要があるのか​​、それともマシン ファイル システムのルートにあるディレクトリを参照する必要があるのか​​が不明です。

于 2012-05-10T16:24:38.740 に答える