2016-05-24 191 views
-1

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

所以我需要一个回退机制,如:

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

我可以检查,如果不做一个HTTP/2服务器的实际连接支持ALPN?

回答

1

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

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

,如果你的Web应用程序执行HTTP请求,同时支持HTTP/1.1和HTTP另一台服务器这将是唯一有用的/ 2。

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

+0

'catch(Throwable x)'有点难看,但我明白了,谢谢。 – holmis83