在嵌入式Jetty 9中启用SSL的过程如下:
1)首先使用解释安全方案和端口的HTTP配置创建一个HttpConfiguration。
HttpConfiguration http_config = newHttpConfiguration();
http_config.setSecureScheme("https");
http_config.setSecurePort(8443);
然后,我们为从上面的配置中扩展的https创建另外一个HttpConfiguration,但是添加一个SecureRequestCustomizer。
HttpConfiguration https_config = newHttpConfiguration(http_config);
https_config.addCustomizer(newSecureRequestCustomizer());
3)接下来创建一个SslContexFactory指向你的JavaKeystore文件。
SslContextFactory sslContextFactory = newSslContextFactory("/its_dir/cert.keystore");
sslContextFactory.setKeyStorePassword("password");
注意:你能使用OBF前缀密码,如果你打算使用Jetty模糊的密码。
4)接下来我们创建一个ServerConnector,传递给它Server类,SslConnectorFactory和HttpConnectionFactory。如下:
ServerConnector httpsConnector = newServerConnector(server,
new SslConnectionFactory(sslContextFactory, "http/1.1"),
new HttpConnectionFactory(https_config));
httpsConnector.setPort(8443);
httpsConnector.setIdleTimeout(50000);
最后使用这个连接给服务,与正常的HTPP ServerConnector一样。
server.setConnectors(new Connector[]{httpsConnector });
与Jersey一起使用
官方网址:https://jersey.java.net/
文档网址:https://jersey.java.net/documentation/latest/index.html
下载网址:
你能在代码中混合使用Jersey的2个版本,来自Jersey2.x(org.glassfish.jersey*包)中的ServletContainer和来自Jersey 1.x(包前缀com.sum.jersey.*)的属性。
为了使用Jersey2.x开发你的应用,修改下面两行:
h.setInitParameter("com.sun.jersey.config.property.resourceConfigClass","com.sun.jersey.api.core.PackagesResourceConfig");
h.setInitParameter("com.sun.jersey.config.property.packages","resources");
从main方法到下面函数中:
h.setInitParameter(ServerProperties.PROVIDER_PACKAGES,"resources");
并且检查其他ServerProperties,你可能找到有用的。