gpt4 book ai didi

java - Open Liberty 上的 HTTP/2 支持

转载 作者:行者123 更新时间:2023-11-30 02:15:44 25 4
gpt4 key购买 nike

Open Liberty 是否支持 HTTP/2,或者是否需要在 server.xml 上进行设置?我环顾四周,但找不到与此相关的任何内容

我现在有一个推送 servlet -

public class PushServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

PushBuilder pushBuilder = req.newPushBuilder();
pushBuilder.path("push.css").push();


try (PrintWriter respWriter = resp.getWriter();) {
respWriter.write("<html>" +
"<img src='images/kodedu-logo.png'>" +
"</html>");
}

}
}

并且在 newPushBuilder 上收到 NullPointerException

我运行了主要/次要版本,它确认我正在运行与我的 pom 一致的 Servlet 4.0 -

<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
</dependencies>

我的 server.xml 配置为 -

<!-- To access this server from a remote client add a host attribute to 
the following element, e.g. host="*" -->
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint" >
<httpOptions http2="enabled" />
</httpEndpoint>

我也在运行 Java9

最佳答案

您收到 NullPointerException 因为 Push isn't supported for the request you're working with 。在使用 PushBuilder 对象之前,您应该检查是否为 null。

对 HTTP/2 的开放自由支持仍在开发中。在最近development builds ,如果您满足以下条件,newPushBuilder() 将返回 PushBuilder:

  1. 实现Servlet 4.0,
  2. 启用 servlet-4.0 功能,并且
  3. 使用不安全的 HTTP/2 (h2c) 或通过 ALPN 的安全 HTTP/2 (h2) 驱动请求

*浏览器不支持不安全的 h2c,Java 8 也不支持 ALPN。因此,要在 open-liberty 上使用 ALPN,当前最好的方法是使用 Oracle 或 openjdk 的 JDK 以及 bootclasspath 技巧来运行启用 ALPN。 Oracle 和 Jetty 提供 bootclasspath jar - grizzly-npn-bootstrapalpn-boot - 配置后允许开放自由使用 ALPN 协商安全 HTTP/2。

关于java - Open Liberty 上的 HTTP/2 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48519980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com