// 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.
package net.sourceforge.eclipsejetty.jetty9;
import java.util.Collection;
import net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder;
import net.sourceforge.eclipsejetty.jetty.JettyVersionType;
import net.sourceforge.eclipsejetty.jetty8.Jetty8ServerConfiguration;
public class Jetty9ServerConfiguration extends Jetty8ServerConfiguration
{
public Jetty9ServerConfiguration()
{
super();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty.AbstractConfiguration#getJettyVersionType()
*/
@Override
protected JettyVersionType getJettyVersionType()
{
return JettyVersionType.JETTY_9;
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildThreadPool(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildThreadPool(JettyConfigBuilder builder)
{
builder.comment("Thread Pool");
builder.beginGet("ThreadPool");
{
builder.set("minThreads", 1);
Integer connectionLimit = getThreadPoolLimit();
if (connectionLimit != null)
{
builder.set("maxThreads", connectionLimit);
}
builder.set("idleTimeout", 60000);
builder.set("detailedDump", false);
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildHttpConfig(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildHttpConfig(JettyConfigBuilder builder)
{
if (getPort() == null)
{
return;
}
builder.comment("HTTP Config");
builder.beginNew("httpConfig", "org.eclipse.jetty.server.HttpConfiguration");
{
builder.set("secureScheme", "https");
if (getSslPort() != null)
{
builder.set("securePort", getSslPort());
}
builder.set("outputBufferSize", 32768);
builder.set("requestHeaderSize", 8192);
builder.set("responseHeaderSize", 8192);
builder.set("sendServerVersion", true);
builder.set("sendDateHeader", false);
builder.set("headerCacheSize", 512);
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildHttpConnector(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildHttpConnector(JettyConfigBuilder builder)
{
if (getPort() == null)
{
return;
}
builder.comment("HTTP Connector");
builder.beginCall("addConnector");
{
builder.beginArg();
{
builder.beginNew("org.eclipse.jetty.server.ServerConnector");
{
builder.argRef("server", "Server");
builder.beginArg("factories");
{
builder.beginArray("org.eclipse.jetty.server.ConnectionFactory");
{
builder.beginItem();
{
builder.beginNew("org.eclipse.jetty.server.HttpConnectionFactory");
{
builder.argRef("config", "httpConfig");
}
builder.end();
}
builder.end();
}
builder.end();
}
builder.end();
builder.set("port", getPort());
builder.set("idleTimeout", 30000);
}
builder.end();
}
builder.end();
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildHttpsConfig(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildHttpsConfig(JettyConfigBuilder builder)
{
if (getSslPort() == null)
{
return;
}
builder.comment("HTTPs Config");
builder.beginNew("sslContextFactory", "org.eclipse.jetty.util.ssl.SslContextFactory");
{
builder.set("KeyStorePath", getKeyStorePath());
builder.set("KeyStorePassword", getKeyStorePassword());
builder.set("KeyManagerPassword", getKeyManagerPassword());
builder.set("TrustStorePath", getKeyStorePath());
builder.set("TrustStorePassword", getKeyStorePassword());
builder.set("EndpointIdentificationAlgorithm", "");
builder.setArray("ExcludeCipherSuites", //
"SSL_RSA_WITH_DES_CBC_SHA", //
"SSL_DHE_RSA_WITH_DES_CBC_SHA", //
"SSL_DHE_DSS_WITH_DES_CBC_SHA", //
"SSL_RSA_EXPORT_WITH_RC4_40_MD5", //
"SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", //
"SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", //
"SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA");
}
builder.end();
builder.beginNew("sslHttpConfig", "org.eclipse.jetty.server.HttpConfiguration");
{
builder.argRef("httpConfig");
builder.beginCall("addCustomizer");
{
builder.beginArg();
{
builder.beginNew("org.eclipse.jetty.server.SecureRequestCustomizer").end();
}
builder.end();
}
builder.end();
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildHttpsConnector(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildHttpsConnector(JettyConfigBuilder builder)
{
if (getSslPort() == null)
{
return;
}
builder.comment("HTTPs Connector");
builder.beginCall("sslConnector", "addConnector");
{
builder.beginArg();
{
builder.beginNew("org.eclipse.jetty.server.ServerConnector");
{
builder.argRef("server", "Server");
builder.beginArg("factories");
{
builder.beginArray("org.eclipse.jetty.server.ConnectionFactory");
{
builder.beginItem();
{
builder.beginNew("org.eclipse.jetty.server.SslConnectionFactory");
{
builder.arg("next", "http/1.1");
builder.argRef("sslContextFactory", "sslContextFactory");
}
builder.end();
}
builder.end();
builder.beginItem();
{
builder.beginNew("org.eclipse.jetty.server.HttpConnectionFactory");
{
builder.argRef("config", "sslHttpConfig");
}
builder.end();
}
builder.end();
}
builder.end();
}
builder.end();
builder.set("port", getSslPort());
builder.set("idleTimeout", 30000);
}
builder.end();
}
builder.end();
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#collectDefaultHandlerConfigurations(java.util.Collection)
*/
@Override
protected void collectDefaultHandlerConfigurations(Collection<String> configurations)
{
// intentionally left blank
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildAnnotations(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildAnnotations(JettyConfigBuilder builder)
{
if (!isAnnotationsEnabled())
{
return;
}
builder.comment("Annotations");
builder.beginCall(null, "org.eclipse.jetty.webapp.Configuration$ClassList", "setServerDefault");
{
builder.argRef("Server");
builder.beginCall("addBefore");
{
builder.arg("addBefore", "org.eclipse.jetty.webapp.JettyWebXmlConfiguration");
builder.argArray("org.eclipse.jetty.annotations.AnnotationConfiguration");
}
builder.end();
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildJNDI(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildJNDI(JettyConfigBuilder builder)
{
if (!isJndiEnabled())
{
return;
}
builder.comment("JNDI");
builder.beginCall(null, "org.eclipse.jetty.webapp.Configuration$ClassList", "setServerDefault");
{
builder.argRef("Server");
builder.beginCall("addAfter");
{
builder.arg("afterClass", "org.eclipse.jetty.webapp.FragmentConfiguration");
builder.argArray(//
"org.eclipse.jetty.plus.webapp.EnvConfiguration", //
"org.eclipse.jetty.plus.webapp.PlusConfiguration" //
);
}
builder.end();
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildJMX(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildJMX(JettyConfigBuilder builder)
{
if (!isJmxEnabled())
{
return;
}
builder.comment("JMX");
builder.call("MBeanServer", "java.lang.management.ManagementFactory", "getPlatformMBeanServer");
builder.beginCall("addBean");
{
builder.beginArg();
{
builder.beginNew("MBeanContainer", "org.eclipse.jetty.jmx.MBeanContainer");
{
builder.argRef("MBeanServer");
}
builder.end();
}
builder.end();
}
builder.end();
builder.beginCall("addBean");
{
builder.beginArg();
{
builder.beginNew("org.eclipse.jetty.util.log.Log").end();
}
builder.end();
}
builder.end();
}
/**
* {@inheritDoc}
*
* @see net.sourceforge.eclipsejetty.jetty7.Jetty7ServerConfiguration#buildExtraOptions(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder)
*/
@Override
protected void buildExtraOptions(JettyConfigBuilder builder)
{
builder.comment("Extra Options");
builder.set("stopAtShutdown", true);
builder.set("stopTimeout", 1000);
builder.set("dumpAfterStart", false);
builder.set("dumpBeforeStop", false);
}
}