Web Service Consumer Connector のトラブルシューティング - Mule 4

Web サービスコンシューマー用 Anypoint Connector (Web Service Consumer Connector) をトラブルシューティングするには、ワイヤーロギングの有効化、添付ファイルへのアクセスのトラブルシューティング、デザイン時の WSDL の問題のトラブルシューティング、一般的なエラーメッセージの解釈に関する情報について理解しておいてください。

ワイヤーロギングを有効化する

Web Service Consumer Connector のトラブルシューティングを開始するには、Web サービスコンシューマーでトランスポート要求と応答を調べます。 基礎となる HTTP トランスポートを使用している場合、ワイヤーロギングを有効化して正確な HTTP メッセージ、トランスミッションヘッダー、応答状況を確認できます。

ワイヤーロギングを有効化する手順は、次のとおりです。

  1. Anypoint Studio にアクセスし、​[Package Explorer]​ ビューに移動します。

  2. アプリケーションのプロジェクト名を開きます。

  3. src/main/resources​ パスフォルダーを開きます。

  4. フォルダー内の ​log4j2.xml​ ファイルを開きます。

  5. 次の行がすでに ​log4j2.xml​ ファイル内にある場合は、そのコメントを解除して有効にします。それ以外の場合、次の行を追加します。

    <AsyncLogger name="org.mule.service.http.impl.service.HttpMessageLogger" level="DEBUG" />
    xml
  6. 変更を保存します。

  7. Package Explorer​ でプロジェクト名をクリックし、​[Run (実行)]​ > ​[Run As (別のユーザーとして実行)]​ > ​[Mule Application (Mule アプリケーション)]​ をクリックします。

  8. [Console (コンソール)]​ ビューに移動し、ロガーの HTTP メッセージを読み取ります。

添付ファイルへのアクセスのトラブルシューティング

一部のサーバーは、MTOM (Message Transmission Optimization Mechanism) メッセージを送信することで要求に応答します。これらのメッセージではデータが各パートに分けられ、これによってさまざまな種類の内容データを同じ HTTP メッセージに含めることができます。

MTOM が個別のパートのバイナリデータの送信と、SOAP エンベロープ内の対応する項目からのそのパートの参照を担当します。 Web サービスコンシューマーユーザーは、MTOM 設定のみを使用してこれらのメッセージ (マルチパート) を操作します。

MTOM についての詳細は、次のドキュメントを参照してください。

バージョン 1.6.4 以降の Web Service Consumer Connector では、Web サービスコンシューマーのグローバル設定での MTOM 設定に関係なく、MTOM 応答も自動的に管理する要求メッセージ用に MTOM を設定できるようになっています。MTOM を使用した受信メッセージは、Web サービスコンシューマーのグローバル設定で MTOM が設定されているかどうかに関係なく、MTOM 対応として扱われます。

次の例は、MTOM が有効になった Web Service Consumer Connector のグローバル設定を示しています。

「MTOM」 項目が TRUE に設定された Web サービスコンシューマーのグローバル要素
Figure 1. Web Service Consumer Connector のグローバル要素

XML エディターでは、​<wsc:config>​ および ​mtomEnabled​ の設定は次のように記述されます。

<wsc:config name="Web_Service_Consumer_Config" doc:name="Web Service Consumer Config">
    <wsc:connection wsdlLocation="http://ilt.mulesoft-training.com/essentials/delta?wsdl" service="TicketServiceService" port="TicketServicePort" address="http://ilt.mulesoft-training.com/essentials/delta" mtomEnabled="true">
        <wsc:web-service-security actor="http://schemas.xmlsoap.org/soap/actor/next" />
    </wsc:connection>
</wsc:config>
xml

サーバー側のマルチパート設定に応じて、サーバーが一部のバイナリデータを Base64 エンコードされたテキスト項目または MIME メッセージで参照されるバイナリパートとして送信する場合もあります。

バイナリデータへのアクセスをトラブルシューティングする手順は、次のとおりです。

  • サーバーがバイナリデータを Base64 エンコードされたテキスト項目として送信する場合、メッセージのパートとしてこの項目にアクセスする必要があります。
    Base64 のでコードは Web サービスコンシューマーによって自動的に実行されます。

  • サーバーがバイナリデータを参照されるバイナリパートとして送信する場合、添付ファイルとしてこの項目にアクセスする必要があります。

    次の例は、Web サービスサーバーによって MTOM を使用して添付ファイルとして送信される画像を示しています。DataWeave を使用して画像にアクセスし、JSON に変換します。この場合、Base64 エンコーディングが必須です。

    import * from dw::core::Strings
    import dw::core::Binaries
    output application/json
    ns nam http://mynamespace.com
    ---
    {
    ...
    "image": Binaries::toBase64(payload.attachments[0]),
    ...
    }
    DataWeave

デザイン時の WSDL の問題のトラブルシューティング

不正な WSDL の認識、取得、解析に関連したエラーがあると、次のような問題が発生することがあります。

  • DataSense によって WSDL で定義されたメッセージメタデータが正しく公開されない。

  • Web Service Consumer Connector の設定画面で、​[Operations (操作)]​ 項目にコネクタが呼び出す Web サービス操作名が一切表示されない。

    空白になっている Web Service Consumer Connector の [Operations (操作)] 項目
    Figure 2. Web Service Consumer Connector の [Operations (操作)] 項目
  • Web Service Consumer Connector のグローバル要素設定で、WSDL の場所が指定されている場合に ​[Port (ポート)]​ 項目と ​[Address (アドレス)]​ 項目が自動的に入力されない。

    Web Service Consumer Connector のグローバル要素ウィンドウで、WSDL の場所が選択されているとポート項目とアドレス項目が自動的に入力されません。
    Figure 3. Web Service Consumer Connector のグローバル要素

これらの問題を解決する手順は、次のとおりです。

  • お好みのオンラインまたはデスクトップのビューアーアプリケーションを使用して WSDL の整合性をチェックします。
    設定中のすべての解析エラーがデザイン時に表示されるわけではないため、外部アプリケーションの実装はこれらのエラーの検出に役立ちます。

  • Studio で WSDL をアプリケーションの ​src/main/resources​ フォルダーのリソースとして追加しない場合は、WSDL をホストするサーバーへの正しい接続を確認してください。
    場合によって、HTTP セキュリティレイヤーの HTTP サーバーにアクセスするために、OAuth 設定やユーザー/パスワード設定などのカスタム HTTP 設定を追加する必要があることもあります。​「カスタム HTTP トランスポートの設定」​を参照してください。

一般的なスローの理解

次に、一般的なスローメッセージとその解釈方法のリストを示します。

  • WSC:SOAP_FAULT

    Error matching the SOAP response with the format provided by the WSDL. (SOAP 応答を WSDL によって指定された形式にマッチングするときにエラーが発生しました。)
    Every CXF SOAP fault error is wrapped in a ​`WSC:SOAP_FAULT`​. (すべての CXF SOAP 失敗エラーは ​`WSC:SOAP_FAULT`​ でラップされます。)
  • WSC:BAD_REQUST

    The Web Service Consumer Connector operation does not exist in the WSDL. (Web サービスコンシューマーコネクタ操作が WSDL に存在していません。)
    The request body is not a valid XML. (リクエストボディが有効な XML ではありません。)
  • WSC:INVALID_WSDL

    The WSDL is poorly formatted. (WSDL の形式が正しくありません。)