2016-05-24 296 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