Локальная инъекция EJB без сохранения состояния в одноэлементном запускаемом EJB

это возможно как-то? Следующий сценарий:

  • локальный компонент EJB без сохранения состояния с именем A
  • одноэлементный запуск EJB с именем B
  • B содержит ссылку на A

Я пытался, но мой сервер приложений (WAS) дает сбой при запуске приложения с ошибкой, что A не найден. Журнал консоли также показывает, что A не был запущен в момент загрузки B, но некоторые другие компоненты EJB без сохранения состояния запускаются до B. Создание A также одноэлементного EJB и предоставление B зависимости от A с помощью аннотации @DependsOn({"A"} ) также выдавал ошибку, утверждая, что зависимый компонент A не найден. Использование A в веб-модуле отлично работает.

Любые идеи, что я делаю неправильно? Спасибо за любую помощь! Штеффен Харбих


person Steffen Harbich    schedule 06.01.2012    source источник
comment
В GlassFish у меня такая же ошибка. Он исчезает, если убрать локальный интерфейс из А. Зачем тебе локальный интерфейс? Кажется, в EJB 3.1 в этом нет необходимости.   -  person perissf    schedule 06.01.2012
comment
Это должно работать. Находится ли A в том же модуле/приложении, что и B, или отдельно? Если отдельно, настроен ли модуль A для запуска перед модулем B (инициализация по порядку в application.xml или с использованием начальных весов модуля в консоли администратора)?   -  person Brett Kail    schedule 06.01.2012
comment
Хорошо, я попробую удалить локальный интерфейс.   -  person Steffen Harbich    schedule 09.01.2012
comment
A находится в другом модуле ejb, чем B, но в том же приложении. Любые идеи, как установить начальные веса в Websphere?   -  person Steffen Harbich    schedule 09.01.2012
comment
N1! Заказ на запуск сделал это. Если вы опубликуете это как ответ, я могу пометить это как ответ. Большое спасибо!   -  person Steffen Harbich    schedule 09.01.2012
comment
Есть ли возможность указать стартовый вес/порядок модулей через ejb-jar.xml или аннотацию @bkail?   -  person Steffen Harbich    schedule 09.01.2012
comment
Единственными вариантами являются инициализация по порядку в application.xml или через консоль администратора. Возможно, продукт может автоматически назначать веса на основе DependsOn, но, насколько я знаю, он этого не делает.   -  person Brett Kail    schedule 09.01.2012


Ответы (1)


Если A находится в другом модуле/приложении, чем B, вам необходимо убедиться, что модуль A настроен на запуск перед модулем B. Вы можете либо использовать initialize-in-order в application.xml, либо использовать запуск модуля веса в консоли администратора.

person Brett Kail    schedule 09.01.2012