Интегрируйте Saxon-PE в Camel с помощью Camel-Saxon - PullRequest
0 голосов
/ 25 января 2019

Я использую Camel 2.22.1 с springboot 2.0.4.RELEASE.Верблюжий компонент camel-saxon использует Saxon-HE по умолчанию.У меня есть несколько файлов Xquery, которые вызывают метод Java, поэтому я хочу заменить Saxon-HE на Saxon-PE.Я запросил одну тестовую лицензию для Saxon-PE и попробовал разные способы, но она не заработала.Файл Jax Saxon-PE saxon9pe.jar уже загружен, однако все еще работает как Saxon HE edition .Я предполагаю, что лицензия не правильно загружена Saxon-PE.

Я пробовал следующие способы, ни один из них не работал.

  • положить файл лицензии saxon-license.lic и saxon9pe.jarв той же папке
  • определите переменную среды SAXON_HOME и поместите saxon-license.lic и saxonpe.jar в SAXON_HOME \ bin
  • , измените org.apache.camel.component.xquery.XQueryBuilder.configuration в классе XqueryBuild.java, в пакете org.apache.camel.component.xquery, чтобыset LICENSE_FILE_LOCATION (Я получил сообщение об ошибке: неизвестное свойство конфигурации http://saxon.sf.net/feature/licenseFileLocation)

Саксонская документация упоминалась для создания файла конфигурации XML, но я не знаю, куда мне поместить этот XMLфайл конфигурации.

При выполнении вызова Xquery с Java я получил сообщение об ошибке:

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 с верблюдом дляполучить вызов Java, работающий в Xquery?

Спасибо!

1 Ответ

0 голосов
/ 26 января 2019

Из предоставленной дополнительной информации выглядит, как будто вы берете файл Saxon JAR, но не файл лицензии.

Часто достаточно поместить файл лицензии в ту же папку, что и файл JAR, но он работает только с некоторыми загрузчиками классов.

В общем случае вам нужно либо убедиться, что каталог, содержащий файл JAR, находится в пути к классам, либо (как-то) установить свойство конфигурации Saxon LICENSE_FILE_LOCATION.

Согласно https://github.com/apache/camel/blob/master/components/camel-saxon/src/main/docs/xquery-component.adoc, вы можете установить свойства конфигурации Saxon, используя configuration и configurationProperties, но я не вижу дальнейшего объяснения того, как это работает. Я покопаюсь.

...