检查是否支持ALPN

时间:2016-05-24 08:50:28

标签: jetty http2 alpn

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

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

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

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

1 个答案:

答案 0 :(得分: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客户端,以使用正确的协议执行请求。