Java8中使用Jetty 9.3.x部署HTTP/2及ALPN协议协商解决方案

需积分: 17 2 下载量 36 浏览量 更新于2024-12-23 收藏 12KB ZIP 举报
资源摘要信息:"Java 8环境下嵌入式Jetty服务器使用HTTP/2和ALPN进行协议协商" 知识点详细说明: 1. Java 8版本的限制 Java 8是Oracle公司发布的一个稳定版本的Java开发工具包(JDK),广泛用于各种开发场景。然而,Java 8在某些特性上存在限制,比如本例中的无法与默认JRE类协商ALPN(Application-Layer Protocol Negotiation)。 2. ALPN(应用层协议协商) ALPN是一个用于应用层协议协商的TLS扩展。在HTTP/2的服务器和客户端中,ALPN用于在建立TLS连接的过程中协商使用HTTP/2协议。这是一个非常重要的步骤,因为客户端和服务器需要确认双方都支持并准备使用HTTP/2。 3. Jetty 9.3.x Jetty是一个开源的Servlet容器,用于Java平台,提供了HTTP服务器和Java Servlet容器的功能。Jetty 9.3.x版本支持HTTP/2,这是Web服务器与浏览器进行更有效通信的最新标准。然而,为了让Jetty 9.3.x在Java 8上运行并使用HTTP/2,必须解决ALPN兼容性问题。 4. 使用ALPN与HTTP/2运行Jetty 在本例中,Java 8无法默认与ALPN进行协商,因此需要进行特定配置。解决方法是使用与JRE兼容的alpn-boot-*.jar文件。这需要将对应的alpn-boot-*.jar文件放置在公共位置,并修改启动配置,以确保它被添加到JVM的启动类路径(boot classpath)中。 5. -Xbootclasspath选项 -Xbootclasspath是Java虚拟机的一个命令行选项,允许用户指定JVM在启动时需要加载的额外类和资源。通过设置-Xbootclasspath/p:,可以指定一个路径,让JVM在启动时将路径下的jar包添加到boot classpath中。 6. java.lang.IllegalStateException异常 当Java虚拟机(JVM)启动时,如果无法在启动类路径(boot classpath)中找到ALPN类,就会抛出java.lang.IllegalStateException异常。这个异常指出org.eclipse.jetty.alpn.ALPN类必须位于JVM启动类路径上。如果遇到这个异常,表明需要对启动配置进行修改,以确保兼容的alpn-boot-*.jar文件被正确加载。 7. 系统开源标签 系统开源标签表明本例中的软件或解决方案与开源社区相关,源代码是公开的,任何人都可以自由地使用、修改和分发。在本例中,提到的资源是一个开源项目,即名为embedded-jetty-http2-master的压缩包子文件。 8. 压缩包子文件的文件名称列表 这里提到的文件名称列表中包含了"embedded-jetty-http2-master",意味着这是一个包含嵌入式Jetty服务器配置的压缩文件。这个文件可能包含了用于配置和运行Jetty服务器的源代码、资源文件、构建脚本等,这些文件可能是开源项目的一部分,允许用户进行自定义部署和扩展。 总结来说,本资源提供了一个在Java 8环境下,如何让嵌入式Jetty服务器支持HTTP/2的解决方案。通过正确配置ALPN,以及使用与JRE兼容的alpn-boot-*.jar文件,即使在Java 8的限制下,也能实现HTTP/2的运行。这对于需要在较老Java版本上运行高性能Web服务器的应用场景来说,具有重要的意义。
2023-06-08 上传
2023-06-08 上传