Использование Jersey 2.1 с CDI


Я пытаюсь использовать Jersey 2.1 и CDI в моем Java EE 7 проекте, который развернут на Glassfish 4.0.

Модули Джерси зависят от библиотек гуава. Но использование библиотек Guava (14.0.1)с CDI приводит к следующему исключению.

CDI deployment failure:WELD-001408 Unsatisfied dependencies for type [Set<Service>] with qualifiers [@Default] at injection point [[BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>)].

Как я могу преодолеть эту проблему?

2 6

2 ответа:

CDI имеет некоторое сомнительное поведение. Мы думаем, что у нас есть два обходных пути: тот, который вы можете сделать сами и тот, который будет работать автоматически, когда мы выпустим Guava 15.0. Вы можете прочитать больше об этой проблеме здесь.

Проблема здесь заключается в том, что классы Guava аннотируются, и CDI пытается ввести в них зависимости.

Каталог glassfish/modules содержит гуаву.кувшин. поэтому простая установка зависимости guava в provided (или test) в maven решает проблему.