На самом деле вы не можете вызвать метод управляемого компонента (JSF) непосредственно из компонента, управляемого сообщениями, поскольку области действия и время, в течение которого они активны, совершенно разные.
Управляемый компонент в основном активен во время HTTP-запроса. После этого его состояние все еще может храниться где-то (например, если используется приложение, сеанс или область диалога), но он ничего активно не делает.
Что вы могли бы сделать, так это использовать технологию, подобную Comet, где вы в основном приостанавливаете запрос от поддерживающего компонента. Затем вы можете позволить вспомогательному компоненту подождать чего-то, прежде чем снова возобновить запрос. Вы можете позволить управляемому компоненту прослушивать ту же очередь JMS, которую слушает компонент, управляемый сообщениями (при условии, что используется JMS), или вы можете позволить управляемому компоненту прослушивать шину событий CDI. Как только MDB получает что-то от ActiveMQ, MDB может поместить это на шину событий CDI, и компонент поддержки получит это.
По сути, MDB функционирует как мостовой компонент.
На Devoxx '10 было несколько презентаций, которые демонстрировали нечто очень похожее на то, о чем вы спрашиваете.
Я думаю, среди прочего, эта презентация была посвящена этим вещам: bien.com/roller/abien/entry/pets_and_aliens_running_on
person
Arjan Tijms
schedule
05.12.2010