我正在为OpenJDK 8评估Jetty alpn-boot以添加对ALPN(和HTTP / 2)的支持。但问题是jar文件必须放在引导类路径中,并且我无法确保它在所有环境(例如客户服务器)中始终存在于webapp中。
所以我需要一个后备机制,如:
if (isAlpnSupported()) {
/* use HTTP/2 protocol */
} else {
/* fallback legacy code */
}
我是否可以在不与HTTP / 2服务器建立实际连接的情况下检查是否支持ALPN?
答案 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客户端,以使用正确的协议执行请求。