REST JAX-RS Пользовательский контекст провайдер не работает - PullRequest
0 голосов
/ 15 января 2019

Я использую Glassfish Jersey JAX-RS на сервере Java 11 и Tomcat 9. Я обновил свою версию на Джерси до 2.27 недавно после того, как объект @Context в моем приложении обнуляется. Этот объект принадлежит стороннему API.

Версия Jersey в стороннем API, имеющая элемент context, равна 1.19, а также принадлежит пакету com.sun, а не той, которую я использую, - org.glassfish. Мой вызванный метод Rest выглядит так:

@GET
@Produces(MediaType.APPLICATION_JSON)
public Pageable<Role> getRoles(@Context final Search search) throws ServerException {

    return new Pageable<>(identityManagementService.getRoles(), search);
}

, который вызывает следующее:

public Pageable(final List<T> list, final Search search) {
    this.count = list.size();
    this.data = list;
    if (search.getLimiter() != null && search.getLimiter().getCount() != 0) {
        this.data = list.stream()
               .skip(search.getLimiter().getOffset())
                .limit(search.getLimiter().getCount())
                .collect(Collectors.toList());

} }

Сторонний Pom.xml имеет следующую запись:

<dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.19</version>
        <optional>true</optional>
        <exclusions>
            <exclusion>
                <artifactId>asm</artifactId>
                <groupId>asm</groupId>
            </exclusion>
        </exclusions>
    </dependency>

В моем файле pom.xml есть следующая запись:

<dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.27</version>
        </dependency> 

Во время выполнения объект поиска обнуляется, что приводит к сбою приложения. Есть ли проблема совместимости между двумя версиями джерси или я что-то упустил? Кто-нибудь уже использует Jersey JAX-RS 2.27 и Java 11 вместе?

1 Ответ

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

Проблема решена. Я имел в виду AbstractBinder из пакета HK2 после обновления моего Джерси до 2.27. Новая версия на Джерси Jax-RS была отделена от HK2. Импорт org.glassfish.jersey.internal.inject.AbstractBinder и реализация соответствующих переопределенных методов решили проблему. Ответ, опубликованный здесь Внедрение зависимостей Jersey HK2 не работает после обновления до v2.27 , которое помогло мне решить проблему.

Спасибо

...