Websocket 连接失败 - Jetty 7.6 使用 SSL + java 11 但在 Java 8 中工作
Websocket connection failure - Jetty 7.6 using SSL + java 11 but works in Java 8
我们在本地使用 SSL 有码头服务器 运行,每当我们尝试使用 websocket 连接时,chrome 会抛出连接失败错误。
Server server = new Server();
SslContextFactory sslContextFactory = new SslContextFactory();
InputStream stream =
websocket.class.getResourceAsStream("path to keystore.jks");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(stream, "password".toCharArray());
sslContextFactory.setKeyStore(ks);
sslContextFactory.setKeyStoreType("JKS");
sslContextFactory.setKeyStorePassword(Constants.keyStorePasswordMaster);
SslSelectChannelConnector sslConnector = new
SslSelectChannelConnector(sslContextFactory);
sslConnector.setPort(8083);
server.addConnector(sslConnector);
ServletContextHandler handler = new
ServletContextHandler(ServletContextHandler.SESSIONS);
handler.setContextPath("/server/ws");
server.setHandler(handler);
handler.addServlet(PingServlet.class, "/ping");
server.start();
LOG.info("end setUpSSLSelectChannel() and secure jetty started");
PS :相同的代码适用于 Java 8 仅适用于 java 11 我们遇到了这个问题。非常感谢任何帮助
Jetty 7.x 和 8.x 与 Java 11 不兼容。
查看关于此主题的过去答案:
Jetty 7.x 早在 2014 年就宣布停产。
查看 Jetty 版本 Table:https://www.eclipse.org/jetty/download.php#version-table
您需要使用 Jetty 9.4.x 系列以获得对 Java 11.
的最低支持
如果您需要对 Java 11 的全面支持,请使用 Jetty 10.x(旧的 javax.*
命名空间)或 Jetty 11.x(新的 jakarta.*
命名空间)
另外请注意,Jetty 7.x 和 8.x 上的 WebSocket 支持是针对 WebSocket 草稿的,而不是最终规范。目前没有浏览器支持旧的草稿版本。您至少需要使用 Jetty 9.x 才能获得适当的 websocket 支持。
我们在本地使用 SSL 有码头服务器 运行,每当我们尝试使用 websocket 连接时,chrome 会抛出连接失败错误。
Server server = new Server();
SslContextFactory sslContextFactory = new SslContextFactory();
InputStream stream =
websocket.class.getResourceAsStream("path to keystore.jks");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(stream, "password".toCharArray());
sslContextFactory.setKeyStore(ks);
sslContextFactory.setKeyStoreType("JKS");
sslContextFactory.setKeyStorePassword(Constants.keyStorePasswordMaster);
SslSelectChannelConnector sslConnector = new
SslSelectChannelConnector(sslContextFactory);
sslConnector.setPort(8083);
server.addConnector(sslConnector);
ServletContextHandler handler = new
ServletContextHandler(ServletContextHandler.SESSIONS);
handler.setContextPath("/server/ws");
server.setHandler(handler);
handler.addServlet(PingServlet.class, "/ping");
server.start();
LOG.info("end setUpSSLSelectChannel() and secure jetty started");
PS :相同的代码适用于 Java 8 仅适用于 java 11 我们遇到了这个问题。非常感谢任何帮助
Jetty 7.x 和 8.x 与 Java 11 不兼容。
查看关于此主题的过去答案:
Jetty 7.x 早在 2014 年就宣布停产。
查看 Jetty 版本 Table:https://www.eclipse.org/jetty/download.php#version-table
您需要使用 Jetty 9.4.x 系列以获得对 Java 11.
的最低支持如果您需要对 Java 11 的全面支持,请使用 Jetty 10.x(旧的 javax.*
命名空间)或 Jetty 11.x(新的 jakarta.*
命名空间)
另外请注意,Jetty 7.x 和 8.x 上的 WebSocket 支持是针对 WebSocket 草稿的,而不是最终规范。目前没有浏览器支持旧的草稿版本。您至少需要使用 Jetty 9.x 才能获得适当的 websocket 支持。