我目前正在使用cometd 1.0.0和jetty 8.1.11进行一个项目。
我得到了以下异常:WARN:oejut.Timeout:EXCEPTION
java.lang.NoSuchMethodError: org.eclipse.jetty.util.LazyList.removeFromArray([Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
at org.cometd.server.ClientImpl.removeSubscription(ClientImpl.java:495)
at org.cometd.server.ChannelImpl.unsubscribe(ChannelImpl.java:339)
at org.cometd.server.ClientImpl.unsubscribeAll(ClientImpl.java:527)
at org.cometd.server.AbstractBayeux.removeClient(AbstractBayeux.java:526)
at org.cometd.server.ClientImpl.remove(ClientImpl.java:370)
at org.cometd.server.continuation.ContinuationClient.remove(ContinuationClient.java:220)
at org.cometd.server.continuation.ContinuationClient$1.expired(ContinuationClient.java:60)
at org.eclipse.jetty.util.thread.Timeout.tick(Timeout.java:140)
at org.eclipse.jetty.util.thread.Timeout.tick(Timeout.java:153)
at org.cometd.server.continuation.ContinuationBayeux$1.run(ContinuationBayeux.java:76)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
当我将cometd更新到1.1.5版本时,我再也看不到这个错误了。但我在jetty上的cpu使用率在负载测试中相当高。
有人能推荐一个与jetty 8.1.11兼容的稳定版本的cometd吗。
我强烈建议您升级到CometD2.x(当前版本2.7.0
),它将适用于每个Jetty 8版本,尽管我建议您使用最新的Jetty 8,当前为8.1.14.v20131031
。
查看Maven Central上的信息,cometd自己第一次使用Jetty8似乎首先出现在Comed 2.7.0的元数据中。
但是,它将8.1.13.v20130916
版本列为自己使用的版本,而不是8.1.11版本。
为了完整起见,这里是Comed2.6.0的元数据,注意它没有jetty8引用