Repast simphony で Java websocket を使用したいのですが、うまくいきません。次のエラーが表示されます。
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 {
public static void main(String[] args) throws Exception {
サーバー サーバー = 新しいサーバー (8080);
WebSocketHandler wsHandler = 新しい WebSocketHandler() {
@オーバーライド
public void configure(WebSocketServletFactory factory) {
factory.register(MyWebSocketHandler.class);
}
};
server.setHandler(wsHandler);
server.start();
server.join();
}
}
パッケージ webSocketTest;
import 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("Close: statusCode=" + statusCode + ", reason=" + reason);
}
@OnWebSocketError
public void onError(Throwable t) {
System.out.println("エラー: " + t.getMessage());
}
@OnWebSocketConnect
public void onConnect(セッション セッション) {
System.out.println("Connect: " + session.getRemoteAddress().getAddress());
試す {
session.getRemote().sendString("Hello Webbrowser");
} キャッチ (IOException e) {
e.printStackTrace();
}
}
@OnWebSocketMessage
public void onMessage(文字列メッセージ) {
System.out.println("メッセージ: " + メッセージ);
}
}