Где я могу разместить подходящих кандидатов для CDI в развертывании Glassfish v3?

У меня есть код в одном банке (a.jar), который содержит файл @Inject X x.

Я хочу выполнить инъекцию реализацией в другом jar (b.jar, являющемся действительным архивом bean-компонента и т. д.).

Насколько я понимаю, я не могу развернуть файлы a.jar и b.jar в отдельных автономных архивах WAR, поскольку они являются независимыми с точки зрения CDI. Возможно, я смогу поместить b.jar в папку lib, которую Glassfish предоставляет для всех развертываний (но является ли это «чистой Java 6 EE», и это означает, что я не могу развертывать так же, как войну или ухо?). Я мог бы предоставить b.jar в EAR, размещенном в lib вместе с a.war или a.jar, но я не знаком с этим.

У меня вопрос: какие у меня есть варианты развертывания a.jar и b.jar, чтобы Glassfish (в настоящее время 3.0.1, но я рассмотрю 3.1.1, если он будет работать лучше) правильно разрешал эту зависимость? Я ищу исчерпывающий список.

(EDIT: я бы предпочел решение, в котором b.jar можно развернуть независимо от a.jar)


person Thorbjørn Ravn Andersen    schedule 16.08.2011    source источник


Ответы (2)


Думаю, хорошим вариантом будет поместить a.jar и b.jar в папку lib вашего проекта. Пожалуйста, сообщите, если вы считаете, что у него есть недостатки.

person Petar Minchev    schedule 16.08.2011
comment
Я хотел бы разделить две банки на отдельные развертывания, если это вообще возможно. - person Thorbjørn Ravn Andersen; 16.08.2011

Я хотел бы посмотреть, смогу ли я превратить соответствующие объекты в b.jar в EJB, эффективно превратив b.jar в «сервис» EJB 3.

Затем в a.jar (и любом другом коде, который нуждается в сервисе) я бы использовал метод CDI Producer для выполнения поиска JNDI, что позволило бы мне @Inject выполнять EJB так же, как любой локальный ресурс.

В качестве альтернативы, если вы также можете превратить a.jar в "службу" EJB 3, тогда компоненты EJB из b.jar могут быть внедрены непосредственно контейнером (используя внедрение Java EE @EJB или @Resource) в EJB a.jar.

person Alistair A. Israel    schedule 16.08.2011