XML Module のトラブルシューティング - Mule 4

XML Module のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。

冗長ログの有効化

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

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

冗長ログを有効にする手順は、次のとおりです。

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

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

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

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

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

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

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

スキーマの問題に対する検証のトラブルシューティング

XML Module を使用して他のローカルスキーマファイルに対する参照があるスキーマに対して検証すると、検証がエラーで失敗する可能性があります。

The supplied schemas were not valid. schema_reference: Failed to read schema document schemadocumentname.xsd, because file access is not allowed due to restriction set by the accessExternalSchema property

Studio コンソールのエラーは次のように表示されます。

ERROR 2021-03-25 18:42:34,499 [[MuleRuntime].uber.03: [bug-xsd-schema-not-found-support].bug-xsd-schema-not-foundFlow.CPU_INTENSIVE @52ec9ec0] [processor: ; event: 026a10a0-8db3-11eb-80a6-3c22fb270222] org.mule.runtime.core.internal.exception.DefaultSystemExceptionStrategy:
********************************************************************************
Message               : The supplied schemas were not valid. schema_reference: Failed to read schema document 'schemadocumentname.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property.
Element               : bug-xsd-schema-not-foundFlow/processors/2 @ bug-xsd-schema-not-found-support:main.xml:16 (Validate schema)
Element DSL           : <xml-module:validate-schema schemas="ref/despatchAdviceMessages/despatchAdviceMessage.xsd"></xml-module:validate-schema>
Error type            : XML-MODULE:INVALID_SCHEMA
FlowStack             : at bug-xsd-schema-not-foundFlow(bug-xsd-schema-not-foundFlow/processors/2 @ bug-xsd-schema-not-found-support:main.xml:16 (Validate schema))
  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

このエラーは、​[Expand entities (エンティティを拡張)]​ 項目がデフォルト値の ​[NEVER]​ に設定されていて、XML Module グローバル要素設定でアクセスが制限されていたために発生します。この値により、XXE (XML 外部エンティティ) および DoS (サービス拒否) 攻撃を回避できます。

この問題を解決するには、​[Expand entities (エンティティを拡張)]​ 項目を ​[INTERNAL (内部)]​ に設定します。

  1. Studio で、プロジェクトを開き、Mule アプリケーションフローにアクセスします。

  2. [Global Element (グローバル要素)]​ タブに移動します。

  3. [XML Config (XML 設定)]​ 設定を選択して、​[Edit (編集)]​ をクリックします。

  4. [Global Element Properties (グローバル要素のプロパティ)]​ ウィンドウで、​[Expand entities (エンティティを拡張)]​ 項目を ​[INTERNAL (内部)]​ に設定します。

  5. [OK]​ をクリックします。

XML Module のグローバル設定の [Expand entities (エンティティを拡張)] 項目

設定 XML​ エディターでは、​<expandEntities>​ 設定は次のように記述されます。

<xml-module:config name="XML_Config" expandEntities="INTERNAL"/>
xml

一般的なスローを理解する

ここでは、一般的なスローメッセージとその解決方法を示します。

  • XML-MODULE:INVALID_INPUT_XML

    入力ドキュメントが有効な XML ではありません。
  • XML-MODULE:INVALID_SCHEMA

    指定されたスキーマが無効です。
  • XML-MODULE:INVALID_XPATH_EXPRESSION

    指定された Xpath 式が無効です。
  • XML-MODULE:NULL_CONTEXT_PROPERTY

    null 値のコンテキストプロパティが指定されました。
  • XML-MODULE:SCHEMA_NOT_HONOURED

    入力 XML ドキュメントがそのスキーマを順守していません。
  • XML-MODULE:SCHEMA_NOT_FOUND

    スキーマが見つかりませんでした。
  • XML-MODULE:TRANSFORMATION

    XML ドキュメントの変換中にエラーが発生しました。
  • XML-MODULE:SCHEMA_INPUT_ERROR

操作の実行中に [Schema (スキーマ)] 項目と [Schema Content (スキーマコンテンツ)] 項目が同時に使用されたため、Validate schema 操作が失敗しました。スキーマ XSD コンテンツの検証には、これらのいずれかの項目のみを使用できます。