Миграция с GlassFish 3 на Payara 4 - проблема с включением CDI - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над POC миграции приложения из GlassFish 3 в Payara 4. Я выполнил необходимую настройку конфигурации в Payara, такую ​​как пул соединений jdbc, очереди и т. Д. В приложении есть компоненты EJB, но оно встроено в War файл и развертывается и работает на сервере GlassFish 3. Но, когда я пытаюсь развернуть на Payara 4, ошибка CDI отображается как:

Ошибка при развертывании: исключение при загрузке приложения: ошибка определения CDI: HV000151: метод, переопределяющий другой метод, не должен изменять конфигурацию ограничения параметров ....

Ошибка StackTrace: Причина: javax.validation.ConstraintDeclarationException: HV000151: метод, переопределяющий другой метод, не должен изменять конфигурацию ограничения параметра, ... в org.hibernate.validator.internal.metadata.aggregated.rule.OverridingMethodMustNotAlterParameterConstraints.apply (OverridingMethodMustNotAlterParameterConstraints.java:24) в org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData $ Builder.assertCorrectnessOfConfiguration (ExecutableMetaData.java:460) в org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData $ Builder.build (ExecutableMetaData.java:378) в org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataImpl $ BuilderDelegate.build (BeanMetaDataImpl.java:677)

Поскольку включение CDI - это новая функция, добавленная в Payara, поэтому при переносе приложения из более низкой версии GF в Payara необходимо внести некоторые изменения в конфигурацию, что, как представляется, сложно понять. Так есть ли способ развернуть этот файл войны на Payara?

1 Ответ

0 голосов
/ 04 мая 2018

Попробуйте развернуть WAR-файл с отключенным Implicit CDI

  • в консоли администратора снимите флажок Неявный CDI при развертывании приложения
  • при развертывании с консоли добавьте свойство implicitCdiEnabled=false, например asadmin deploy --properties=implicitCdiEnabled=false myapp.war

Если вы развертываете из IDE или не хотите отключать неявный CDI при каждом развертывании, вы можете попробовать добавить файл beans.xml в папку WEB-INF вашего приложения с конфигурацией, которая устанавливает bean-discovery-mode в none см .: https://docs.oracle.com/javaee/7/tutorial/cdi-adv001.htm

Объяснение: В Payara 4 и Java EE 7 появилась новая функция, называемая неявным обнаружением бина. Это означает, что если файл JAR / WAR не содержит файл beans.xml, некоторые классы автоматически превращаются в компоненты CDI. Если ваше приложение не использует CDI или использует библиотеку, которая не работает с CDI, это иногда вызывает проблемы.

...