我将Camel 2.22.1与springboot 2.0.4.RELEASE一起使用。骆驼组件camel-saxon
使用默认的Saxon-HE。我有一些Xquery文件,它们调用Java方法,因此我想用Saxon-PE替换Saxon-HE。我申请了一份Saxon-PE的测试许可证,并尝试了不同的方法,但没有成功。 Saxon-PE jar文件saxon9pe.jar
已经加载,但是它仍作为Saxon HE版本工作。我想,该许可证未由Saxon-PE正确加载。
我尝试了以下方法,但没有一个起作用。
saxon-license.lic
和saxon9pe.jar
放在同一文件夹中saxon-license.lic
和saxonpe.jar
放入SAXON_HOME \ bin org.apache.camel.component.xquery.XQueryBuilder.configuration
中类XqueryBuild.java
中org.apache.camel.component.xquery
的{{1}}来设置LICENSE_FILE_LOCATION
(我得到了错误:未知的配置属性http://saxon.sf.net/feature/licenseFileLocation)Saxon文档提到创建一个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的经验吗?
谢谢!
答案 0 :(得分:0)
从提供的其他信息来看,好像您要拾取的是Saxon JAR文件,而不是许可证文件。
将许可文件与JAR文件放置在同一文件夹中通常就足够了,但仅适用于某些类加载器。
通常,您需要确保包含JAR文件的目录在类路径上,或者您需要(以某种方式)设置Saxon的配置属性LICENSE_FILE_LOCATION。
根据https://github.com/apache/camel/blob/master/components/camel-saxon/src/main/docs/xquery-component.adoc,您可以使用configuration
和configurationProperties
来设置Saxon配置属性,但是我看不到对此有任何进一步的解释。我会四处逛逛。