/** * Copyright 2005-2014 Restlet * * The contents of this file are subject to the terms of one of the following * open source licenses: Apache 2.0 or or EPL 1.0 (the "Licenses"). You can * select the license that you prefer but you may not use this file except in * compliance with one of these Licenses. * * You can obtain a copy of the Apache 2.0 license at * http://www.opensource.org/licenses/apache-2.0 * * You can obtain a copy of the EPL 1.0 license at * http://www.opensource.org/licenses/eclipse-1.0 * * See the Licenses for the specific language governing permissions and * limitations under the Licenses. * * Alternatively, you can obtain a royalty free commercial license with less * limitations, transferable or non-transferable, directly at * http://restlet.com/products/restlet-framework * * Restlet is a registered trademark of Restlet S.A.S. */ package org.restlet.ext.jetty; import java.util.logging.Level; import org.eclipse.jetty.server.AbstractConnectionFactory; import org.eclipse.jetty.server.ConnectionFactory; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.restlet.Server; import org.restlet.data.Protocol; import org.restlet.engine.ssl.DefaultSslContextFactory; import org.restlet.ext.jetty.internal.RestletSslContextFactory; /** * Jetty HTTPS server connector. Here is the list of additional parameters that * are supported. They should be set in the Server's context before it is * started: * <table> * <tr> * <th>Parameter name</th> * <th>Value type</th> * <th>Default value</th> * <th>Description</th> * </tr> * <tr> * <td>sslContextFactory</td> * <td>String</td> * <td>org.restlet.engine.ssl.DefaultSslContextFactory</td> * <td>Let you specify a {@link SslContextFactory} qualified class name as a * parameter, or an instance as an attribute for a more complete and flexible * SSL context setting</td> * </tr> * </table> * For the default SSL parameters see the Javadocs of the * {@link DefaultSslContextFactory} class. * * @see <a href="http://www.eclipse.org/jetty/">Jetty home page</a> * @see <a href="http://wiki.eclipse.org/Jetty/Howto/Configure_SSL">How to * configure SSL for Jetty</a> * @author Jerome Louvel * @author Tal Liron */ public class HttpsServerHelper extends JettyServerHelper { /** * Constructor. * * @param server * The server to help. */ public HttpsServerHelper(Server server) { super(server); getProtocols().add(Protocol.HTTPS); } /** * Creates new internal Jetty connection factories. * * @param configuration * The HTTP configuration. * @return New internal Jetty connection factories. */ protected ConnectionFactory[] createConnectionFactories( HttpConfiguration configuration) { ConnectionFactory[] result = null; try { org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory = new RestletSslContextFactory( org.restlet.engine.ssl.SslUtils.getSslContextFactory(this)); result = AbstractConnectionFactory.getFactories(sslContextFactory, super.createConnectionFactories(configuration)); } catch (Exception e) { getLogger().log(Level.WARNING, "Unable to create the Jetty SSL context factory", e); result = null; } return result; } }