Workday Connector 16.2 のトラブルシューティング - Mule 4

Workday 用 Anypoint Connector (Workday Connector) をトラブルシューティングするには、一般的な特定エラーへの対応と一般的にスローされる例外メッセージの解釈について理解しておく必要があります。

SSL ログの有効化

SSL ログを有効化して、TLS 通信に関連する問題を調査します。

必要な詳細レベルに応じて SSL ログレベルを設定します。

  1. SSL ログの詳細のみを有効化します。

    javax.net.debug=ssl

  2. ハンドシェイクの詳細のみを有効化します。(ハンドシェイクプロトコルは、レコードプロトコル上で交換される一連のメッセージです。)

    javax.net.debug=ssl:handshake

  3. ハンドシェイクの詳細と SSL の詳細を同時に有効化します。

    javax.net.debug=ssl, handshake

  4. すべての詳細とトラフィックデータのダンプを有効化します。

    javax.net.debug=all

    このオプションは非常に冗長であり、通常の状況では不要です。
SSL ログは、HTTPS または他の TLS 接続のパフォーマンスに影響します。SSL ログは、特定の問題のトラブルシューティングを行うためにのみ有効化し、長期間有効にしないでください。SSL ログでは大量のログメッセージが生成されるため、有効にしたまま放置しておくと、ログファイルが溢れる可能性があります。

SSL ログを有効化する手順は、次のとおりです。

アプリケーションのランタイム設定でデバッグパラメーターを引数として設定します。

  1. Studio で、プロジェクトを右クリックし、​[Run (実行)] > [Run Configurations (実行設定)]​ を選択します。

  2. [Arguments (引数)]​ タブに移動して、​[VM arguments (VM 引数)]​ セクションで ​-M-Djavax.net.debug=ssl​ を追加します。

冗長例外ログの有効化

冗長例外ログを有効化して、デフォルトの切り捨てられた出力ではなくエラーの完全なスタック追跡を表示します。

  1. Studio で、プロジェクトを右クリックし、​[Run (実行)] > [Run Configurations (実行設定)]​ を選択します。

  2. [Arguments (引数)]​ タブに移動して、​[VM arguments (VM 引数)]​ セクションで引数を付加して ​mule.verbose.exceptions​ プロパティを追加します。次に例を示します。

    -XX:PermSize=128M -XX:MaxPermSize=256M -Dmule.verbose.exceptions=true

冗長ログの有効化

アプリケーションと Workday Connector のやりとりが失敗する理由の理解を深めるには、コネクタの冗長ログを一時的に有効にします。

Mule アプリケーションのパフォーマンスに影響する可能性があるため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。

設定ファイルで冗長ログを有効にする手順は、次のとおりです。

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

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

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

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

  5. <Loggers>​ タグ内に ​<AsyncLogger>​ タグを追加します。

    			<Loggers>
    				...
    				<AsyncLogger name="com.mulesoft.connectors.workday" level="DEBUG"/>
    				...
    			</Loggers>
    xml
  6. アプリケーションの変更を保存します。

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

一般的なエラーのトラブルシューティング

一般的な Workday Connector のエラーと、解決方法のリストを次に示します。

接続エラー

コネクタは ​CONNECTIVITY​ エラーをスローして再接続プロセスをトリガーします。コネクタが ​CONNECTIVITY​ エラーをスローし、エラーをスローする設定に対して再接続が指定されている場合、コネクタは自動的にセッションを再作成して操作を再試行します。

再接続プロセスは Mule Runtime が処理しますが、いくつかの例外があります。たとえば、接続の作成プロセス中に ​CONNECTIVITY​ エラーがスローされた場合は、再接続が指定されていても、再接続プロセスはトリガーされません。これは、​CONNECTIVITY​ エラーがサードパーティシステムへの接続中に発生し、​CONNECTIVITY​ エラー (通常は期限切れのログイン情報や設定エラーによって発生します) が毎回発生する可能性があるので、再接続が繰り返し再試行されてしまわないようにするためです。接続の作成プロセス中にスローされた ​CONNECTIVITY​ エラーは、ユーザーの責任で処理する必要があります。

すべての HTTP コールでの警告の削除

Workday Connector では、すべての HTTP コールで次の警告メッセージをログに記録します。

WARN  2020-11-10 10:51:57,494 [[MuleRuntime].uber.12: [workday].workdayFlow.BLOCKING @766054e8] [processor: ; event: 5ec7a670-233a-11eb-a099-f018989d247f] com.ning.http.client.RequestBuilderBase: Value was null, set to ""
xml

この警告を Anypoint Studio コンソールから削除するには、次の行を使用して ​src/main/resources/log4j2.xml​ を更新します。

<AsyncLogger name="com.ning.http.client.RequestBuilderBase" level="ERROR"/>
xml

Studio のタイムアウト

接続の問題により、Workday Connector からメタデータを取得している間にタイムアウトとなり、以下のいずれかのエラーが返されることがあります。

  • Error While Retrieving SOAP Client ID (SOAP クライアント ID の取得中にエラーが発生しました)

    org.mule.runtime.api.exception.MuleRuntimeException: Error while retrieving soap client id [Absence_Management]
      org.mule.runtime.api.exception.MuleRuntimeException: Error while retrieving soap client id [Absence_Management]
      Caused by: java.util.concurrent.ExecutionException:
      org.mule.wsdl.parser.exception.WsdlParsingException: Error processing
      WSDL file [https://wd3-impl-services1.workday.com/ccx/service/deakin_amu1/Absence_Management/v29.1?wsdl]:
      Unable to locate document at 'https://wd3-impl-services1.workday.com/ccx/service/deakin_amu1/Absence_Management/v29.1?wsdl&#39;.
    text
  • Mule Agent REST Service Timed Out (Mule エージェント REST サービスがタイムアウトになりました)

    org.mule.tooling.client.api.exception.TimeoutException: Mule Agent REST service timed out
      org.mule.tooling.client.api.exception.TimeoutException: Mule Agent REST service timed out
      javax.ws.rs.ProcessingException: java.net.SocketTimeoutException: Read timed out
      	at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:244)
      	at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:245)
      	at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:671)
      	at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:668)
      	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
      	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
      	at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
      	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
      	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:668)
      	at
    text

このエラーを解決する手順は、次のとおりです。

Anypoint Studio でタイムアウト値を増やします。

  1. Anypoint Studio で、​[Preferences (プリファレンス)] > [Anypoint Studio] > [Tooling (ツール設定)]​ に移動します。

  2. Default Connection Timeout​ と ​Default Read Timeout​ の値を増やして、デフォルト値の 2 倍にします。

  3. [Apply (適用)]​ をクリックし、Studio を再起動します。

接続のテスト時に Get Degrees エラーが発生する

[Test Connection (接続をテスト)]​ ボタンを使用して接続性を検証するときに、​Get_Degrees​ 操作に関連するエラーが発生することがあります。

org.mule.runtime.api.exception.MuleRuntimeException: java.lang.RuntimeException: Unexpected error while consuming the web service operation [Get_Degrees]
text

[Test Connection (接続をテスト)]​ ボタンを使用して接続性を検証するために、Workday Connector は ​Get_Degrees​ 操作で ​Performance_Management​ サービスを使用します。そのサービスで操作を実行する権限がサービスアカウントにあることを確認してください。このエラーを解決するには、​Performance_Management​ Web サービスの ​Get_Degrees​ 操作の権限を付与します。

スローされる一般的な例外メッセージの理解

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

  • WORKDAY:CONNECTIVITY

    A connection cannot be established. (接続を確立できません。)
  • WORKDAY:PROCESSING_ERROR

    A processing error occurs, for example, the connector cannot read from the inbound message. (処理エラーが発生しました。例: コネクタがインバウンドメッセージを読み取れません。)
  • WORKDAY:RETRY_EXHAUSTED

    操作の最大再試行回数に達しました。
  • WORKDAY:VALIDATION_ERROR

    A validation error occurs, for example, an inactive organization includes an active organization. (検証エラーが発生しました。例: 非アクティブな組織にアクティブな組織が含まれています。)