2015-07-28 2 views
-1

Я уже несколько лет работаю с веб-приложениями J2E и начал использовать EJB за последние несколько недель. Я создал проект, основанный на этом примереПонимание EJB в контексте веб-приложений

  1. В основном я создаю два Maven проектов, подобных тому, что описано здесь https://blog.illucit.com/2015/04/ejb-remoting-with-wildfly/, тот, который строит веб-приложения (WAR) и тот, который строит EJB. В веб-приложениях pom Я добавляю зависимость от своего EJB, и я могу использовать контекст, чтобы вызвать правильный EJB и применить его к правильному типу класса. Несмотря на то, что мой bean-компонент аннотирован с помощью удаленного, я предполагаю, что это локальный вызов.

  2. Во второй попытке я развернул модуль EJB и раздельно развернул веб-приложение. Я смог сделать контекст, чтобы вытащить сессионный компонент. Но я мог только передать его классу Object. Я думаю, потому что у меня не было ссылки на EJB в моем веб-приложении, так как это было частью раздельно развернутого модуля, я не мог сделать трансляцию.

    Я бы предположил, что, поскольку мои веб-приложения являются отдельными, это очень простой пример распределенной системы? Если да, как избежать этой проблемы с литьем, если определение класса находится в другом приложении?

Edit- Потому что я нету получил awnser я искал я пытался сузить сферу моего вопроса еще.

На этом примере https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+server+instance

Вы можете увидеть, клиент может вызвать класс Greeter, даже если он сидит на другом сервере. Клиент не импортирует класс Greeter. Итак, как он может отбрасывать поиск EJB в класс, на который он не ссылается?

+1

Это может помочь: https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI?_sscc=t – John

+0

Сообщите нам ваш код. Из звука вещей это может работать так, как предполагалось. Существует два метода получения ссылки на EJB: поиск ресурсов и инъекция зависимостей контейнером. Первый не безопасен по типу и требует явного литья, последний безопасен по типу и не требует отливки. – scottb

+1

Сообщение в блоге, которое вы связали, описывает, как «вызвать некоторые методы в EJB от _ вне сервера приложений» (выделение мое). В описанном развертывании все развертывается на одном сервере приложений, и вы должны иметь возможность использовать простую аннотационную инъекцию. Думаю, вы сильно и неоправданно усложнили свое использование EJB. – DavidS

ответ

0

Если вы хотите разделить проект EJB и WAR на разных серверах, вам нужен третий проект (обычный Java-проект) со всеми объектами (POJO, VO, DTO или Entities), которые вы будете использовать для связи между WAR и EJB, а также вам нужно установить все интерфейсы EJB Remote. Таким образом вы можете сделать «бросок». Этот новый проект должен зависеть от обоих проектов EJB и WAR.

Смежные вопросы