我試圖通過SPDY服務器爲Jetty設置一個最小HTTP,用於測試目的。我工作的這段代碼:SPDY帶有Jetty的「Hello服務器」
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();
}
}
我已經生成與密鑰庫:
keytool -genkey -keystore dummy_keystore.jks
當我指出谷歌瀏覽器(啓用SPDY),以https://localhost:8443
它警告我關於不受信任的證書,然後負載永遠。
純SPDY客戶端 - 服務器示例(從here)工作和一個簡單的HTTPS服務器也工作;該問題似乎與HTTPSPDYServerConnector類有關。
下面是我使用的JAR文件的列表:
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
而對於所關注我的Java環境:
$ cat /opt/jdk1.7.0_07/release
JAVA_VERSION="1.7.0"
OS_NAME="Linux"
OS_VERSION="2.6"
OS_ARCH="i586"
解編
jesse mcconnell提供的answer,反正那些使用Eclipse的人可能會發現以下有用的東西。
的JAR npn-boot-7.6.2.v20120308.jar
必須(也)被放置在:
Run Configurations... -> Classpath -> Bootstrap Entries -> Add External JARs
注意,因爲爲了事項,該條目必須出現以前的JRE System Library
。
哦,我只是把所有的JAR扔在Eclipse的課程路徑中......非常感謝! – cYrus