Доступ к push-контексту с уровня EJB

Я использую Primefaces Push (новая вещь в 3.4) вместе с jsf2 и ejb3. Отдельные .war и ejb.jar

Теперь мне нужно инициировать событие Prime-Push на уровне ejb. Какой чистый способ сделать это? Некоторые варианты, которые я могу придумать:

  1. ManagedBean передает интерфейс обратного вызова при вызове метода ejb
  2. Прослушиватель сообщений JMS на веб-уровне и ejb для отправки сообщений.
  3. Управляемый bean-компонент для анализа данных, возвращаемых вызовом метода ejb, и выполнения push-уведомлений, если выполняются условия.

В основном вопрос в том, где разместить код ниже?

PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/notifications", new FacesMessage(summary, detail));  

person Aksel Willgert    schedule 06.09.2012    source источник
comment
Просто примечание, также попробуйте опубликовать свой вопрос в группе атмосферы.   -  person Cagatay Civici    schedule 06.09.2012


Ответы (1)


То, что у меня получилось, я не придерживался ни одной из своих идей выше, просто добавил зависимости, необходимые для доступа к API-интерфейсам атмосферы с уровня EJB.

MANIFEST.MF для ejb.jar:

Manifest-Version: 1.0
Class-Path: 
atmosphere-runtime-1.0.1.jar 
atmosphere-compat-jbossweb-1.0.1.jar
atmosphere-compat-tomcat7-1.0.1.jar 
atmosphere-compat-tomcat-1.0.1.jar 

в pom.xml для ejb.jar и application.ear

    <dependency>
        <groupId>org.atmosphere</groupId>
        <artifactId>atmosphere-runtime</artifactId>
        <version>1.0.1</version>
        <scope>provided</scope>
    </dependency>

Затем просто скопировал два пакета из исходников Primefaces в ejb.jar.

org.primefaces.push
org.primefaces.json

потому что добавление простых лиц в pom.xml для ejb.jar вызвало

Missing artifact org.primefaces:primefaces
person Aksel Willgert    schedule 21.10.2012