Red Hat Training

A Red Hat training course is available for Red Hat Fuse

347.14. デバッグを支援する名前空間の監査

Camel 2.10 以降で利用可能

ユーザーが頻繁に直面する XPath 関連の問題の多くは、名前空間の使用に関連しています。メッセージに存在する名前空間と、XPath 式が認識または参照している名前空間との間に、多少のずれがある場合があります。XPath の述語または式において、名前空間の問題が原因で XML 要素と属性を見つけることができない場合は、実際には名前空間の定義が不足しているだけにも関わらず、機能していないように見える場合があります。

XML の名前空間は必ず必要で、ある操作を実装して名前空間を自動的に接続することで使用方法を簡素化することができるといいのですが、実際は、このような道筋をたどったアクションは、標準に反してしまい、相互運用性が確保しにくくなります。

したがって、XPath 式言語に 2 つの新機能を追加して、述語と式の両方からアクセスできるようして、このような問題のデバッグを支援することがこちらで最大限提供できる内容です。

#=== XPath 式/述語の名前空間コンテキストのロギング

内部プールで新しい XPath 式が作成されるたびに、Camel は式の名前空間コンテキストを org.apache.camel.builder.xml.XPathBuilder ロガーに記録します。Camel は Namespace Context を階層的な方法 (親子関係) で表すため、ツリー全体が次の形式で再帰的に出力されます。

[me: {prefix -> namespace}, {prefix -> namespace}], [parent: [me: {prefix -> namespace}, {prefix -> namespace}], [parent: [me: {prefix -> namespace}]]]

これらのオプションのいずれかを使用して、このログを有効にできます。

  1. org.apache.camel.builder.xml.XPathBuilder ロガー、または org.apache.camel やルートロガーなどの親ロガーで TRACE ロギングを有効にします。
  2. Auditing Namespaces に示されているように logNamespaces オプションを有効にします。この場合、ログは INFO レベルで発生します。