Как и многие другие, я столкнулся с проблемами при развертывании веб-приложений Джерси на Glassfish 4.0. Я просмотрел похожие публикации, но не нашел ничего, что могло бы устранить ошибки развертывания, которые я видел.
Приложения, которые я пытаюсь развернуть/запустить, успешно работают на Glassfish 3.1.
Я решил начать с нуля с простого приложения для Джерси и начать строить поверх него. Итак, я начал с архетипа Maven, на который ссылается https://jersey.java.net/documentation/latest/getting-started.html#new-webapp.
Я запустил предоставленную командную строку mvn, чтобы создать проект архетипа. Затем я изменил значения конфигурации плагина maven-compiler-plugin pom.xml на 1,7 (вместо 1,6) для источника и цели.
Собрал приложение, развернул его в Glassfish 4.0 (сборка 89) и получил следующую ошибку.
WELD-001408 Неудовлетворенные зависимости для типа [Ref] с квалификаторами >>[@Default] в точке внедрения [[BackedAnnotatedParameter] Параметр 1 [BackedAnnotatedConstructor] @Inject org.glassfish.jersey.server.internal.routing.UriRoutingContext(Ref, ProcessingProviders )]
Эта ошибка типична для ошибок, которые я вижу в своих исходных приложениях. Я интерпретирую ошибку как означающую, что CDI не удалось внедрить параметр Ref<ContainerRequest>
где-то в кишках Джерси.
Как решить эти типы ошибок? Это очень простое веб-приложение для Джерси. Он имеет один класс Resource с одним методом @GET, который возвращает жестко заданную строку. В самом коде приложения нет CDI.
дополнительная информация
Изменение версии jersey.version POM с исходной версии 2.5 на версию 2.0 приводит к
WELD-001414 Имя компонента неоднозначно. Имя JerseyClassAnalyzer разрешается в bean-компоненты [Managed Bean [класс org.glassfish.jersey.internal.inject.JerseyClassAnalyzer] с квалификаторами [@Default @Named @Any], Managed Bean [класс org.glassfish.jersey.internal.inject.JerseyClassAnalyzer] с квалификаторы [@Default @Named @Any]].