我想将 java websocket 与 Repast simphony 一起使用,但它不起作用,我收到以下错误:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
在 org.eclipse.jetty.websocket.servlet.UpgradeHttpServletRequest.(UpgradeHttpServletRequest.java:91)
在 org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest.(ServletUpgradeRequest.java:52)
在 org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:156)
在 org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:148)
在 org.eclipse.jetty.websocket.server.WebSocketHandler.handle(WebSocketHandler.java:97)
在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
在 org.eclipse.jetty.server.Server.handle(Server.java:497)
在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248)
在 org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:610)
在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:539)
在 java.lang.Thread.run(Thread.java:745)
有人可以解释我如何解决这个错误吗?谢谢
我测试了从互联网上获取的代码,如果我不使用 repast simphony 运行它,它就可以工作
我的服务器
包 webSocketTest;
导入 org.eclipse.jetty.server.Server;
导入 org.eclipse.jetty.websocket.server.WebSocketHandler;
导入 org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
公共类 WebSocketTest {
公共静态 void main(String[] args) 抛出异常 {
服务器服务器=新服务器(8080);
WebSocketHandler wsHandler = new WebSocketHandler() {
@覆盖
公共无效配置(WebSocketServletFactory 工厂){
factory.register(MyWebSocketHandler.class);
}
};
server.setHandler(wsHandler);
server.start();
server.join();
}
}
包 webSocketTest;
导入 java.io.IOException;
导入 org.eclipse.jetty.websocket.api.Session;
导入 org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
导入 org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
导入 org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
导入 org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
导入 org.eclipse.jetty.websocket.api.annotations.WebSocket;
@WebSocket
公共类 MyWebSocketHandler {
@OnWebSocket关闭
public void onClose(int statusCode, String reason) {
System.out.println("关闭:statusCode=" + statusCode + ", reason=" + reason);
}
@OnWebSocketError
公共无效 onError(Throwable t) {
System.out.println("错误:" + t.getMessage());
}
@OnWebSocketConnect
公共无效onConnect(会话会话){
System.out.println("连接:" + session.getRemoteAddress().getAddress());
尝试 {
session.getRemote().sendString("Hello Webbrowser");
} 捕捉(IOException e){
e.printStackTrace();
}
}
@OnWebSocketMessage
公共无效onMessage(字符串消息){
System.out.println("消息:" + 消息);
}
}