Web サービス・ゲートウェイのトラブルシューティングのヒント

この一連の具体的ヒントは、Web サービス・ゲートウェイの使用時に発生する問題のトラブルシューティングに役立てることができます。

[z/OS]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 サービス・ストリング配列メッセージは、一部のターゲット・サービス・プロバイダーとは正常に相互運用が行われない

JAX-RPC クライアント・バインディングの名前空間およびエンドポイント・アドレスをオーバーライドすることで、バス宛先に直接メッセージを渡すことができます。 ただし、以下の点に注意してください。
  • 生成されたデフォルトの RPC エンコード Web サービス・ストリング配列メッセージは、一部のターゲット・サービス・プロバイダーとは正常に相互運用が行われない可能性があります。
  • 生成されたストリング配列のメッセージが、正常に相互運用可能な、対応する標準の JAX-RPC と完全一致しない。
以下に、異なる 2 つのメッセージ例を示します。
  • サービス統合バス・メッセージ:
    <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>
デフォルトの動作を変更して、標準 JAX-RPC と完全に互換性があるストリング配列メッセージを送信するには、以下の JVM カスタム・プロパティーを設定します。 このプロパティーを設定すると、バスから送信されるすべてのアウトバウンド JMS Web サービス呼び出しのデフォルト動作が変更されます。
  1. 管理コンソールを開始します。
  2. 「サーバー」 ->「サーバー・タイプ(Server Types)」 ->「WebSphere Application Server (WebSphere application servers)」 -> 「server_name -> [サーバー・インフラストラクチャー (Server Infrastructure)]「Java およびプロセス管理 (Java and Process Management)」 ->「プロセス定義」 > [追加プロパティー]「Java 仮想マシン」 -> [追加プロパティー]「カスタム・プロパティー」に進み、「新規」をクリックします。
  3. 以下の JVM カスタム・プロパティーを作成します。 示されている値には大/小文字の区別があることに注意してください。
    • 名前: com.ibm.websphere.sib.webservices.useTypeSoapArray
    • 値: true
  4. アプリケーション・サーバーを再始動します。

SOAP over JMS Web サービス・メッセージは、Web サービス・ゲートウェイにより、JmsTextMessage ではなく、JmsBytesMessage として送信される

WebSphere Application Server バージョン 6 以降の場合、デフォルトで、Web サービス・ゲートウェイによって送信された SOAP over JMS を使用する Web サービス・メッセージが JmsBytesMessage として送信されますが、WebSphere Application Server バージョン 5.1 の場合は、Web サービス・ゲートウェイによって JmsTextMessage が送信されます。

デフォルトの動作を変更して、互換性のある JmsTextMessage を送信するには、以下の JVM カスタム・プロパティーを設定します。 このプロパティーを設定すると、バスから送信されるすべてのアウトバウンド JMS Web サービス呼び出しのデフォルト動作が変更されます。
  1. 管理コンソールを開始します。
  2. 「サーバー」 ->「サーバー・タイプ(Server Types)」 ->「WebSphere Application Server (WebSphere application servers)」 -> 「server_name -> [サーバー・インフラストラクチャー (Server Infrastructure)]「Java およびプロセス管理 (Java and Process Management)」 ->「プロセス定義」 > [追加プロパティー]「Java 仮想マシン」 -> [追加プロパティー]「カスタム・プロパティー」に進み、「新規」をクリックします。
  3. 以下の JVM カスタム・プロパティーを作成します。 示されている値には大/小文字の区別があることに注意してください。
    • 名前: com.ibm.ws.sib.webservices.useSOAPJMSTextMessages
    • 値: true
  4. アプリケーション・サーバーを再始動します。

ゲートウェイ・サービスを作成すると、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.mapSoapBodyNamespacefalse に設定します。

注: WebSphere Application Server バージョン 5.1 ではエラーが生じる可能性があるため、この方法はデフォルトではフラグが立てられていません。そのため、ゲートウェイ構成を バージョン 5.1 アプリケーション・サーバーから新しいバージョンのアプリケーション・サーバーの新規ゲートウェイ機能へマイグレーションする場合に、初めてこの問題が発生する可能性があります。 マイグレーション後の選択肢は以下の 2 つあります。
  • 生成されるスタブ内の URL を変更することによりメッセージを転送する柔軟性を保持したい場合は、カスタム・プロパティー com.ibm.websphere.wsgw.mapSoapBodyNamespacefalse に設定します。
  • この柔軟性が必要ない場合は、 新しいバージョンのゲートウェイ・サービス 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 以降 にマイグレーションしたり、ゲートウェイ・インスタンスを削除したりすることで自動的には除去されるわけではありません。

バージョン 6 にマイグレーションする際に、これらの追加宛先が以下の 2 つの方法のいずれかで作成されました。
  • -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 でのみ使用可能である

WebSphere Application Server Network Deployment スタンドアロン・サーバー・プロファイルでは、パネルは使用できません。ただし、wsadmin ツールを使用することによって同等の機能が得られる wsadmin コマンド・スクリプトは、スタンドアロン・プロファイルとデプロイメント・マネージャー・プロファイルの両方で使用できます。 ゲートウェイ管理コマンドは、新規ゲートウェイ・インスタンスを作成する以外の すべての主要な要件をカバーしています。 Jacl を使用した wsadmin スクリプト・クライアントでゲートウェイ・インスタンスと それに関連したデフォルトのプロキシー WSDL ロケーション情報を作成することができます。
[IBM i]注: [IBM i]wsadmin スクリプト・クライアントは Qshell から実行されます。. [IBM i]詳しくは、wsadmin スクリプトを使用した WebSphere スクリプトを実行するための Qshell の構成.
以下に スクリプトの例を示します。
  • 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"
この例で、bus または $bus は、ゲートウェイ・インスタンスが作成されるサービス統合バスの ID です。 WebSphere Application Server AdminConfig オブジェクトの詳細については、wsadmin コマンド行から「AdminConfig.help()」と入力してください。

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwsg_prob0
ファイル名:rwsg_prob0.html