Вызов Java из модуля MarkLogic Xquery - PullRequest
0 голосов
/ 09 января 2019

У меня есть сложная процедура преобразования в Java, которую я хотел бы вызвать из моего модуля XQuery. Я хочу позвонить напрямую и не использовать службу или конечную точку http, чтобы минимизировать накладные расходы.

Это для процедуры, которая должна преобразовывать большие геометрические фигуры из одной системы координат в другую (RD в ETRS89). Поскольку они являются частью гораздо большего XML-документа, возможно, содержащего десятки таких фигур, я хотел бы сделать это в MarkLogic, когда мы действительно обрабатываем документ.

Документация MarkLogic не дает мне никакой информации о том, как реализовать такое расширение, а только говорит о расширениях xquery и javascript, которые не подходят.

Переписать подпрограмму в XQuery или Javascript на самом деле не вариант, так как это будет довольно сложно и отнимает много времени.

Ответы [ 2 ]

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

Исходя из вашего описания, похоже, что вы работаете с чем-то вроде ruimtelijke plannen или omgevingswet data. В зависимости от того, что вам нужно делать с данными, вы можете работать с RD в MarkLogic, используя систему координат Raw.

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

Нет поддерживаемого метода для вызова Java в процессе. Есть достаточно эффективные способы вызова внепроцессного сервиса, который вы, возможно, захотите пересмотреть. Накладные расходы в основном латантичны. Если вы выполняете пакетное преобразование и поддерживаете Java-сервер, чтобы избежать затрат на запуск, накладные расходы могут быть минимизированы.

Возможно, есть неподдерживаемые и / не проверенные методы. Эта конкретная задача может хорошо подходить для нативного интерфейса «пользовательская функция - UDF». Это позволяет вызывать собственный код как часть запроса (не напрямую из XQuery), а как процесс сокращения карты в слое данных. Эти функции могут быть написаны в «оболочке» C ++, которая вызывает java через JNI - теоретически (не проверено, насколько мне известно).

Также существуют программы преобразования Java в JavaScript, которые могут создавать javascript, который изначально запускается на сервере. Примеры: GWT

Один метод, который я хотел попробовать сам, - это сначала преобразовать Java в Kotlin (довольно просто, примерно на 80% автоматизировано с помощью инструмента IntelliJ J2K).
Затем Kotlin может быть скомпилирован в Javascript.

Kotlin (через собственный kotlin) также может генерировать собственные исполняемые файлы (но я не верю, что разделяемые библиотеки необходимы для интерфейсов UTF.)

...