Я создаю платформу обмена документами под Java EE, JSF/Primefaces и спящий режим. Для каждого объекта данных (документ, репозитории и пользователей) я создал List<Event> events;
для хранения различных событий (создание пользователей, модификация документов и т. Д.).Вызывает EJB внутри другого EJB здоровым?
Чтобы уважать многоуровневую архитектуру, у меня есть слой модели, где я определяю объекты данных, бизнес-уровень, где я определяю свои сеансовые компоненты (которые содержат логику) и уровень представления, где определены представления моего приложения.
Я создал сессионный компонент для каждого объекта данных, чтобы закодировать его обработку. Таким образом, у меня есть EventsSessionBean
обрабатывать упорства и выборку событий до тех пор, как UserSessionBean
, DocumentSessionBean
и т.д.
При создании пользователя, например, мне нужно, прежде чем сохраняться UserCreated
события в базе данных. Следовательно, я должен назвать метод public Event createEvent(String label);
в UserSessionBean
от EventsSessionBean
.
Является ли это «здоровым» способом кодирования? Боюсь, что между моими фасолью смешиваются обязанности.
Фрагмент кода:
//Class definition
@PersistenceContext
private EntityManager em;
@EJB
private EventSessionBeanLocal eventService;
public static final String EVENT_USER_CREATION = "UserCreated";
public RepositoryOwner createRepositoryOwner(/* username, email, ..etc*/){
Event event = eventService.createEvent(EVENT_USER_CREATION);
RepositoryOwner newUser = new RepositoryOwner();
LinkedList<Event> events = new new LinkedList<>();
events.add(event);
newUser.setEvents(events);
//Set other user attributes
newUser = em.merge(newUser);
return newUser;
}
Это неправильно думать, что UserSessionBean
при работе с событиями действует на то, что находится вне его сферы?
Это абсолютно здорово. –
Имея только отредактированное описание кода, невозможно сказать, здорово или нет. Разумеется, совершенно нормально вызывать EJB из EJB (на самом деле - вы должны), но это не значит, что любой код, который у вас есть, делает правильные вещи. – Gimby
@Gimby, что вы думаете? – Hichamov