Вызов класса сущности ejb из независимого веб-приложения (netbeans)

Я делаю небольшой интернет-магазин для школы в Netbeans. У меня есть класс сущности Customer в модуле EJB вместе с локальным сессионным компонентом и удаленным сессионным компонентом.

Затем у меня есть независимое веб-приложение, которое, конечно, может вызывать компонент удаленного сеанса.

Из приложения я могу вызвать метод в удаленном сессионном компоненте, чтобы предоставить мне всех клиентов. Но что должен вернуть сессионный компонент?

  • Он может возвращать список клиентов, но мое приложение не знает класс клиента. Стоит ли добавлять в приложение jar-файл моего модуля ejb?
  • Я мог бы вернуть список списков со всей информацией о клиентах, но это не очень хорошо.
  • Я кое-что прочитал здесь о наличии интерфейса клиента в веб-приложении. но я не понимаю, как это работает.
  • Поможет ли это создание корпоративного приложения и добавление как jar-файла модуля ejb, так и войны веб-приложения?

Какой лучший выбор?

(О, и я использую калитку как каркас, если это как-то связано с этим)

РЕДАКТИРОВАТЬ:

Итак, моя установка такая:

  • библиотека, содержащая класс сущности и интерфейс удаленного компонента
  • модуль ejb, содержащий удаленный компонент и фасад класса сущности, у него также есть библиотека выше
  • веб-приложение: также есть библиотека
  • корпоративное приложение, содержащее ejb-jar и войну.

Но это не работает. Когда я разворачиваю ухо, я получаю такую ​​ошибку:

Error in annotation processing: java.lang.NoClassDefFoundError: shop2/database/customer/CustomerBeanRemote

Я не уверен, куда поместить файл сохраняемости. Теперь он находится в модуле ejb. Но я не думаю, что проблема в этом.

Не могли бы вы рассказать мне, как сделать проект? Я впервые работаю с EJB и Java EE.

Спасибо!


person Kat    schedule 05.06.2013    source источник


Ответы (1)


Вы должны создать клиентский проект, содержащий все ваши сущности и интерфейсы, и использовать этот проект в модуле EJB и веб-проекте.

В этом случае вы можете вернуть список клиентов в веб-проект, используя удаленный интерфейс.

Конечно, вы должны развернуть проект ejb + клиентский проект в ушном проекте.

person john miran    schedule 06.06.2013
comment
Поэтому я поместил свои интерфейсы и свои сущности в java-библиотеку, а не в клиентский проект. Веб-приложение уже нуждается в этом, чтобы знать вызовы ejb. Вы это имели в виду или мне нужно что-то менять? - person Kat; 07.06.2013
comment
Но это не сработало, поскольку настойчивость отсутствует в библиотеке. Попробую клиентом. - person Kat; 07.06.2013
comment
Библиотека java такая же, как и клиентский проект, и я имею в виду, что под интерфейсом это удаленный интерфейс для вашего сеансового компонента ejb, тогда, когда вы добавляете эту библиотеку в веб-проект, вам не нужна ссылка на проект ejb. после того, как вы можете ввести компонент сеанса ejb, объявив удаленный интерфейс и используя эту аннотацию: @EJB(lookup ="JNDI_SESSIONBEAN_NAME") - person john miran; 07.06.2013
comment
До сих пор не работает. Я не знаю что делать. Я добавил дополнительную информацию к вопросу. Не могли бы вы взглянуть на это? Спасибо! - person Kat; 07.06.2013
comment
Вы уверены, что добавили библиотеку в проект Ear? - person john miran; 08.06.2013
comment
Да, у меня есть. В пути к классам. Я не знаю, куда это поставить иначе. Так же я убедился, что в упаковке модуля ejb есть jar библиотеки (по крайней мере, так и должно быть). Но все равно не работает. - person Kat; 08.06.2013
comment
Хорошо, я нашел проблему. По-видимому, в этой проблеме имеет значение файл persistence.xml. Я добавил модуль сохранения состояния в библиотеку и удалил его из модуля ejb, и после некоторого перезапуска, удаления и развертывания он работал. Спасибо за помощь! - person Kat; 14.06.2013