Web Services Invocation Framework (WSIF) の際に直面する問題の トラブルシューティングに役立つ具体的なヒント。
WebSphere レベルの問題の解決については、問題の診断および修正を参照してください。
Web Services Invocation Framework (WSIF) 関連の問題を識別して解決するには、 標準の WebSphere Application Server のトレース およびロギング機能を使用できます。 WSIF に関連すると思われる問題が生じたら、WebSphere Application Server 管理コンソール、 およびアプリケーション・サーバーの stdout.log ファイルで、エラー・メッセージを調べることができます。アプリケーション・サーバーのデバッグ・トレースを使用可能にして、例外のダンプの詳細を入手することもできます。
WSIF ランタイムのシステム・メッセージのリストとそれぞれのメッセージの詳細な説明は、 WSIF のメッセージ解説に記載しています。
WSIF を使用している際に適用する主な既知の制約事項のリストは、 WSIF - 既知の制約事項に提供されています。
ここでは、WSIF の主要なアクティビティーのチェックリストと、 それぞれのアクティビティーに関連する共通問題へのアドバイスを記載しています。
自作の WSDL では、 多数の問題が発生する可能性があります。有効な WSDL を確実に作成するには、WebSphere Studio Application Developer (WSAD) などのツールを使用して Web サービスを作成します。
WSIF サービス、ポート、オペレーションおよびメッセージを作成する場合は、正しいフォーマットに従います。 正しいコードの例については、例: WSIF を使用して AddressBook サンプル Web サービスの動的呼び出しを有効にするを参照してください。
WebSphere Application Server の server.policy ファイル (/properties ディレクトリーにあります) のセキュリティー設定が正しいことを確認します。 詳しくは、WSIF のセキュリティーの使用可能化を参照してください。
wsif.properties ファイルが正しくセットアップされていることを確認します。 詳しくは、wsif.properties ファイル - 初期コンテンツを参照してください。
クライアント・クラス、WSIF JAR ファイル、およびその他の必要な JAR ファイルへの参照がクラスパスに入るように正しく定義したことを確認するか、あるいは (できれば) WebSphere Application Server の launchClient ツールを使用してクライアントを実行します。
クライアント・クラス、WSIF JAR ファイル、およびその他の必要な JAR ファイルへの参照が クラスパスに入るように正しく定義されていることを確認するか、あるいは (できれば) WebSphere Application Server の クライアントの起動ツールを使用してクライアントを 実行します。このツールの詳細については、PDF 資料「アプリケーションの開発と配置」の 『アプリケーション・クライアントの実行』の章を 参照してください。
この問題は、クラス・パスのセットアップでのエラーを示します。該当する JAR ファイルが組み込まれていることを確認してください。
次のような原因が考えられます。
以下の項目もチェックしてください。
WebSphere Application Server の server.policy ファイル (/properties ディレクトリーにあります) のセキュリティー設定が正しいことを確認します。 詳しくは、WSIF のセキュリティーの使用可能化を参照してください。
Web サービスを WebSphere Application Server にデプロイする前に 、Web サービスの有効範囲について決定する必要があります。 Web サービスのデプロイメント記述子ファイル dds.xml には、以下の行が含まれます。
<isd:provider type="java" scope="Application" ......
Scope 属性は、Application または Session に設定できます。デフォルト設定は Application であり、この値が正しいのは、Web サービスへの各要求で、オブジェクトを単一インスタンスより長く維持する必要がない場合です。 Scope が Application に設定されている場合、 単一インスタンスの実行中にオブジェクトを別の要求で使用することはできず、オブジェクトは完了時に解放されます。 Web サービスで、オブジェクトを複数の要求用に維持する必要があり、 要求ごとに一意にする必要がある場合は、有効範囲を Session に設定する必要があります。Scope が Session に設定されている場合、セッションの存続期間中にオブジェクトを別の要求で使用することはできず、 オブジェクトはセッションの完了時に解放されます。 有効範囲が Session ではなく、Application に設定されている場合は、次のような SOAP エラーが生じる場合があります。
SOAPException: SOAP-ENV:ClientParsing error, response was: FWK005 parse may not be called while parsing.; nested exception is: [SOAPException: faultCode=SOAP-ENV:Client; msg=Parsing error, response was: FWK005 parse may not be called while parsing.; targetException=org.xml.sax.SAXException: FWK005 parse may not be called while parsing.]
異なるマシンにある アプリケーション・サーバーで稼働するメッセージング・キューとキュー接続ファクトリーに 同じ名前を使用しないでください。これは、WSIF は、常に最初に JMS 宛先をローカルに検索し、 その宛先をローカルで見つけられない場合にのみ完全 JNDI 参照を 使用するためです。例えば、Web サービスをリモート・マシンで実行し、 メッセージング・キューおよびキュー接続ファクトリーに同じ名前を使用するアプリケーション・サーバーがローカルに稼働している場合、WSIF は、リモート JNDI 宛先が WSDL サービス定義で完全に提供されている場合でもローカル・キューを検索して使用します。
SibMessage W [:] CWSIT0009W: A client request failed in the application server with endpoint <endpoint_name> in bus <your_bus> with reason: CWSIT0016E: The user ID null failed authentication in bus <your_bus>.
問題解決の手順については、 次のサービス統合テクノロジー・トラブルシューティングのヒントを参照してください。アプリケーション・サーバーを WebSphere Application Server バージョン 6 にマイグレーションした後では、既存の Web サービス・クライアントは、マイグレーションしたサーバーにホストされたサービスへの アクセスに SOAP over JMS を使用できなくなります。
この制約事項は、IBM Web サービス SOAP プロバイダーが、JAX-RPC 準拠の Web サービスと完全に相互運用できるように設計されているのに対し、Apache SOAP はそのようなサービスを提供できないことが原因となっています。相互運用を使用可能にするには、WSIF SOAP プロバイダー: レガシー・アプリケーションによる作業に説明されているとおりに、 ご使用の Web サービスまたは WSIF デフォルト SOAP プロバイダーを変更します。