ここでは、Web コンテナに関する既知の問題とその解決方法を示します。
Java EE SDK b33d に組み込まれている JDK 1.6 で JAX—WS テストを実行中に問題に遭遇します。テストは次のメッセージを出して直ちに異常終了します。
[wsimport] Exception in thread "main" java.lang.NoClassDefFoundError: \ com/sun/tools/ws/WsImport |
webservices-tools.jar に com/sun/tools/ws/WsImport.class、com/sun/tools/ws/ant/WsImport.class、および com/sun/tools/ws/ant/WsImport2.class が含まれていても、このエラーは起きます。さらに、1.5.0-10 JDK を使用すると、同じテスト作業空間が問題なく機能します。
JAX-WS テストを実行する前に、webservices-api.jar を $JAVA_HOME/jre/lib/endorsed にコピーします。
JAXR は SAAJ を使用して SOAP メッセージをレジストリに送信します。IFR 以外では、SAAJ impl クラスは lib/webservices-rt.jar の下にあります。IFR の場合、SAAJ クラスは引き続き lib/webservices-rt.jar の下にあります。また、saaj-impl.jar は /usr/share/lib ディレクトリにあります。この jar ファイルは Application Server で格上げされ、webservices-rt.jar のクラスよりも優先されています。この jar ファイルには、SOAP メッセージを Web サービスレジストリに送信するために必要なセキュリティー権限がありません。/usr/share/lib ディレクトリの下の jar に権限を付与するか、または /usr/share/lib の jar に依存しないように、パッケージを変更する必要があります。
server.policy ファイルに次の内容を追加します。
grant codeBase "file:/usr/share/lib/saaj-impl.jar" { permission java.security.AllPermission; }; |