377.11. XSLT と Java バージョンの使用に関する注意事項
以下は、Camel ユーザーである Sameer が共有してくれた、いくつかの意見を紹介します。
XSLT エンドポイントで問題が発生した場合は、これらの点を確認してください。
単純な xsl を使用して、ある xml から別の xml への単純な変換に xslt エンドポイントを使用しようとしていました。出力 xml は、(ルートの xslt プロセッサーの後に) 表示され続け、コンテンツが含まれていない最も外側の xml タグを使用していました。
DEBUG ログに説明が表示されません。ただし、TRACE ログで、XMLConverter Bean を初期化できなかったことを示すエラー/警告が見つかりました。
数時間頭を悩ませた後、それを機能させるために次のことをしなければなりませんでした (手がかりを与えてくれたユーザーフォーラムの投稿のおかげです)。
-
class="org.apache.xalan.xsltc.trax.TransformerFactoryImpl"
の Spring コンテキストで定義された Bean を持つtFactory
Bean を使用して、ルート("xslt:my-transformer.xsl?transformerFactory=tFactory")
で TransformerFactory オプションを使用します。
- Xalan jar を maven pom に追加しました。
私の推測では、JDK 内で提供されるデフォルトの xml 解析メカニズム (私は 1.6.0_03 を使用しています) は、このコンテキストでは正しく機能せず、エラーも発生しません。この方法で Xalan に切り替えると、うまくいきます。これは Camel の問題ではありませんが、xslt コンポーネントページで言及する必要があるかもしれません。
別の注意として、jdk 1.6.0_03 には JAXB 2.0 が同梱されていますが、Camel には 2.1 が必要です。1 つの回避策は、jvm の jre/lib/endorsed
ディレクトリーに 2.1 jar を追加するか、コンテナーで指定されたとおりに追加することです。
この投稿が初心者の Camel 使用者の時間を節約できることを願っています.