Как заставить клиента JAX RS 2 работать из библиотеки сценариев Domino? - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно вызвать REST API из агента LotusScript.Я использую LS2J, поэтому у меня есть код Java в библиотеке сценариев.

Сначала я попробовал с Jersey 2. Сначала с последней версией, а затем с несколькими более старыми версиями Jersey 2 и всегда получал исключение, которое отличалось вразные версии, но в основном ExceptionInInitializerError.Сначала я разрешил зависимости в Exclipse с Maven, чтобы я мог импортировать все необходимые файлы JAR.

Затем я решил попробовать с Apache CXF.Я начал с этого в моем pom:

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-client</artifactId>
    <version>3.2.7</version>
</dependency>

и импортировал все разрешенные JAR-файлы из репозитория Maven в библиотеку сценариев Domino:

enter image description here

Код скомпилирован нормально, но во время выполнения я получаю следующее:

java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder

Импорт JAX RS в коде таков:

import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;

Ничто не относится к Джерси нигде.Насколько я понимаю, это означает, что он не находит реализацию CXF ClientBuilder, а исключение показывает реализацию по умолчанию.

Я получил REST-клиент, работающий с Джерси 1, но мне не нравится использовать устаревшее решение.

Есть идеи?

Domino Designer и версия сервера - 10.

1 Ответ

0 голосов
/ 06 декабря 2018

Я удалил все jar, кроме javax.ws.rs-api-2.1.1.jar, из библиотеки скриптов и добавил все эти jar в / jvm / lib / ext при установке в домино.Затем он начал работать.

Для обработки JSON я использую Джексона и регистрирую провайдера следующим образом:

client.register(new JacksonJsonProvider())

Я добавил банки Джексона только в библиотеку сценариев:

enter image description here

...