目前我正在使用 cometd 3.0.2 (最新版本)。尝试进行简单的握手会给我以下错误:
使用 jetty 7.4.4 :
java.lang.NoClassDefFoundError: org/eclipse/jetty/client/api/ContentProvider
使用 jetty 9.2.3 :
java.lang.NoClassDefFoundError: org/eclipse/jetty/util/ajax/JSON
这是我尝试运行的代码:
import java.util.HashMap;
import java.util.Map;
import org.cometd.client.BayeuxClient;
import org.cometd.client.transport.ClientTransport;
import org.cometd.client.transport.LongPollingTransport;
import org.eclipse.jetty.client.HttpClient;
public class MyClass {
public static void main(String[] args) throws Exception {
// Create (and eventually set up) Jetty's HttpClient:
HttpClient httpClient = new HttpClient();
// Here set up Jetty's HttpClient, for example:
// httpClient.setMaxConnectionsPerAddress(2);
httpClient.start();
// Prepare the transport
Map<String, Object> options = new HashMap<String, Object>();
ClientTransport transport = new LongPollingTransport(options, httpClient);
BayeuxClient client = new BayeuxClient("http://localhost:8080/cometd", transport);
client.handshake();
boolean handshaken = client.waitFor(1000, BayeuxClient.State.CONNECTED);
if (handshaken) {
System.out.println("Yey");
}
}
}
有谁知道哪个 jetty 与最新的 cometd 兼容?或任何其他 cometd ?
答案 0 :(得分:1)
CometD 3适用于任何Servlet 3.0或更高版本的Servlet容器。 Jetty 9.2.x是推荐使用的Servlet容器。
话虽如此,Joakim说CometD依赖于其他库是正确的,因此您应该使用构建工具为您完成这项工作。 Maven是推荐的工具。
查看更新后的installation instructions,primer和tutorials即可开始使用。
我建议您按照入门说明进行操作。即使你不喜欢Maven,你可以暂时安装它,按照底漆,一旦你有底漆产生的骨架CometD应用程序,如果你愿意,你可以卸载Maven(但是你可以自己去构建你的应用程序)。