CDI - Внедрение объектов в класс EJB с использованием методов производителя в Weblogic 10.3.6
Я хотел бы использовать CDI для внедрения объектов в класс EJB с использованием метода продюсера в Weblogic 10.3.6. Weblogic 10.3.6 является контейнером Java EE 5 и поэтому не поддерживает CDI "из коробки". Переход на Weblogic 12c (который поддерживает CDI "из коробки") будет довольно масштабным проектом по миграции, который мы не можем реализовать сейчас.
Возможно ли ретро-соединение Weld или OpenWebBeans с Weblogic 10.3.6? До сих пор я пытался заставить OpenWebBeans работать безуспешно. Я поместил следующие файлы jar в мой путь к классам:
openwebbeans-ee-1.2.6.jar
openwebbeans-ee-common-1.2.6.jar
openwebbeans-ejb-1.2.6.jar
openwebbeans-el10-1.2.6.jar
openwebbeans-el22-1.2.6.jar
openwebbeans-impl-1.2.6.jar
openwebbeans-jms-1.2.6.jar
openwebbeans-osgi-1.2.6.jar
openwebbeans-resource-1.2.6.jar
openwebbeans-spi-1.2.6.jar
openwebbeans-web-1.2.6.jar
Я также добавил файл META-INF/openwebbeans/openwebbeans.properties в свой проект EJB (традиционный файл EJB, упакованный в файл.ear). Я изменил / добавил следующее:
org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService = true org.apache.webbeans.resource.spi.ResourceService = org.apache.webbeans.ejb.resource.OpenEjbResourceInjectionService
Я также взломал следующий пример в классе EJB, чтобы проверить, работает ли он: http://www.javacodegeeks.com/2013/04/java-ee-cdi-producer-methods-tutorial.html
Однако переменные-члены, которые должны вводиться, остаются нулевыми. Я не вижу ошибок в журналах.
Я начинаю чувствовать, что это будет работать, только если классы EJB развернуты в файле.war с определенным слушателем OpenWebBeans. Правильно ли я сказал это?
1 ответ
Давным-давно я пытался заставить Weld работать в Weblogic 10.3.6, но это не увенчалось успехом. Я думаю, если даже вам удастся сделать это, он будет глючить. Так что просто расслабьтесь и используйте Guice или что-то в этом роде, как в WL 10.3