import org.bubblecloud.ilves.util.PropertiesUtil; //导入方法依赖的package包/类
/**
* Constructs Jetty server.
* @param httpPort the HTTP port
* @param httpsPort the HTTPS port
* @param requestClientAuthentication true if client authentication is to be requested
* @param requireClientAuthentication true if client authentication is required
* @return the Jetty server
* @throws IOException if SSL context factory creation fails.
*/
public static Server newServer(
final int httpPort,
final int httpsPort,
final boolean requestClientAuthentication,
final boolean requireClientAuthentication) throws IOException {
UserClientCertificateCache.init(DefaultSiteUI.getEntityManagerFactory());
final String keyStorePath = PropertiesUtil.getProperty("site", "key-store-path");
final String keyStorePassword = PropertiesUtil.getProperty("site", "key-store-password");
final String certificateAlias = PropertiesUtil.getProperty("site", "server-certificate-entry-alias");
final String certificatePassword = PropertiesUtil.getProperty("site", "server-certificate-entry-password");
final String selfSignedCertificateHostName =
PropertiesUtil.getProperty("site", "server-certificate-self-sign-host-name");
final String selfSignedCertificateIpAddress =
PropertiesUtil.getProperty("site", "server-certificate-self-sign-ip-address");
final Server server = new Server();
final HttpConfiguration httpConfiguration = new HttpConfiguration();
httpConfiguration.setSecureScheme("https");
httpConfiguration.setSecurePort(httpsPort);
httpConfiguration.setOutputBufferSize(32768);
httpConfiguration.setRequestHeaderSize(8192);
httpConfiguration.setResponseHeaderSize(8192);
httpConfiguration.setSendServerVersion(false);
httpConfiguration.setSendDateHeader(false);
if (httpPort > 0) {
final ServerConnector httpConnector = new ServerConnector(server,
new HttpConnectionFactory(httpConfiguration));
httpConnector.setPort(httpPort);
httpConnector.setIdleTimeout(30000);
server.addConnector(httpConnector);
}
if (httpsPort > 0) {
CertificateUtil.ensureServerCertificateExists(
selfSignedCertificateHostName,
selfSignedCertificateIpAddress,
certificateAlias,
certificatePassword,
keyStorePath, keyStorePassword);
final JettySiteSslContextFactory sslContextFactory = newSslSocketFactory(certificateAlias,
keyStorePath, keyStorePassword,
certificatePassword, requestClientAuthentication, requireClientAuthentication);
final HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
httpsConfiguration.addCustomizer(new SecureRequestCustomizer());
final ServerConnector httpsConnector = new ServerConnector(server,
new SslConnectionFactory(sslContextFactory, "http/1.1"),
new HttpConnectionFactory(httpsConfiguration));
httpsConnector.setPort(httpsPort);
httpsConnector.setIdleTimeout(30000);
server.addConnector(httpsConnector);
}
return server;
}
本文展示了如何使用Java的PropertiesUtil类来获取配置属性,特别是在构造Jetty服务器时,涉及到HTTPS配置、SSL上下文以及客户端认证的相关设置。PropertiesUtil.getProperty方法用于从配置文件中读取关键参数,如密钥库路径、密码等。
919

被折叠的 条评论
为什么被折叠?



