Проблемы с развертыванием веб-приложения Jersey 2.x на Glassfish 4.0

Как и многие другие, я столкнулся с проблемами при развертывании веб-приложений Джерси на 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]].


person samseven    schedule 24.12.2013    source источник


Ответы (2)


Если вы не используете CDI в своем приложении, вы можете обойти эту проблему, выполнив развертывание следующим образом:

asadmin развернуть --property implicitCdiEnabled=false

Я думаю, что это всего лишь обходное решение, так как в целом вы должны иметь возможность включать Джерси в свое приложение без этой проблемы.

person jwells131313    schedule 24.12.2013

После остановки и перезапуска сервера приложение-архетип успешно развернулось (и запустилось). (Делал это через консоль администратора. Другими словами, развертывание прошло успешно даже без установки для параметра implicitCdiEnabled значения false). По-видимому, сервер находился в поврежденном состоянии, но это было неожиданно, поскольку приложение так и не завершило успешное развертывание.

person samseven    schedule 27.12.2013