-1

我正在评估OpenJDK 8 的Jetty alpn-boot以添加对 ALPN(和 HTTP/2)的支持。但是,问题是 jar 文件必须放在引导类路径中,并且我不能确保它始终存在于所有环境中的 webapp(例如,客户的服务器)。

所以我需要一个后备机制,比如:

if (isAlpnSupported()) {
    /* use HTTP/2 protocol */
} else {
    /* fallback legacy code */
}

我可以在不与 HTTP/2 服务器建立实际连接的情况下检查是否支持 ALPN?

4

1 回答 1

2

检查 ALPN 是否存在是对类是否存在的简单检查:

boolean isALPNPresent() {
    try {
        ClassLoader.getSystemClassLoader().loadClass("org.eclipse.jetty.alpn.ALPN");
        return true;
    } catch (Throwable x) {
        return false;
    }
}

这仅在您的 Web 应用程序向另一个同时支持 HTTP/1.1 和 HTTP/2 的服务器执行 HTTP 请求时才有用。

通过此检查,您可以在 Web 应用程序中配置 HTTP 客户端,以使用正确的协议执行请求。

于 2016-05-24T10:11:21.317 回答