Primefaces在Glassfish 3.1.2上推送异常

3
这是我的config.xml文件。
<dependency>
    <groupId>org.atmosphere</groupId>
    <artifactId>atmosphere-runtime</artifactId>
    <version>1.0.0.RC1</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.5</version>
</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>

如果在点击3或7之后出现以下警告:

警告:GRIZZLY0024:终止进程被中断。 java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1325) at java.util.concurrent.Semaphore.tryAcquire(Semaphore.java:414) at com.sun.grizzly.http.ProcessorTask.terminateProcess(ProcessorTask.java:1021) at com.sun.grizzly.arp.DefaultAsyncExecutor.finishResponse(DefaultAsyncExecutor.java:186) at com.sun.grizzly.arp.DefaultAsyncExecutor.finishExecute(DefaultAsyncExecutor.java:210) at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:133) at com.sun.grizzly.comet.CometEngine.flushPostExecute(CometEngine.java:426) at com.sun.grizzly.comet.CometEngine.interrupt0(CometEngine.java:405) at com.sun.grizzly.comet.CometEngine.interrupt(CometEngine.java:383) at com.sun.grizzly.comet.CometContext.resumeCometHandler(CometContext.java:442) at org.atmosphere.container.GrizzlyCometSupport.resume(GrizzlyCometSupport.java:172) at org.atmosphere.container.GrizzlyCometSupport.action(GrizzlyCometSupport.java:184) at org.atmosphere.container.GrizzlyCometSupport.action(GrizzlyCometSupport.java:81) at org.atmosphere.cpr.AtmosphereResourceImpl.resume(AtmosphereResourceImpl.java:317) at org.atmosphere.handler.AbstractReflectorAtmosphereHandler.onStateChange(AbstractReflectorAtmosphereHandler.java:146) at org.atmosphere.cpr.DefaultBroadcaster.broadcast(DefaultBroadcaster.java:853) at org.atmosphere.cpr.DefaultBroadcaster.executeAsyncWrite(DefaultBroadcaster.java:768) at org.atmosphere.cpr.DefaultBroadcaster$3.run(DefaultBroadcaster.java:801) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)


你可以尝试使用最新版本的Atmosphere(例如1.0.13或2-beta)吗? - willome
我已经尝试过了,但不起作用。Atmosphere和Glassfish似乎不兼容。 - meyquel
1个回答

2

我没有尝试过primefaces-push,但我只使用Atmosphere(primefaces-push也使用了Atmosphere)。为了使它工作,我必须添加以下JVM选项:

  • -Dv3.grizzly.cometSupport=true
  • -Djava.net.preferIPv4Stack=true(我不确定在最新版本的Atmosphere中是否仍需要此选项)

也许这可以帮助你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接