このファイルには、Web サービスに影響する制限 (永続的と一時的の両方) の広範囲のリストが含まれています。
Web サービスでの作業中に発生する可能性のある制限は、以下のセクションに分かれています。
セキュアな WebSphere Application
Server の使用時に発生する問題
次のエラー・メッセージが表示される場合があります。SSLSocketFactory
error message: java.net.SocketException: java.lang.ClassNotFoundException:
Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
Web サービス・エクスプローラーの使用、サンプル JSP の生成、HTTPS WSDL ファイルからの Web サービスやクライアントの作成、または Axis Web サービスのデプロイを行う前に、Secure Sockets Layer (SSL) を使用してサーバーと通信するようにワークベンチを構成する必要があります。このタスクに関する情報については、以下を参照してください。SSL 接続を使用するセキュア・サーバーでの処理に関する問題 (Problems working with a secured server using SSL connections)
次のエラー・メッセージが表示される場合があります。Error
opening socket: javax.net.ssl.SSLHandshakeException : unknown certifcate
Web サービス・ウィザードを使用して HTTPS WSDL を取得するか、または保護されている WebSphere® Application Server に対して Web サービス・エクスプローラーを使用する場合、以下で説明されているステップを行ってください。保護された WebSphere Application Server と対話するように IBM® JRE を構成する
Web サービス・ウィザードの使用時に発生する問題
- Web サービス・ウィザードの
どこかで終わるために「キャンセル」をクリックすると、
ウィザードで生成されたファイルがご使用のワークスペースに残されたり、Web サービス・
エントリーがデプロイメント記述子に残されたりすることがあります。
これらのファイルはウィザードを閉じてから手動で削除する必要があります。
- Web サービス・ウィザードが EAR の公開に失敗します。
問題: スタブ・ランタイムを使用してリモート・サーバーを
作成すると、EAR は公開されません。
原因: Web サービス・ウィザードでは、
サーバーを始動できるかどうかを判別できません。
解決策: 「サーバー」
ビューを使用できる任意のパースペクティブで、リモート・サーバーを
右クリックして、「プロジェクトの追加および削除」を選択します。
プロジェクトを選択して、それをサーバーに追加します。
- Web サービス・ウィザードが、選択したプロジェクト・タイプを使用できません。
問題: 「Install service on server」オプションが
選択された J2EE アプリケーション・クライアント・プロジェクトが含まれる EAR、
または EJB が含まれない EJB プロジェクトで Web サービス・ウィザードを
実行しようとすると、ウィザードでは Web サービスを生成できません。
原因: Web サービス・ウィザードは、ウィザードの 3 ページ目で
選択されたプロジェクトのタイプを使用できることを確認するための検査を
実行します。使用できない場合は、ウィザードを続行することはできません。
解決策: ウィザードを取り消して、「Install service on server」を
選択せずに再実行するか、EJB を EJB プロジェクトに追加すると、ウィザードを
続行することができます。
- ワークスペースで
WSIL ファイルを選択してから、Web サービス・ウィザードを起動すると、
ウィザードに選択項目が無効であると示されることがあります。これは、WSIL ファイルから
WSDL ファイルを選択する必要があるために表示されます。
これを解決するには、Web サービス・ウィザードで「参照」を
クリックして、特定の WSDL ファイルを選択してください。
- ターゲットの
Web プロジェクトの名前に Latin-1 以外の文字が含まれていると、Web サービス・ウィザードが
Web サービスの作成中にエラーを生成することがあります。この問題は、Web サービス・
コード生成プログラムがプロジェクト名を基にして HTTP URL を計算し、Latin-1 以外の
文字は HTTP URL で許可されないために発生します。
これを解決するには、Latin-1 文字のみを含むプロジェクト名を使用してください。
- ワークスペースに
複数の EAR プロジェクトがある場合に、EJB プロジェクトで
「Enterprise Java™ Bean」を
選択して Web サービス・ウィザードを起動すると、ウィザードの起動時に
選択したエンタープライズ Bean が選択されていないことがあります。「サービス実装の選択」ダイアログ・ボックスでは、Bean を含む EJB プロジェクトが
関連付けられている EAR ではなく、選択されている EAR プロジェクトが
ワークスペース内のアルファベット順で最初の EAR になります。
これを解決するには、「サービス実装の選択」ダイアログ・ボックスで、
必要な EAR プロジェクトを手動で選択します。
- Web サービス・ウィザードの
最初のページで Web サービス・トラフィックをモニターするよう選択すると、
時折、TCP/IP モニター・ビューが自動的に表示されないことがあります。
を
選択することで、ビューを手動で開くことができます。
Web サービスの要求と応答はこのビューに表示されます。
- JAX-RPC ボトムアップ (BU) Web サービス生成ウィザードは、同じターゲット JEE1.3/Web2.3 Web プロジェクト内の Java Bean で使用されると、NullPointerException を生成します。
問題: RAD/WAS で JAX-RPC ボトムアップ (BU) Web サービス生成ウィザードを、同じターゲット JEE1.3/Web2.3 Web プロジェクト内の Java Bean で使用すると、NullPointerException が生成されます。
原因: 「サービス・エンドポイント・インターフェースの選択」で「WSDL 1.1 Mime 添付を排他的に使用」オプションが選択されませんでした。
J2EE 1.3 Web サービスおよびクライアント用に、RAD は WAS v5.1.1 エミッターを com.ibm.websphere.webservice.rt.v5.1.1 プラグインとして保持しています。「サービス・エンドポイント・インターフェースの選択」で「WSDL 1.1 Mime 添付を排他的に使用」オプションが選択されないと、Mime スタイルは swaRef に設定されます。emailSend() はアプリケーションまたは PDF ファイルを送信しているため、この設定は正確ではありますが、J2EE 1.3 Web サービスおよびクライアント用に RAD が保持する WAS v5.1.1 エミッターは swaRef をサポートしません。swaRef は、WAS v5.x ではサポートされなくなりました。
解決方法: NullPointerException を回避するには、「サービス・エンドポイント・インターフェースの選択」で「WSDL 1.1 Mime 添付を排他的に使用」オプションを選択するようにしてください。
WebSphere JAX-WS ランタイム環境および JAXB の使用時に発生する問題
WebSphere ランタイム環境の使用時に発生する問題
- Web サービス・ウィザードまたは WSDL2Java ツールを使用して Java に再生成する際に、コンパイルできない出力を作成する WSDL 文書が
作成される可能性があります。これは、Java から WSDL への JAX-RPC マッピングが
可逆性ではないためです。この問題が発生した場合は、WSDL ファイルを調べて、望ましい結果が得られるように必要に応じてそのファイルを変更するか、名前空間からパッケージへのカスタム・マッピングを定義することを選択します。
- IBM WebSphere JAX-RPC
ランタイム環境は、デフォルトの Java パッケージを
使用する Java
Bean を処理することができません。
その結果、サーバー始動時に例外状態となり、実行時に Web サービスが作動しなくなります。
- WebSphere JAX-RPC ランタイム環境を使用して Web サービス・クライアントを作成する場合、
クライアントのデプロイメント記述子は Universal Test Client で使用できません。
その結果、クライアント・プロキシーの JNDI ルックアップは Universal Test Client では機能しません。
この UTC を使用するには、Locator クラスを構成して使用するか、
useJNDI を false にセットして生成された Proxy クラスを使用
(内部で Locator を構成して使用) する必要があります。
クライアント・サイドのデプロイメント記述子が処理されないと、
WS-Security やハンドラーなどの特定のメタデータが使用可能になりませんので注意してください。
このようなクライアント構成の例にセキュリティーがあります。
Universal Test Client の代わりに、サンプルの JSP を使用してプロキシーをテストしてください。
- WSDL インポート:
WSDL インポート・ステートメントは、同一ディレクトリーでは絶対 URL または相対 URL しか持つことができません。
例えば、次の形式の相対インポートはサポートされません:
<import namespace="http://someNamespace/" location="../someFile.wsdl"/>
Apache Axis ランタイム環境の使用に関する問題
Web サービス・クライアント作成時の制限
Web サービス・クライアントを EJB プロジェクトにデプロイするとき、
プロキシー構成ページには、この Web サービス・クライアントがスコープされる EJB
を選択するためのコンボ・ボックスが含まれています。これは、JSR-109 によって定義される要件です。
JSR-109 では、component-scoped-refs 要素のコンポーネント名は、
モジュール内にある EJB の ejb-name と一致する必要があります。
少なくとも 1 つの EJB がプロジェクトにあれば、エラーは発生しません。
しかし、プロジェクトに EJB が 1 つもない場合は、プロキシー構成ページのコンボ・ボックスは編集可能で、
サフィックスが「EJB」である WSDL のサービス名に等しいデフォルト値を持ちます。
さらに、クライアント・ウィザードが警告ダイアログを表示し、
Web サービス・クライアントが既存の EJB にスコープされていないため、デプロイメントが不完全であることを示します。
ユーザーは EJB を webservicesclient.xml
で使用されているコンポーネント名と同じ名前で EJB を作成して、これを修正できます。
ただし、ウィザードでクライアントの作成を取り消して打ち切りにした場合、
ウィザードは、webservicesclient.xml から不完全な component-scoped-refs を削除しません。
再度デプロイを行う前に、手操作で不完全な component-scoped-refs を削除してください。
Web サービスのサンプル JSP の制限
- Web サービスのサンプル JSP は、
配列やコレクションをパラメーターとして取り入れているメソッドをサポートしていません。
そのようなメソッドは、サンプル JSP の「メソッド」ペインから除外されます。
プライベート UDDI レジストリーに関する問題
- プライベート
UDDI レジストリーのパブリッシャー表明がレジストリー内のすべてのビジネスに対して
可視である場合があります。あるビジネスが、そのビジネス自身に関連しているパブリッシャー表明を見る場合があります。
例えば、ビジネスのキーが、パブリッシャー表明のキーからのものでもキーへのものでもない場合などです。
- 単体テスト
UDDI レジストリーを Cloudscape データベース・
バックエンドで構成すると、UDDI の名前別検索メソッドは、デフォルトで
大/小文字を区別する検索を実行します。このことは UDDI 仕様に反し、制限項目です。
Universal Test Client の使用
Web サービス・コマンド行を使用するときの問題
- スペースを含むディレクトリー:
ディレクトリー名にスペースを含むディレクトリーから WSDL2WebService を実行しないでください。実行すると、
生成される compile.bat (または Linux では
compile.sh) はコンパイルしません。
- EJB Web サービスを作成するために EJB2WebService を実行した後、splitWsdl オプションが使用されていると、
生成された EAR をユニット・テスト環境またはリモート・サーバーで実行できません。
これを回避するには、EJB プロジェクトの META-INF の下にある WSDL ディレクトリー全体を、
ルーター Web プロジェクトの WEB-INF にコピーします。
- ローカル・インポートを含む
WSDL を使用して EJB Web サービスを作成するために WSDL2WebService を実行した後、
生成された EAR をユニット・テスト環境またはリモート・ サーバーで実行できません。
これを回避するには、EJB プロジェクトの META-INF の下にある WSDL ディレクトリー全体を、
ルーター Web プロジェクトの WEB-INF にコピーします。
- コマンド行ツールで J2EE 1.4
を使用してワークスペースに生成された EJB クライアントを含む EAR をインポートした後は、
コンパイル・エラーが発生します。
このエラーをフィックスするには、
EJB プロジェクトを右クリックして、「プロパティー」を選択します。
「Java ビルド・パス」に進み、「ライブラリー」タブを選択します。
EJBClientProject/imported_classes(クラス・フォルダー) エントリーを削除します。
EJBServiceClient/imported_classes/Meta-inf/classess クラス・フォルダーを追加します。
「OK」をクリックします。
- コマンド行ツールで J2EE 1.4
を使用してワークスペースに生成されたアプリケーション・クライアントを含む EAR をインポートした後は、ClassNotFoundException エラーが発生します。
このエラーをフィックスするには、アプリケーション・クライアント・プロジェクトを右クリックして、
「プロパティー」を選択します。
「Java ビルド・パス」に進み、「ライブラリー」タブを選択します。
ApplicationClientProject/imported_classes(クラス・フォルダー) エントリーを削除します。
ApplicationClientProject/imported_classes/Meta-Inf/classess クラス・フォルダーを追加します。
「OK」をクリックします。
- Axis ランタイムをターゲットとする Web サービス Ant タスクは、Web サービスの生成は処理しますがデプロイメントは処理しません。その結果、Ant タスクを使用して作成される Axis
Web サービスは、Apache Axis 固有の「AdminClient」ユーティリティーを使用して
サービスを手動でデプロイするまで、実行中のサーバーで到達不能になります。Axis AdminClient ツールを使用して、生成される deploy.wsdd (これは、Web プロジェクトの
WebContent/WEB-INF ディレクトリーの下にあるサブディレクトリーにあります) を
手動で Axis にデプロイしてください。詳細については、「Axis 1.3 User's Guide」の
『Using the AdminClient』セクションを参照してください。