378.11. 关于使用 XSLT 和 Java 版本的信息
以下是来自一个 Camel 用户的 Sameer 的一些观察结果,他与我们共享:
如果任何人在 XSLT 端点时遇到问题,请检查这些点。
我尝试使用 xslt 端点来通过简单的 xsl 从一个 xml 简单转换为另一个。输出 xml 出现(在路由中的 xslt 处理器之后),以及没有任何内容的 xml 标签。
DEBUG 日志中不会显示任何解释。但是,在 TRACE 日志上,我发现一些错误/警告,指示 XMLConverter bean 无法初始化。
在短短几小时之后,我必须进行以下操作才能正常工作(感谢一些线上向用户的一些文章给出了一些线索):
-
使用路由中的 transformerFactory 选项
("xslt:my-transformer.xsl?transformerFactory=
,在tFactory
")class="org.apache.xalan.xsltc.trax.TransformerFactoryImpl"
spring 上下文中定义 bean。
- 将 Xalan jar 添加到 my maven pom 中。
My guess 是 JDK 中提供的默认 xml 解析机制(I am using 1.6.0_03)无法在此上下文中正常工作,且不会抛出任何错误。当我切换到 Xalan 时,它可以正常工作。这不是 Camel 问题,但可能需要提到 xslt 组件页面。
另一个备注,jdk 1.6.0_03 附带 JAXB 2.0,而 Camel 需要 2.1。一个临时解决方案是将 2.1 jar 添加到 jvm 的 jre/lib/endorsed
目录中,或由容器指定。
希望此后,新的 Camel riders 有时可节省大量时间。