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