jetty - 客户端连接被jetty server-version11.0.0拒绝
问题描述
主类
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
public class WebSocketServer {
private Server server;
public void setup() {
server = new Server();
ServerConnector connector = new ServerConnector(server);
connector.setPort(12345);
server.addConnector(connector);
ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
contextHandler.setContextPath("/");
contextHandler.addServlet(WebSocketServlet.class, "/websocket");
JettyWebSocketServletContainerInitializer.configure(contextHandler, null);
server.setHandler(contextHandler);
}
public void start() throws Exception {
server.start();
server.dump(System.err);
server.join();
}
public static void main(String args[]) throws Exception {
WebSocketServer webSocketServer = new WebSocketServer();
webSocketServer.setup();
webSocketServer.start();
}
}
JettyWebsocketServelet 实现:
public class WebSocketServlet extends JettyWebSocketServlet {
@Override
protected void configure(JettyWebSocketServletFactory factory) {
// TODO Auto-generated method stub
factory.register(WebSocketServer.class);
}
}
依赖:
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-jetty-server</artifactId>
<version>11.0.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>11.0.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>11.0.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>11.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-jetty-client</artifactId>
<version>11.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-annotations</artifactId>
<version>11.0.0.beta3</version>
</dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>11.0.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
<version>11.0.2</version>
</dependency>
错误:
java.nio.channels.ClosedChannelException at org.eclipse.jetty.websocket.core.internal.WebSocketSessionState.onEof(WebSocketSessionState.java:174) at org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.onEof(WebSocketCoreSession.java :329) 在 org.eclipse.jetty.websocket.core.internal.WebSocketConnection.fillAndParse(WebSocketConnection.java:456) 在 org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onFillable(WebSocketConnection.java:314) 在org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) 在 org.eclipse.jetty.io.SocketChannelEndPoint$1 的 org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319) .run(SocketChannelEndPoint.java:101) 在 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) 在 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill。doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill. java:132) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038) 在 java .base/java.lang.Thread.run(Thread.java:834)运行(Thread.java:834)运行(Thread.java:834)
连接被拒绝并出现错误 ****JDK 版本为 11 ****
解决方案
错误消息是类路径上相同依赖项的两个稍微不同版本的结果。这意味着类路径中有多个或多个依赖项。我无法为此指出确切的解决方案,但通常用于调试使用带有 -verbose 选项的 JVM 然后查看异常发生时正在加载的类。您应该会看到一些令人惊讶的信息。例如,拥有相同依赖项和版本的多个副本,如果您知道它们被包含在内,您从未期望或会接受它们。要使用重复 jar 解决此问题,您可以使用http://maven.apache.org/plugins/maven-dependency-plugin/ 结合https://maven.apache.org/enforcer/maven-enforcer-plugin/ 。你需要将这些 jar 添加到顶级 POM 的一部分。
推荐阅读
- asp.net - 中继器中的 ASP.NET 单选按钮显示旧值
- java - 对java运算符优先级计算结果感到困惑
- performance - 循环数百行时如何提高速度?
- python - 数组之间的内存共享问题
- rxjs - 在 RxJS 中包装运算符,以便将其应用于物化流
- interpolation - 函数“approx3d”背后的数学
- arrays - 在 Swift 模型中解码数组(可解码)
- slurm - Snakemake 如何使用 --cluster-status 和 sacct 解析 slurm jobid
- authentication - rtsp 身份验证:摘要
- python - 如何针对 python 中的 Azure 存储 blob 对用户进行身份验证?