Web サービス・ゲートウェイのトラブルシューティングのヒント
この一連の具体的ヒントは、Web サービス・ゲートウェイの使用時に発生する問題のトラブルシューティングに役立てることができます。
Web サービス・ゲートウェイ関連の問題を識別して解決するには、コンポーネント・トレース (CTRACE) の設定で説明されているように、WebSphere Application Server トレースおよびロギングの機能を使用します。
ゲートウェイのトレースを使用可能にするには、アプリケーション・サーバーのトレース・ストリングを com.ibm.ws.sib.webservices.*=all=enabled:com.ibm.ws.wsgw.*=all=enabled に設定します。ゲートウェイに関連すると思われる問題が生じた場合、WebSphere Application Server 管理コンソール、およびアプリケーション・サーバーの SystemOut.log ファイルで、エラー・メッセージを調べることができます。アプリケーション・サーバーのデバッグ・トレースを使用可能にして、例外のダンプの詳細を入手することもできます。
Web サービス・ゲートウェイは、サービス統合バス対応 Web サービスの上に管理レイヤーとして実装されます。そのため、ゲートウェイの使用時に発生する可能性のある既知の問題のほとんどは、 実際はバス対応 Web サービス関連の問題です。これらの問題については、 バス対応 Web サービスのトラブルシューティングのヒントを参照してください。
WebSphere Application Server システム・メッセージは、アプリケーション・サーバー・コンポーネントやアプリケーションなど、さまざまなソースからログに記録されます。 アプリケーション・サーバー・コンポーネントによって記録され、IBM 製品に関連したメッセージは、 メッセージを発行したコンポーネントまたはアプリケーションを示す固有のメッセージ ID で始まります。Web サービス・ゲートウェイ・コンポーネントの接頭部は CWWSG です。 また、バス対応 Web サービス・コンポーネントの接頭部は CWSWS です。
トピックトラブルシューター・リファレンス: メッセージには、 メッセージ接頭語で索引付けしたゲートウェイおよびバス使用可能 Web サービス・メッセージについての情報が含まれています。それぞれのメッセージごとに問題の説明、および問題を解決するために取ることのできるアクションの詳細が記載されています。
- メッセージをバス宛先に直接渡すと、デフォルトの RPC エンコード形式の Web サービス・ストリング配列メッセージは、一部のターゲット・サービス・プロバイダーとは正常に相互運用が行われない
- SOAP over JMS Web サービス・メッセージは、Web サービス・ゲートウェイにより、JmsTextMessage ではなく、JmsBytesMessage として送信される
- ゲートウェイ・サービスを作成すると、Web ブラウザーを使用してゲートウェイ・サービス WSDL ファイルへのアクセスを試行するまで、SDO リポジトリーに WSDL 記述が作成されない
- ゲートウェイの WebSphere Application Server Version 5.1 からそれより後のバージョンへのマイグレーション
- ゲートウェイ・サービスではなく、ターゲット・サービス用の WSDL からの Web サービス・クライアントの生成
- フィルターが含まれたゲートウェイを WebSphere Application Server Version 5.1 から それよりも後のバージョンにマイグレーションするとフィルターが動作しない
- フィルターが含まれたゲートウェイを WebSphere Application Server バージョン 5.1 からバージョン 7.0 以降 にマイグレーションすると、名前の末尾に StorageQueue が付いた宛先が作成された
- WebSphere Application Server バージョン 5.1 では動作するクライアント・アプリケーションで、それ以降のバージョン では形式が適切でない要求や応答が原因で問題が発生する
- WebSphere Application Server バージョン 5.1 上で実行する JAX-RPC クライアントは、SOAP over JMS を使用して、バージョン 5.1 アプリケーション・サーバーで実行する Web サービスを起動します
- 管理コンソールのゲートウェイ・パネルは、WebSphere Application Server Network Deployment でのみ使用可能である
メッセージをバス宛先に直接渡すと、デフォルトの RPC エンコード形式の Web サービス・ストリング配列メッセージは、一部のターゲット・サービス・プロバイダーとは正常に相互運用が行われない
- 生成されたデフォルトの RPC エンコード Web サービス・ストリング配列メッセージは、一部のターゲット・サービス・プロバイダーとは正常に相互運用が行われない可能性があります。
- 生成されたストリング配列のメッセージが、正常に相互運用可能な、対応する標準の JAX-RPC と完全一致しない。
- サービス統合バス・メッセージ:
<partname env:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/ xsi:type='ns1:ArrayOf_xsd_string'> <item xsi:type='xsd:anySimpleType'>namevalue</item> </partname>
- JAX-RPC クライアント・メッセージ:
<partname xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]"> <item>namevalue</item> </partname>
- 管理コンソールを開始します。
- に進み、「新規」をクリックします。
- 以下の JVM カスタム・プロパティーを作成します。
示されている値には大/小文字の区別があることに注意してください。
- 名前: com.ibm.websphere.sib.webservices.useTypeSoapArray
- 値: true
- アプリケーション・サーバーを再始動します。
SOAP over JMS Web サービス・メッセージは、Web サービス・ゲートウェイにより、JmsTextMessage ではなく、JmsBytesMessage として送信される
WebSphere Application Server バージョン 6 以降の場合、デフォルトで、Web サービス・ゲートウェイによって送信された SOAP over JMS を使用する Web サービス・メッセージが JmsBytesMessage として送信されますが、WebSphere Application Server バージョン 5.1 の場合は、Web サービス・ゲートウェイによって JmsTextMessage が送信されます。
- 管理コンソールを開始します。
- に進み、「新規」をクリックします。
- 以下の JVM カスタム・プロパティーを作成します。
示されている値には大/小文字の区別があることに注意してください。
- 名前: com.ibm.ws.sib.webservices.useSOAPJMSTextMessages
- 値: true
- アプリケーション・サーバーを再始動します。
ゲートウェイ・サービスを作成すると、Web ブラウザーを使用してゲートウェイ・サービス WSDL ファイルへのアクセスを試行するまで、SDO リポジトリーに WSDL 記述が作成されない
各ゲートウェイ・サービスには関連したインバウンド・サービスがあります。ゲートウェイ・サービス WSDL ファイルはこのインバウンド・サービスと関連付けられており、メッセージがインバウンド・サービスから発信される場合にのみ必要となります。 したがって、WSDL 記述はインバウンド・サービスまたは Web ブラウザーによって初めて呼び出されたときに SDO リポジトリーに作成されます。
アプリケーションがインバウンド・サービス以外のソースからバスにメッセージを送る場合 (例えば、メディエーション・ハンドラーを使用してゲートウェイ・サービスとの SDO メッセージの送受信操作を行っている場合)、アプリケーションは対象となる (アウトバウンド) サービスと関連付けられた WSDL か、または別の互換性のある WSDL を使用します。
ゲートウェイの WebSphere Application Server Version 5.1 からそれより後のバージョンへのマイグレーション
バージョン 5 のゲートウェイがゲートウェイ・サービス用に WSDL を生成すると、生成された名前空間にサービス名が含まれます。例: namespace="http://griddev:9080/wsgw#yourService"。 しかし、新しいバージョンでは、ゲートウェイ・サービス用に生成された WSDL にサービス名は含まれません。例: namespace="http://griddev:9080/wsgw"。
文書リテラル・スタイルは namespace 属性を使用しないため、WSDL バインディングおよびエンコードのスタイルが文書リテラルの場合、クライアントはマイグレーション済みゲートウェイを使用した作業を行います。しかし、バージョン 5.1 のゲートウェイ・サービス WSDL を使用して Web サービス・クライアントを生成し、WSDL バインディングおよびエンコードのスタイルが文書リテラルでない場合は、マイグレーション後に、新しいゲートウェイ・サービス WSDL を使用してクライアント・スタブを再生成する必要があります。
ゲートウェイ・サービスではなく、ターゲット・サービス用の WSDL からの Web サービス・クライアントの生成
ターゲット・サービスの WSDL から Web サービス・クライアントを生成する利点は、生成されるスタブ内の URL を変更するだけで、ターゲット・サービスに直接移動するか、ゲートウェイを通じてターゲット・サービスに移動するかを切り替えられることです。 このバージョンのゲートウェイでこの方法を使用可能にするには、管理コンソールを使用して、ゲートウェイ・サービスと関連付けられているそれぞれのインバウンド・サービスごとに、カスタム・プロパティー com.ibm.websphere.wsgw.mapSoapBodyNamespace を false に設定します。
- 生成されるスタブ内の URL を変更することによりメッセージを転送する柔軟性を保持したい場合は、カスタム・プロパティー com.ibm.websphere.wsgw.mapSoapBodyNamespace を false に設定します。
- この柔軟性が必要ない場合は、 新しいバージョンのゲートウェイ・サービス WSDL を使用してクライアント・スタブを再生成します。
フィルターが含まれたゲートウェイを WebSphere Application Server Version 5.1 から それよりも後のバージョンにマイグレーションするとフィルターが動作しない
バージョン 5.1.1 でフィルターの使用が非推奨になり、バージョン 7.0 でフィルターのサポートが廃止されました。 そのロールは、以前はフィルターが担当していましたが、現在では JAX-RPC ハンドラーおよびサービス統合バス・メディエーションの組み合わせが担当しています。 ルーティング・フィルターを含む Web サービス・ゲートウェイをマイグレーションする場合は、フィルター機能を再作成することができます。
フィルターが含まれたゲートウェイを WebSphere Application Server バージョン 5.1 からバージョン 7.0 以降 にマイグレーションすると、名前の末尾に StorageQueue が付いた宛先が作成された
これらの追加の宛先は、既存のバージョン 5.1 のゲートウェイのフィルターをバージョン 6 環境でサポートするために必要です。ゲートウェイ・フィルターはサポートされなくなったので、バージョン 7.0 以降 ではこれらの「StorageQueue」宛先は必要なくなりました。ただし、バージョン 7.0 以降 にマイグレーションしたり、ゲートウェイ・インスタンスを削除したりすることで自動的には除去されるわけではありません。
- -Q パラメーター (共有フィルター相関キュー名) を指定した場合、指定された名前の単一のキュー宛先が (存在していない場合に) 作成され、 関連するフィルターを持つすべてのゲートウェイ・サービスで共有されます。
- -Q パラメーターを指定しない場合、フィルターを関連付けたゲートウェイ・サービスごとに個別のキュー宛先が作成されます。 これらのそれぞれの宛先には、 対応するゲートウェイ・サービス要求および応答の宛先の名前から派生した名前が付き、末尾が StorageQueue になります。
ゲートウェイのインスタンスを削除した後は、 それぞれの関連するストレージ・キュー宛先を名前で識別し、 非トピックのスペース・バス宛先の削除 で説明されているように削除します。
WebSphere Application Server バージョン 5.1 では動作するクライアント・アプリケーションで、それ以降のバージョン では形式が適切でない要求や応答が原因で問題が発生する
バス対応 Web サービスは、WebSphere Application Server バージョン 5.1 よりも徹底的に Web サービス・メッセージの妥当性を検査します。その結果として、形式が不適切な要求または応答 (メッセージ・パーツの名前が誤っている) を使用し、かつバージョン 5.1 の使用時には正常に動作するいくつかのクライアント・アプリケーションが、後続バージョンでは形式が不適切であると識別されます。問題解決のために実行するステップについては、 形式が不適切な SOAP メッセージの許容 を参照してください。
WebSphere Application Server バージョン 5.1 上で実行する JAX-RPC クライアントは、SOAP over JMS を使用して、バージョン 5.1 アプリケーション・サーバーで実行する Web サービスを起動します
WebSphere Application Server バージョン 5.1 上で実行する JAX-RPC クライアントは、SOAP over JMS を使用して、バージョン 5.1 アプリケーション・サーバーで実行する Web サービスを起動します。ターゲットの MQ Series キューでは、ユーザー ID もパスワードも 必要ありません。アプリケーション・サーバーが新しいバージョンにマイグレーションされた後、デフォルトのメッセージングを使用すると、基本認証が使用可能になっているため、クライアント要求が失敗します。
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.
問題解決のために実行するステップについては、 以下のサービス統合テクノロジーのトラブルシューティングのヒントを参照してください: バージョン 5.1 アプリケーション・サーバーの WebSphere Application Server バージョン 7.0 以降 へのマイグレーション
管理コンソールのゲートウェイ・パネルは、WebSphere Application Server Network Deployment でのみ使用可能である
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
- Jython の使用:
wsgwAttribs = [] wsgwAttribs.append(["name", wsgwName]) wsgwAttribs.append(["wsdlServiceNamespace", wsgwNamespace]) wsgw = AdminConfig.create("WSGWInstance", bus, wsgwAttribs ) wsgwWsdlAttribs = [] wsgwWsdlAttribs.append(["WSDLLocation", wsgwWsdlLocation]) AdminConfig.create("SIBWSWSDLLocation", wsgw, wsgwWsdlAttribs, "defaultProxyWSDLLocation" )
- Jacl を使用:
set wsgwAttribs {} lappend wsgwAttribs [list "name" $wsgwName] lappend wsgwAttribs [list "wsdlServiceNamespace" $wsgwNamespace] set wsgw [$AdminConfig create "WSGWInstance" $bus $wsgwAttribs] set wsgwWsdlAttribs {} lappend wsgwWsdlAttribs [list "WSDLLocation" $wsgwWsdlLocation] $AdminConfig create "SIBWSWSDLLocation" $wsgw $wsgwWsdlAttribs "defaultProxyWSDLLocation"