我一直在努力让PrimePush在我的运行在Tomcat 7上的Web应用程序上运行。我花了一整天时间搜索线程和StackOverFlow,但还没有找到解决方案!其中一些包括this和this以及其他几个! 任何帮助将不胜感激!
我按照PrimeFaces用户指南设置了PrimePush。我的设置是Tomcat7,PrimeFaces 3.5,Atmosphere 1.0.0.RC1,GlassFish 2.1.17 / WEB 2.2。
因此,我有以下依赖项;
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.17</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-runtime</artifactId>
<version>1.0.0.RC1</version>
<scope>compile</scope>
</dependency>
我的web.xml是:
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
我一直在尝试PrimeFaces展示的Push示例。每当我尝试从我的托管bean推送时;
PushContext p = PushContextFactory.getDefault().getPushContext();
p.push("/counter", String.valueOf(count));
我收到以下错误:
org.eclipse.virgo.kernel.osgi.framework.ExtendedNoClassDefFoundError: org/atmosphere/cpr/AsyncSupportListenerAdapter in KernelBundleClassLoader: [bundle=org.primefaces_3.5.0] in KernelBundleClassLoader: [bundle=org.primefaces_3.5.0]
...
...
...
Caused by: java.lang.ClassNotFoundException: org.atmosphere.cpr.AsyncSupportListenerAdapter
请询问是否需要更多信息/详细信息。 提前谢谢。
答案 0 :(得分:1)
所以由于我的错误,
Caused by: java.lang.ClassNotFoundException:
org.atmosphere.cpr.AsyncSupportListenerAdapter
由于我有正确的依赖关系(根据PF手册),我认为它可能与我的pom.xml文件有关。由于我的设置,我包括几个Import-Packages。所以我添加了以下包,
<Import-Package>org.atmosphere.cpr</Import-Package>
这导致我的ClassNotFoundException被解决,但是,在尝试部署我的webapp时遇到了另一个问题。
The bundle "atmosphere-runtime-1.0.0.RC1.jar" could not be resolved.
Reason: Missing Constraint: Import-Package: com.sun.enterprise.web.connector.grizzly.comet
这让我很困惑,根据PF手册,我不需要任何比我已经包含的更多依赖。所以,无论如何,为了尝试解决这个问题,我去寻找正确的依赖关系并将其包括在内。但是,Missing Constraint
的列表越来越大。
现在,我不希望包含任何我不需要且不会使用的依赖项。所以我删除了我添加的所有依赖项,除了Atmosphere。在查看maven repo的大气运行时,我注意到PF用户指南中给出的版本现在已经过时了。所以我改为使用最新的:
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-runtime</artifactId>
<version>2.0.1</version>
</dependency>
宾果游戏 - 它现在可以成功构建和部署(虽然我无法从我的客户端JSF页面接收'推送' - 但这是一个不同的问题!)。为什么我有这个问题,而不是其他人,仍然让我困惑。但我希望这可以帮助任何有类似问题的人。