<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">


<!-- =============================================================== -->
<!-- Configure the Jetty Server                                      -->
<!--                                                                 -->
<!-- Documentation of this file format can be found at:              -->
<!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax        -->
<!-- =============================================================== -->

<Configure id="Server" class="org.eclipse.jetty.server.Server">

	<!-- jetty.xml -->

    <!-- =========================================================== -->
    <!-- Server Thread Pool                                          -->
    <!-- =========================================================== -->
    <Set name="ThreadPool">
      <!-- Default queued blocking threadpool -->
      <New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
        <Set name="minThreads">10</Set>
        <Set name="maxThreads">200</Set>
        <Set name="detailedDump">false</Set>
      </New>
    </Set>


    <!-- =========================================================== -->
    <!-- Set handler Collection Structure                            --> 
    <!-- =========================================================== -->
    <Set name="handler">
      <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
        <Set name="handlers">
         <Array type="org.eclipse.jetty.server.Handler">
           <Item>
             <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
           </Item>
           <Item>
             <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
           </Item>
           <Item>
             <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
           </Item>
         </Array>
        </Set>
      </New>
    </Set>


    <!-- =========================================================== -->
    <!-- extra options                                               -->
    <!-- =========================================================== -->
    <Set name="stopAtShutdown">true</Set>
    <Set name="sendServerVersion">true</Set>
    <Set name="sendDateHeader">true</Set>
    <Set name="gracefulShutdown">1000</Set>
    <Set name="dumpAfterStart">false</Set>
    <Set name="dumpBeforeStop">false</Set>


    <!-- =========================================================== -->
    <!-- Add connector                                               -->
    <!-- =========================================================== -->

    <Call name="addConnector">
      <Arg>
          <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <Set name="host"><Property name="jetty.host" /></Set>
            <Set name="port"><Property name="jetty.port" default="8080"/></Set>
            <Set name="maxIdleTime">300000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
        <Set name="lowResourcesConnections">20000</Set>
        <Set name="lowResourcesMaxIdleTime">5000</Set>
          </New>
      </Arg>
    </Call>

	<Call name="addConnector">
		<Arg>
			<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
				<Set name="Port">
					<Property name="jetty.port.ssl" default="8443"/>
				</Set>
				<Set name="maxIdleTime">30000</Set>
				<Set name="Acceptors">2</Set>
				<Set name="AcceptQueueSize">100</Set>
				<Set name="Keystore"><Property name="jetty.home" default="."/>/etc/keystore</Set>
				<Set name="Password">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
				<Set name="KeyPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
				<Set name="truststore"><Property name="jetty.home" default="."/>/etc/keystore</Set>
				<Set name="trustPassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
			</New>
		</Arg>
	</Call>

	<!-- jetty-deployer.xml -->

    <!-- =========================================================== -->
    <!-- Configure the deployment manager                            -->
    <!-- =========================================================== -->
    <Call name="addBean">
      <Arg>
        <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
          <Set name="useStandardBindings">false</Set>
          <Set name="lifeCycleBindings">
            <Array type="org.eclipse.jetty.deploy.AppLifeCycle$Binding">
              <Item>
                <New class="org.eclipse.jetty.osgi.boot.OSGiDeployer"/>
              </Item>
              <Item>
               <New class="org.eclipse.jetty.deploy.bindings.StandardStarter"/>
              </Item>
              <Item>
                <New class="org.eclipse.jetty.deploy.bindings.StandardStopper"/>
              </Item>
              <Item>
              <New class="org.eclipse.jetty.osgi.boot.OSGiUndeployer"/>
              </Item>
            </Array>
          </Set>
          <Set name="contexts">
            <Ref id="Contexts" />
          </Set>
          <Call name="setContextAttribute">
            <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
            <Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg>
          </Call>
          <!-- Providers of OSGi Apps -->
          <!-- Call name="addAppProvider" -->
            <!-- Arg -->
              <!-- New class="org.eclipse.jetty.osgi.boot.OSGiAppProvider" -->
              <!--
                <Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
              -->
              <!--
                <Set name="scanInterval">5</Set>
                <Set name="contextXmlDir"><Property name="jetty.home" default="." />/contexts</Set>
                -->
                <!-- comma separated list of bundle symbolic names that contain custom tag libraries (*.tld files) -->
                <!-- if those bundles don't exist or can't be loaded no errors or warning will be issued!          -->
                <!-- This default value plugs in the tld files of the reference implementation of JSF              -->
                <!--
                 <Set name="tldBundles"><Property name="org.eclipse.jetty.osgi.tldbundles" default="javax.faces.jsf-impl" /></Set>
              </New>
            </Arg>
          </Call>
          -->
        </New>
      </Arg>
    </Call>

	<!-- =========================================================== -->
	<!-- Enable support for tlds in other bundles                    -->
	<!-- =========================================================== -->
	<Call name="setAttribute">
          <Arg>org.eclipse.jetty.webapp.configuration</Arg>
          <Arg>
            <Array id="plusConfigOSGi" type="java.lang.String">
              <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item>
              <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item>
              <Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item>
              <Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item>
              <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item>
              <Item>org.eclipse.jetty.osgi.boot.jsp.TagLibOSGiConfiguration</Item>
            </Array>
          </Arg>
	</Call>

	<!-- =========================================================== -->
	<!-- Configure Authentication Login Service                      -->
	<!-- Realms may be configured for the entire server here, or     -->
	<!-- they can be configured for a specific web app in a context  -->
	<!-- configuration (see $(jetty.home)/contexts/test.xml for an   -->
	<!-- example).                                                   -->
	<!-- =========================================================== -->
	<Call name="addBean">
		<Arg>
			<New class="org.eclipse.jetty.security.HashLoginService">
				<Set name="name">Virgo Admin Console</Set>
				<Set name="config"><Property name="jetty.home" default="."/>/etc/realm.properties</Set>
				<Set name="refreshInterval">0</Set>
			</New>
		</Arg>
	</Call>
	
	<!-- =========================================================== -->
	<!-- Configure Request Log                                       -->
	<!-- Request logs  may be configured for the entire server here, -->
	<!-- or they can be configured for a specific web app in a       -->
	<!-- contexts configuration (see $(jetty.home)/contexts/test.xml -->
	<!-- for an example).                                            -->
	<!-- =========================================================== -->
	<Ref id="RequestLog">
		<Set name="requestLog">
			<New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
				<Set name="filename"><Property name="jetty.home" default="."/>/logs/yyyy_mm_dd.request.log</Set>
				<Set name="filenameDateFormat">yyyy_MM_dd</Set>
				<Set name="retainDays">90</Set>
				<Set name="append">true</Set>
				<Set name="extended">false</Set>
				<Set name="logCookies">false</Set>
				<Set name="LogTimeZone">GMT</Set>
			</New>
		</Set>
	</Ref>

</Configure>
