У меня было много проблем с добавлением компонентов в Seam.
Когда какой-то пользователь делает что-то в моем приложении, я бы хотел, чтобы это событие было передано ряду других зарегистрированных пользователей (пользователи, получающие событие, будут выбраны пользователем, вызвавшим событие).
Я подошел к этому так, как создал объект в области приложения с историей HashMap - сессионным компонентом с сохранением состояния противидентификатор пользователя.
Когда событие вызывается, запускается метод наблюдателя в объекте Application-scop и вызывает метод для каждого компонента в hashmap (передавая в качестве аргумента объектный компонент).
В методе, вызываемом для каждого бина, мне нужно получить доступ к некоторым внедренным методам, чтобы проверить, должен ли «пользователь бина» реагировать на это событие (отображая некоторые данные из бина сущности).Для этого мне нужен доступ к некоторым внедренным bean-компонентам (как SFSB, так и beans-компонентам без сохранения состояния), но на данный момент все они нулевые.
Насколько я понимаю, Component.getInstance () (обернутый в Lifecycle.beginCall () / .endCall () block) или один из аналогичных методов можно использовать здесь для извлечения объекта, однако это не работает.
Если бы я сделал что-то вроде (StoryManagerAction) Component.getInstance ("storyManagerAction ") где storyManagerAction - это сессионный компонент с сохранением состояния. Я ожидаю, что будет возвращен экземпляр StoryManagerAction с именем storyManagerAction, который в настоящее время находится в сеансе.Вместо этого, однако, я получаю экземпляр StoryManagerAction со всеми его примитивными членами, установленными в 0, и всеми его объектными членами, установленными в нулевое значение.
Любая идея, почему это происходит, и что мне нужно сделать, чтобы это работалоправильно?