// 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.jetty7; import java.util.Collection; import net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration; import net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder; import net.sourceforge.eclipsejetty.jetty.JettyVersionType; public class Jetty7ServerConfiguration extends AbstractServerConfiguration { public Jetty7ServerConfiguration() { super(); } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractConfiguration#getJettyVersionType() */ @Override protected JettyVersionType getJettyVersionType() { return JettyVersionType.JETTY_7; } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractConfiguration#getDocType() */ @Override protected String getDocType() { // <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> return null; } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#buildThreadPool(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder) */ @Override protected void buildThreadPool(JettyConfigBuilder builder) { builder.comment("Thread Pool"); builder.beginSet("ThreadPool"); { builder.beginNew("org.eclipse.jetty.util.thread.QueuedThreadPool"); { builder.set("minThreads", 1); Integer connectionLimit = getThreadPoolLimit(); if (connectionLimit != null) { builder.set("maxThreads", connectionLimit); } builder.set("detailedDump", false); } builder.end(); } builder.end(); } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#buildHttpConfig(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder) */ @Override protected void buildHttpConfig(JettyConfigBuilder builder) { // nothing to do } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#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.nio.SelectChannelConnector"); { builder.set("port", getPort()); builder.set("maxIdleTime", 300000); if (getAcceptorLimit() != null) { builder.set("Acceptors", getAcceptorLimit()); } builder.set("statsOn", false); if (getSslPort() != null) { builder.set("confidentialPort", getSslPort()); } builder.set("lowResourcesConnections", 5000); builder.set("lowResourcesMaxIdleTime", 5000); } builder.end(); } builder.end(); } builder.end(); } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#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.http.ssl.SslContextFactory"); { builder.set("KeyStore", getKeyStorePath()); builder.set("KeyStorePassword", getKeyStorePassword()); builder.set("KeyManagerPassword", getKeyManagerPassword()); builder.set("TrustStore", getKeyStorePath()); builder.set("TrustStorePassword", getKeyStorePassword()); } builder.end(); } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#buildHttpsConnector(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder) */ @Override protected void buildHttpsConnector(JettyConfigBuilder builder) { if (getSslPort() == null) { return; } builder.comment("HTTPs Connector"); builder.beginCall("addConnector"); { builder.beginArg(); { builder.beginNew("org.eclipse.jetty.server.ssl.SslSelectChannelConnector"); { builder.argRef("sslContextFactory"); builder.set("Port", getSslPort()); builder.set("maxIdleTime", 30000); if (getAcceptorLimit() != null) { builder.set("Acceptors", getAcceptorLimit()); } builder.set("AcceptQueueSize", 100); } builder.end(); } builder.end(); } builder.end(); } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#getDefaultHandlerClass() */ @Override protected String getDefaultHandlerClass() { return "org.eclipse.jetty.webapp.WebAppContext"; } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#collectDefaultHandlerConfigurations(java.util.Collection) */ @Override protected void collectDefaultHandlerConfigurations(Collection<String> configurations) { if (isAnnotationsEnabled()) { configurations.add("org.eclipse.jetty.webapp.WebInfConfiguration"); configurations.add("org.eclipse.jetty.webapp.WebXmlConfiguration"); configurations.add("org.eclipse.jetty.webapp.MetaInfConfiguration"); configurations.add("org.eclipse.jetty.webapp.FragmentConfiguration"); configurations.add("org.eclipse.jetty.annotations.AnnotationConfiguration"); configurations.add("org.eclipse.jetty.webapp.JettyWebXmlConfiguration"); } if (isJndiEnabled()) { configurations.add("org.eclipse.jetty.webapp.WebInfConfiguration"); configurations.add("org.eclipse.jetty.webapp.WebXmlConfiguration"); configurations.add("org.eclipse.jetty.webapp.MetaInfConfiguration"); configurations.add("org.eclipse.jetty.webapp.FragmentConfiguration"); configurations.add("org.eclipse.jetty.plus.webapp.EnvConfiguration"); configurations.add("org.eclipse.jetty.plus.webapp.PlusConfiguration"); configurations.add("org.eclipse.jetty.annotations.AnnotationConfiguration"); configurations.add("org.eclipse.jetty.webapp.JettyWebXmlConfiguration"); configurations.add("org.eclipse.jetty.webapp.TagLibConfiguration"); } } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#buildAnnotations(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder) */ @Override protected void buildAnnotations(JettyConfigBuilder builder) { // intentionally left blank } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#buildJNDI(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder) */ @Override protected void buildJNDI(JettyConfigBuilder builder) { // intentionally left blank } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#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.beginNew("MBeanContainer", "org.eclipse.jetty.jmx.MBeanContainer"); { builder.argRef("MBeanServer"); builder.call("start"); } builder.end(); builder.beginGet("Container", "container"); { builder.beginCall("addEventListener"); { builder.argRef("MBeanContainer"); } builder.end(); } builder.end(); builder.beginCall("addBean"); { builder.argRef("MBeanContainer"); builder.arg(true); } builder.end(); builder.beginRef("MBeanContainer"); { builder.beginCall("addBean"); { builder.beginArg(); { builder.beginNew("org.eclipse.jetty.util.log.Log").end(); } builder.end(); } builder.end(); } builder.end(); } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractConfiguration#getClassToConfigure() */ @Override protected String getClassToConfigure() { return "org.eclipse.jetty.server.Server"; } /** * {@inheritDoc} * * @see net.sourceforge.eclipsejetty.jetty.AbstractServerConfiguration#buildExtraOptions(net.sourceforge.eclipsejetty.jetty.JettyConfigBuilder) */ @Override protected void buildExtraOptions(JettyConfigBuilder builder) { builder.comment("Extra Options"); builder.set("stopAtShutdown", true); builder.set("sendServerVersion", true); builder.set("sendDateHeader", true); Integer gracefulShutdown = getGracefulShutdown(); if (gracefulShutdown != null) { builder.set("gracefulShutdown", gracefulShutdown); } builder.set("dumpAfterStart", false); builder.set("dumpBeforeStop", false); } }