package com.cloudhopper.httpclient.util;
/*
* #%L
* ch-httpclient-util
* %%
* Copyright (C) 2012 - 2013 Cloudhopper by Twitter
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import com.sun.grizzly.SSLConfig;
import com.sun.grizzly.http.Management;
import com.sun.grizzly.http.embed.GrizzlyWebServer;
import com.sun.grizzly.tcp.http11.GrizzlyAdapter;
import com.sun.grizzly.tcp.http11.GrizzlyRequest;
import com.sun.grizzly.tcp.http11.GrizzlyResponse;
import java.io.IOException;
import java.util.Enumeration;
import javax.management.ObjectName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author joelauer
*/
public class HttpsServerMain extends GrizzlyAdapter {
private static final Logger logger = LoggerFactory.getLogger(HttpsServerMain.class);
static public void main(String[] args) throws Exception {
int port = 9443;
GrizzlyWebServer gws = new GrizzlyWebServer(port, ".", true);
// need to create SSL config
SSLConfig sslConfig = new SSLConfig();
sslConfig.setKeyStorePass("changeit");
sslConfig.setKeyStoreFile("./test.jks"); //replace with your keystore
gws.setSSLConfig(sslConfig);
logger.info("Starting HTTPS server on port " + port);
gws.enableJMX(new Management() {
public void registerComponent(Object bean, ObjectName oname, String type)
throws Exception {
logger.info("Register JMX: oname=" + oname + ", type=" + type);
//Registry.getRegistry().registerComponent(bean,oname,type);
}
public void unregisterComponent(ObjectName oname) throws Exception {
//Registry.getRegistry().unregisterComponent(oname);
}
});
try {
GrizzlyAdapter ga = new HttpsServerMain();
gws.addGrizzlyAdapter(ga, new String[] {"/"});
gws.start();
} catch (IOException e){
logger.error("", e);
}
}
@Override
public void service(GrizzlyRequest request, GrizzlyResponse response) {
try {
response.getWriter().println("Success, this is SSL!");
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String)headerNames.nextElement();
String headerValue = request.getHeader(headerName);
logger.debug(headerName + ": " + headerValue);
}
//
// process input stream
//
//boolean ok = ParlayXSession.process(this, request.getInputStream(), response.getWriter(), true);
//if (!ok) {
// response.setStatus(500);
//}
} catch (Exception e) {
logger.error("Failed to process request", e);
}
}
}