2012-10-02 26 views
7
ile

Test amacıyla, Jetty ile SPDY üzerinden minimum bir HTTP kurmaya çalışıyorum. Ben https://localhost:8443 Google Chrome (spdy etkin) üzerine geldiğinizdeSPDY "Merhaba sunucusu" Jetty

keytool -genkey -keystore dummy_keystore.jks 

daha sonra yükler güvenilmeyen sertifika hakkında beni uyarıyor: Birlikte deposunu oluşturduktan

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.eclipse.jetty.server.Connector; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.spdy.http.HTTPSPDYServerConnector; 
import org.eclipse.jetty.util.ssl.SslContextFactory; 

import org.eclipse.jetty.server.Request; 
import org.eclipse.jetty.server.handler.AbstractHandler; 

public class MySPDYHelloServer { 
    public static void main(String[] args) throws Exception { 
     Server server = new Server(); 

     SslContextFactory sslFactory = new SslContextFactory(); 
     sslFactory.setKeyStorePath("dummy_keystore.jks"); 
     sslFactory.setKeyStorePassword("password"); 
     sslFactory.setProtocol("TLSv1"); 

     Connector connector = new HTTPSPDYServerConnector(sslFactory); 
     connector.setPort(8443); 
     server.addConnector(connector); 

     server.setHandler(new AbstractHandler(){ 
      public void handle(String target, Request baseRequest, 
        HttpServletRequest request, HttpServletResponse response) 
        throws IOException, ServletException { 
       response.setContentType("text/html;charset=utf-8"); 
       response.setStatus(HttpServletResponse.SC_OK); 
       baseRequest.setHandled(true); 
       response.getWriter().println("<h1>Hello World</h1>"); 
      } 
     }); 

     server.start(); 
     server.join(); 
    } 
} 

: Bu kod üzerinde çalışıyorum sonsuza kadar.

Saf SPDY istemci sunucusu örnekleri (here'dan itibaren) ve basit bir HTTPS sunucusu da çalışır; Sorun, HTTPSPDYServerConnector sınıfıyla ilişkili görünüyor. Zaten

$ cat /opt/jdk1.7.0_07/release 
JAVA_VERSION="1.7.0" 
OS_NAME="Linux" 
OS_VERSION="2.6" 
OS_ARCH="i586" 

Çözüm zeyilname

jesse mcconnellanswer sağlanan: Burada

kullanıyorum JARs liste:

jetty-all-7.6.7.v20120910.jar 
npn-boot-7.6.2.v20120308.jar 
servlet-api-2.5.jar 
spdy-core-7.6.7.v20120910.jar 
spdy-jetty-7.6.7.v20120910.jar 
spdy-jetty-http-7.6.7.v20120910.jar 

Ve Java çevresine yönelik ne Eclipse'i kullananlar aşağıdakileri yararlı bulabilir. sipariş önemli olduğundan, bu girdi önceJRE System Library bulunması gerektiğini

Run Configurations... -> Classpath -> Bootstrap Entries -> Add External JARs 

Not:

JAR npn-boot-7.6.2.v20120308.jar gerekir (aynı zamanda) yerleştirilebilir.

cevap

6

Bunu başlatırken npn-boot'i bootclasspath jar olarak mı kullanıyorsunuz?

Stok jvm, npn'yi (sonraki protokol anlaşması) desteklemeyecek ve spdy çalışmayacak, dolayısıyla npn-boot jar'in -Xbootclasspath seçeneğiyle birlikte kullanıldığından emin olmanız gerekir. Sertifika yüklemesiyle uğraştığınız ve daha sonra durduğu andan itibaren ... ... konuya benziyor. Ayrıca, jvm sınıflarının yerine daha sonra tipik bir bağımlılık olduğunda ... ... bir bağımlılık olarak npn-boot'a atıfta bulunuyorsunuz.

+0

Ah, tüm JAR'ları Eclipse sınıf yoluna attım ... çok teşekkürler! – cYrus