2016-05-24 10 views
-1

Ich werte Jetty alpn-boot für OpenJDK 8, um Unterstützung für ALPN (und HTTP/2) hinzuzufügen. Das Problem ist jedoch, dass die JAR-Datei in den Boot-Klassenpfad gestellt werden muss, und ich kann nicht sicherstellen, dass sie für die Webanwendung in allen Umgebungen immer vorhanden ist (z. B. ein Server beim Kunden).Überprüfen, ob ALPN unterstützt wird

So würde ich einen Fallback-Mechanismus wie benötigen:

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

Kann ich überprüfen, ob ALPN, ohne dass eine tatsächliche Verbindung zu einem HTTP/2-Server unterstützt wird?

Antwort

1

prüfen, ob ALPN vorhanden ist, ist eine einfache Überprüfung für die Existenz der Klasse:

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

Dies ist nur sinnvoll, wenn Sie Ihre Web-Anwendung HTTP-Anfragen auf einen anderen Server ausführt, die sowohl HTTP/1.1 unterstützt und HTTP/2.

Mit dieser Prüfung können Sie den HTTP-Client in Ihrer Webanwendung so konfigurieren, dass die Anforderungen mit dem richtigen Protokoll ausgeführt werden.

+0

Das 'catch (Throwable x)' ist ein bisschen hässlich, aber ich habe die Idee, danke. – holmis83

Verwandte Themen