2012-10-02 17 views
7

के साथ एसपीडीवाई "हैलो सर्वर" परीक्षण उद्देश्यों के लिए मैं Jetty के साथ एसपीडीवाई सर्वर पर एक न्यूनतम HTTP सेट अप करने का प्रयास कर रहा हूं।जेटी

keytool -genkey -keystore dummy_keystore.jks 

जब मैं गूगल क्रोम (स्पीडी सक्षम) https://localhost:8443 को इंगित यह मुझे अविश्वसनीय प्रमाण पत्र के बारे में तो भार चेतावनी देते हैं:

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

मैं साथ कुंजीस्टोर बना लेने के बाद: मैं इस कोड पर काम कर रहा हूँ हमेशा के लिए

शुद्ध एसपीडीवाई क्लाइंट-सर्वर उदाहरण (here से) काम और एक साधारण HTTPS सर्वर भी काम करता है; यह मुद्दा HTTPSPDYServerConnector वर्ग से संबंधित प्रतीत होता है। वैसे भी

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

समाधान परिशिष्ट

jesse mcconnellanswer प्रदान की,:

यहाँ है कि मैं उपयोग कर रहा हूँ जार की सूची दी गई है:

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 

और क्या मेरी जावा पर्यावरण चिंताओं के लिए जो ग्रहण का उपयोग करते हैं वे निम्नलिखित उपयोगी पा सकते हैं।

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

ध्यान दें कि जब से क्रम मायने रखती है उस प्रविष्टि को दिखाई देना चाहिएJRE System Libraryसे पहले:

JAR npn-boot-7.6.2.v20120308.jar चाहिए (भी) में रखा जाना।

उत्तर

6

क्या आप इसे शुरू करते समय बूटप्लासपाथ जार के रूप में एनपीएन-बूट का उपयोग कर रहे हैं?

स्टॉक जेवीएम एनपीएन (अगली प्रोटोकॉल वार्ता) का समर्थन नहीं करेगा और स्पडी काम नहीं करेगा, इसलिए आपको यह सुनिश्चित करना होगा कि एनपीएन-बूट जार का उपयोग -Xbootclasspath विकल्प के साथ किया जा रहा है। सर्टिफिकेट लोडिंग से निपटने के बाद से आपकी समस्या की तरह लगता है और फिर इसके स्टॉलिंग ... यह भी कि आप एनपीएन-बूट को निर्भरता के रूप में संदर्भित करते हैं जब यह जेवीएम कक्षाओं के प्रतिस्थापन के बाद अधिक विशिष्ट निर्भरता है।

+0

ओह, मैंने ग्रहण के वर्ग पथ में सभी जारों को फेंक दिया ... बहुत धन्यवाद! – cYrus

संबंधित मुद्दे