首页 > 解决方案 > 使用 camel-saxon 将 Saxon-PE 集成到 Camel 中

问题描述

我将 Camel 2.22.1 与 springboot 2.0.4.RELEASE 一起使用。骆驼组件camel-saxon使用默认的 Saxon-HE。我有一些调用 Java 方法的 Xquery 文件,所以我想用 Saxon-PE 替换 Saxon-HE。我为 Saxon-PE 申请了一份测试许可证,并尝试了不同的方法,但没有成功。Saxon-PE jar 文件saxon9pe.jar已经加载,但是,它仍然作为 Saxon HE 版本工作。我猜,Saxon-PE 没有正确加载许可证。

我尝试了以下方法,但都没有奏效。

Saxon Documentation 提到要创建一个 XML 配置文件,但我不知道我应该把这个 XML 配置文件放在哪里。

使用 Java 调用运行 Xquery 时出现错误:

Caused by: net.sf.saxon.trans.XPathException: Cannot find a 0-argument function named Q{java:java.lang.Double}MAX_VALUE(). Reflexive calls to Java methods are not available under Saxon-HE at net.sf.saxon.query.UnboundFunctionLibrary.bindUnboundFunctionReferences(UnboundFunctionLibrary.java:166) ~[saxon9pe.jar!/:na] at net.sf.saxon.query.QueryModule.bindUnboundFunctionCalls(QueryModule.java:1172) ~[saxon9pe.jar!/:na] at net.sf.saxon.expr.instruct.Executable.fixupQueryModules(Executable.java:462) ~[saxon9pe.jar!/:na] at net.sf.saxon.query.XQueryParser.makeXQueryExpression(XQueryParser.java:176) ~[saxon9pe.jar!/:na] at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:597) ~[saxon9pe.jar!/:na] at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:658) ~[saxon9pe.jar!/:na] at org.apache.camel.component.xquery.XQueryBuilder$3.createQueryExpression(XQueryBuilder.java:276) ~[classes!/:2.23.1] at org.apache.camel.component.xquery.XQueryBuilder.initialize(XQueryBuilder.java:745) ~[classes!/:2.23.1] at org.apache.camel.component.xquery.XQueryBuilder.evaluateAsDOM(XQueryBuilder.java:190) ~[classes!/:2.23.1] at org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:151) ~[classes!/:2.23.1] ... 40 common frames omitted

有人可以分享一些使用骆驼设置 Saxon-PE 以在 Xquery 中调用 Java 的经验吗?

谢谢!

标签: apache-camelsaxon

解决方案


从提供的额外信息来看,您似乎选择的是 Saxon JAR 文件,而不是许可证文件。

将许可证文件与 JAR 文件放在同一文件夹中通常就足够了,但它仅适用于某些类加载器。

通常,您要么需要确保包含 JAR 文件的目录位于类路径中,要么需要(以某种方式)设置 Saxon 的配置属性 LICENSE_FILE_LOCATION。

根据https://github.com/apache/camel/blob/master/components/camel-saxon/src/main/docs/xquery-component.adocconfiguration ,您可以使用and设置 Saxon 配置属性configurationProperties,但我没有请参阅有关其工作原理的任何进一步说明。我会四处挖掘。


推荐阅读