WedX - журнал о программировании и компьютерных науках

как правильно поместить EJB в проект JPA?

У меня есть простой проект, созданный с помощью Eclipse 3.4 (он же IBM RAD) в WebSphere 7.

У меня есть проект EAR, проект EJB и проект JPA в моей рабочей области.

УКОРОЧЕННАЯ ВЕРСИЯ:

EJB в моем проекте EJB ссылается на EJB в моем проекте JPA, но выдает ошибку EJBNotFoundException.

Каков "правильный" способ размещения EJB в моем проекте JPA?

ОБНОВИТЬ

Коллега говорит мне, что EJB должны быть в проекте EJB, а не в проекте JPA. Это все, что я сделал не так? Хотел бы получить второе мнение по этому поводу, спасибо.

ДЛИННАЯ ВЕРСИЯ:

В проекте JPA у меня есть объекты объекта/домена (например, Workflow.java), и у меня есть DAO (например, WorkflowDAO.java), который помечен как EJB с помощью @Stateless.

В проекте EJB у меня есть ejb (например, WorkflowService.java), который помечен как @EJB с @Stateless.

WorkflowService.java ссылается на WorkflowDAO следующим образом:

@Stateless
public class WorkflowService /*...*/
  @EJB
  private WorkflowDAO workflowDAO; /*...*

Проблема в том, что при развертывании на сервере я получаю следующую ошибку:

com.ibm.ejs.container.EJBNotFoundException, EJB с интерфейсом test.WorkflowDAO отсутствует в приложении testEAR.

Любая помощь очень ценится, спасибо!

Роб

23.02.2012

Ответы:


1

Вы должны упаковать ejb-jar в корень файла ear и поместить jpa-jar в каталог lib. Обычно Eclipse заботится об упаковке, когда вы создаете JPA и EJB Project и добавляете их в отдельный Enterprise Java Project.

Обновление: судя по вашим комментариям, вы делаете это неправильно. Вы должны запустить EAR Project и добавить к нему свои проекты JPA и EJB. Вы должны проверить свойства проекта EAR и убедиться, что ваши проекты JPA и EJB перечислены на вкладке Deployment Assembly. Если нет, вы можете добавить их туда. Смотрите скриншот:

введите здесь описание изображения

23.02.2012
  • Однако я вижу эту ошибку в Eclispe. Я еще не создал и не развернул файл EAR. Любые дополнительные идеи или детали помогут, спасибо! 23.02.2012
  • I have not yet built and deployed the EAR file Что ты имеешь в виду? Вы сказали, что получаете это исключение при попытке развернуть его на сервере, верно? 23.02.2012
  • Я имею в виду, что я не развертываю файл EAR в WebSphere вручную. Я получаю сообщение об ошибке, когда запускаю приложение из Eclipse IDE (с WebSphere 7 в списке серверов). Ты знаешь, что я имею в виду? 23.02.2012
  • Не совсем. Как именно вы пытаетесь запустить его из Eclipse? 23.02.2012
  • В моем рабочем пространстве eclipse есть множество проектов (EAR, EJB, JPA, Web). Чтобы запустить приложение, я щелкаю правой кнопкой мыши проект EJB, выбираю «Запуск от имени» > «Выполнить на сервере» > WebSphere 7 — кажется, что сервер запускается, но в журнале есть трассировка стека, указывающая на исключение EJBNotFoundException. Надеюсь, это проясняет, спасибо! 23.02.2012
  • Спасибо за попытку, но все равно не повезло. Он по-прежнему говорит об ошибке инъекции EJBNotFoundException. Кстати, я использую Eclipse 3.4 (в частности, IBM RAD 7.5), и там нет вкладки «Сборка развертывания», есть вкладка «Зависимости модуля Java EE», которая, похоже, делает что-то подобное, и я убедился, что все проекты перечислены и проверены. Не повезло. <вздох> 23.02.2012
  • Вы уверены, что пытаетесь запустить EAR project? Возможно, попробуйте очистить и собрать все проекты, прежде чем запускать их на сервере. 23.02.2012

  • 2

    К вашему сведению, я копнул глубже и узнал больше. Я добавил новый вопрос, который более конкретно описывает мою проблему:

    почему может не видит ли мой проект EAR аннотированные EJB и сущности в моем проекте JPA?

    24.02.2012
  • Итак, вы рассматриваете это как ответ на свой вопрос? Может быть, если это ответ, вы можете хотя бы попытаться объяснить, как вы на самом деле решили свою проблему? 29.02.2012
  • Я не решил проблему. EJB в проекте TestJPA по-прежнему не видны, мне пришлось переместить их в проект TestEJB. Я отметил этот ответ как правильный, потому что ссылка на новый упрощенный вопрос - единственный путь, который у меня был для поиска решения моей проблемы. Ваш ответ (выше) не помог; возможно, потому что ваши инструкции предназначены для Eclipse 3.5 или выше. Как я уже сказал в вопросе, я использую Eclipse 3.4. 29.02.2012
  • Дело в том, что вы можете подождать, пока не найдете решение, а затем опубликовать его и принять в качестве ответа. То, что вы только что приняли, не является ответом. 29.02.2012
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]