Websocket 码头9的基本腹板箱示例

Websocket 码头9的基本腹板箱示例,websocket,jetty,Websocket,Jetty,我试图让一个真正的基本Websocket示例在独立的Jetty上工作,但我被一个NullPointerException卡住了 以下是我的两个服务器类: @WebServlet(“/MyWebSocketServlet”) 公共类MyWebSocketServlet扩展了WebSocketServlet{ @凌驾 公共void配置(WebSocketServletFactory工厂){ 工厂注册(MyWebSocket.class); } } @WebSocket 公共类MyWebSocket

我试图让一个真正的基本Websocket示例在独立的Jetty上工作,但我被一个NullPointerException卡住了

以下是我的两个服务器类:

@WebServlet(“/MyWebSocketServlet”)
公共类MyWebSocketServlet扩展了WebSocketServlet{
@凌驾
公共void配置(WebSocketServletFactory工厂){
工厂注册(MyWebSocket.class);
}
}
@WebSocket
公共类MyWebSocket{
@OnWebSocketConnect
public void onConnect(会话){
System.out.println(“MyWebSocket.onConnect()”;
}
@OnWebSocketMessage
公共void onText(字符串msg){
System.out.println(“MyWebSocket.onText()”;
}
@OnWebSocketClose
public void onClose(int statusCode,字符串原因){
System.out.println(“MyWebSocket.onClose()”;
} 
}
我尝试在Chrome中通过JavaScript建立通信:


var echoSocket=新的WebSocket(
“ws://localhost:8080/JettyWebsocketsTest/MyWebSocketServlet”
);
echoSocket.onopen=函数(e){
log(“onopen()”);
echoSocket.send(“你好”);
}
echoSocket.onmessage=函数(e){
控制台日志(“收到消息”);
};
不幸的是,连接无法建立,而是引发此NullPointerException:

java.lang.NullPointerException
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.upgrade(WebSocketServerFactory.java:400)
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:168)
at org.eclipse.jetty.websocket.servlet.WebSocketServlet.service(WebSocketServlet.java:160)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:489)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:972)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:906)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
at org.eclipse.jetty.server.Server.handle(Server.java:350)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:910)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
at java.lang.Thread.run(Thread.java:722)
WebSocketServerFactory中的这些行引发该异常:

HttpConnection http=HttpConnection.getCurrentConnection();
EndPoint endp=http.getEndPoint();

对于可用的HttpConnection,我能做些什么?

如果您在jetty发行版中使用test webapp的websocket聊天,它对您有用吗?您在HttpConnection.getCurrentConnection()中看到的NPE很麻烦(因为这不可能),我希望您的帮助缩小原因。当我遇到此错误时,我正在使用run jetty run eclipse插件。现在,当我手动将我的项目复制到webapps文件夹时,它可以工作了。由于Jetty 9没有可用的WTP适配器:如何为Jetty开发和调试?谢谢!什么版本的码头?您使用的是什么版本的run jetty run?我想尝试复制。作为记录,我只使用嵌入式jetty(来自单元测试和测试类)来开发和调试jetty.jetty-distribution-9.0.2.v20130417并运行jetty run 1.3.2。我后来意识到有一个更新的版本1.3.3可用。eclipse安装过程中的命名具有误导性。无论如何,它启动了Jetty,我可以调用普通的servlet,所以我有点忘记了这可能是问题的原因。