Access pushcontext from EJB-tier

2020-03-31 04:42发布

Im using Primefaces Push (the new thing in 3.4) together with jsf2 and ejb3. Seperate .war and ejb.jar

Now I need to trigger a prime-push event from the ejb tier. What is a clean way to do this? Some options I can think of:

  1. ManagedBean pass down a callback interface when invoking the ejb method
  2. A JMS messagelistener in the web-tier and ejb to send messages.
  3. Managed bean to analyze returned data from ejb method invocation and do push if conditions are met.

Basicly the question is where to put below code?

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

1条回答
▲ chillily
2楼-- · 2020-03-31 05:40

What i've got working, I didnt go with any of my ideas above, just added dependencies needed to access atmosphere APIs from EJB-tier.

MANIFEST.MF for 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 

in pom.xml for ejb.jar and application.ear

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

Then simply copied two packages from primefaces sources into ejb.jar

org.primefaces.push
org.primefaces.json

because adding primefaces in pom.xml for ejb.jar caused

Missing artifact org.primefaces:primefaces
查看更多
登录 后发表回答