2012-10-02 17 views
7

Estoy intentando configurar un HTTP mínimo sobre el servidor SPDY con Jetty, para fines de prueba. Estoy trabajando en este código:SPDY "Hola servidor" con Jetty

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(); 
    } 
} 

he generado con el almacén de claves:

keytool -genkey -keystore dummy_keystore.jks 

Cuando señalo Google Chrome (habilitado SPDY) a https://localhost:8443 que me advierte sobre el certificado no es de confianza luego cargas para siempre.

Los ejemplos puros SPDY cliente-servidor (desde here) funcionan y un servidor HTTPS simple también funciona; el problema parece estar relacionado con la clase HTTPSPDYServerConnector.

Aquí está la lista de los archivos JAR que estoy usando:

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 

Y en lo que concierne a mi entorno Java:

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

adición de soluciones

jesse mcconnell proporcionan la answer, de todos modos aquellos que usan Eclipse pueden encontrar útil lo siguiente.

El JAR npn-boot-7.6.2.v20120308.jar mosto (también) se incluirán en:

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

Nota que desde fin importa, que la entrada debe aparecer antes de la JRE System Library.

Respuesta

6

¿Está utilizando npn-boot como jar de bootclasspath al iniciar esto?

Stock jvm no admitirá npn (próxima negociación de protocolo) y spdy no funcionará, por lo que debe asegurarse de que el jar npn-boot se esté utilizando junto con la opción -Xbootclasspath. Suena un poco como su problema ya que se trata de la carga de certificados y luego de su estancamiento ... también que se refiere a npn-boot como una dependencia cuando es más un reemplazo de las clases de jvm que una dependencia típica.

+0

Oh, acabo de arrojar todos los JAR en el camino de clase del Eclipse ... muchas gracias! – cYrus