Primefaces可以跨档案推送工作吗?

时间:2012-10-24 17:04:17

标签: java-ee primefaces

我正在努力让PrimeFaces Push工作。 Web端打包在WAR中,MDB打包在JAR中,这些都在EAR中。我正在使用以下组件。

Glassfish 3.1.2
PrimeFaces 3.4.1
Firefox 10.0.7
Linux

我在JAR的消息驱动Bean中有以下代码,每次MDB收到消息时,我都希望在Web应用程序中显示咆哮消息,但是,这种情况并没有发生。我将WAR和JAR打包在EAR中。可能是因为这不适用于容器或与我的包装方式有关吗?

pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/test", new FacesMessage("Test Summary", "Test Detail"));

这是战争的web.xml。

<servlet>
    <servlet-name>Push Servlet</servlet-name>
    <servlet-class>org.primefaces.push.PushServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Push Servlet</servlet-name>
    <url-pattern>/primepush/*</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>primefaces.PUSH_SERVER_URL</param-name>
    <param-value>ws://localhost:8080</param-value>
</context-param>

这是index.xhtml。

<script type="text/javascript">
    function handleMessage(msg) {
        msg.severity = 'info';
        growl.show([msg]);
    }
</script>

<p:growl id="growl" widgetVar="growl" showDetail="true"/>

<p:socket channel="/test" onMessage="handleMessage"/>

当我从MDB调用pushContext.push()时,我得到println()输出,该输出显示通过MDB的onMessage()一直执行的所有内容。没有错误,一切看起来都很好。

我只是看不到index.xhtml页面中发生的任何事情(即javascript messageHandle)。

我没有使用Maven,所以我不确定如何翻译pom.xml。我的EAR如下所示。

.
|-- META-INF
|   |-- MANIFEST.MF
|   `-- application.xml
|-- ejb.jar
|-- app1.war
|-- lib
|   |-- atmosphere-cometd-1.0.2.jar
|   |-- atmosphere-compat-jbossweb-1.0.2.jar
|   |-- atmosphere-compat-tomcat-1.0.2.jar
|   |-- atmosphere-compat-tomcat7-1.0.2.jar
|   |-- atmosphere-runtime-1.0.2.jar
|   |-- primefaces-3.4.1.jar
|   |-- redmond-1.0.8.jar
|   `-- slf4j-api-1.6.1.jar
`-- otherapp.war 

我的EJB中没有primefaces.jar,但它位于lib目录中(如上所示),并且我在application.xml中有这个。

<module>
    <ejb>ejb.jar</ejb>
</module>

<library-directory>lib</library-directory>

0 个答案:

没有答案