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

У меня есть код в одном банке (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, если он будет работать лучше) правильно решит эту проблему зависимость? Я ищу исчерпывающий список.

(РЕДАКТИРОВАТЬ: я бы предпочел решение, где b.jar может быть развернут независимо от a.jar)

Ответы [ 2 ]

1 голос
/ 16 августа 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 инъекция) в a.jar EJB.

1 голос
/ 16 августа 2011

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

...