<?xml version="1.0"  encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">



<!-- =============================================================== -->
<!-- Configure the JettyPlus Server                                  -->
<!-- =============================================================== -->
<Configure class="org.mortbay.jetty.plus.Server">

  <!-- =============================================================== -->
  <!-- Configure Logging                                               -->
  <!-- =============================================================== -->


  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Configure Jetty Logging.                                        -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Uncomment if using jetty logging.
  <Call class="org.apache.commons.logging.LogFactory" name="getFactory">
    <Call name="getInstance">
      <Arg/>
      <Call name="reset"/>
      <Call name="add">
        <Arg>
          <New class="org.mortbay.log.OutputStreamLogSink">
            <Set name="filename"><SystemProperty name="jetty.home" default="."/>/logs/yyyy_mm_dd.jetty.log</Set>
            <Set name="retainDays">90</Set>
            <Set name="append">true</Set>
            <Set name="logLabels">true</Set>
            <Set name="logStackSize">true</Set>
            <Set name="logStackTrace">false</Set>
            <Set name="logOneLine">false</Set>
            <Set name="suppressStack">false</Set>
            <Set name="logTimeZone">GMT</Set>
          </New>
        </Arg>
      </Call>
    </Call>
  </Call>
  -->

  <!-- =============================================================== -->
  <!-- Configure context specific log4j logging                        -->
  <!-- =============================================================== -->
  <!-- Uncomment to enable per-context logging. You will also need to  -->
  <!-- create and register a  ServletContextListener that will clean   -->
  <!-- the repository when the context is stopped, by calling this line-->
  <!-- in the contextDestroyed() method:                               -->
  <!--  org.mortbay.log4j.CRS.remove(Thread.currentThread().getContextClassLoader()) -->
  <!-- 
  <Call class="org.apache.log4j.LogManager" name="setRepositorySelector">
    <Arg><New class="org.mortbay.log4j.CRS"/></Arg>
    <Arg><New class="java.lang.Object"/></Arg>
  </Call>
  -->

  <!-- =============================================================== -->
  <!-- Configure the Request Listeners                                 -->
  <!-- =============================================================== -->

  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Add and configure a HTTP listener to port 8888                       -->
  <!-- The default port can be changed using: java -Djetty.port=80     -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Call name="addListener">
    <Arg>
      <New class="org.mortbay.http.SocketListener">
        <Set name="Port"><SystemProperty name="jetty.port" default="8888"/></Set>
        <Set name="MinThreads">10</Set>
        <Set name="MaxThreads">100</Set>
        <Set name="MaxIdleTimeMs">30000</Set>
        <Set name="LowResourcePersistTimeMs">5000</Set>
      </New>
    </Arg>
  </Call>


  <!-- =============================================================== -->
  <!-- Set the default web application configuration mechanisms:       -->
  <!--   XMLConfiguration       - handles WEB-INF/web.xml              -->
  <!--   JettyWebConfiguration  - handles WEB-INF/jetty-web.xml        -->
  <!--   jsr77.Configuration    - Adds jsr77 statistics to servlets    -->
  <!--                                                                 -->
  <!-- Order of these classes is significant. The defaults set here    -->
  <!-- can be overridden by calling setConfigurationClassNames() on    -->
  <!-- the webapp context.                                             -->
  <!-- The TagLibconfiguration scans any tld files found for           -->
  <!-- additional j2ee listener classes - needed for JSF               -->
  <!-- The jsr77 configuration requires additional jars on the         -->
  <!-- on the classpath and it needs jmx enabled.                      -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="WebApplicationConfigurationClassNames">
    <Array type="java.lang.String">
      <Item>org.mortbay.jetty.servlet.XMLConfiguration</Item>
      <Item>org.mortbay.jetty.servlet.JettyWebConfiguration</Item>
      <Item>org.mortbay.jetty.servlet.TagLibConfiguration</Item>
      <!--
      <Item>org.mortbay.jetty.servlet.jsr77.Configuration</Item>
      -->
    </Array>
  </Set>


  <!-- =============================================================== -->
  <!-- Configure the Contexts                                          -->
  <!-- =============================================================== -->


  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Uncomment to configure a list of configurations to be applied   -->
  <!-- to each webapp context.                                         -->
  <!-- Note that order is significant. This can be changed per webapp  -->
  <!-- by calling setConfigurationClassNames() on the webapp context.  -->
  <!--                                                                 -->
  <!-- The jsr77 configuration is optional - if specified, jsr77       -->
  <!-- statistics will be enabled. You will also need to build the     -->
  <!-- extra/jsr77 package, include the jsr77 jars and start Jetty with -->
  <!-- jmx enabled. To make this easier, the JettyPlus start config     -->
  <!-- file sets up the classpath correctly, so make sure you use       -->
  <!-- -DSTART=extra/etc/start-plus.config and see the JettyPlus        -->
  <!-- README.TXT file for instructions on how to run with JMX enabled. -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!--
  <Set name="WebApplicationConfigurationClassNames">
    <Array type="java.lang.String">
      <Item>org.mortbay.jetty.plus.PlusWebAppContext$Configuration</Item>
      <Item>org.mortbay.jetty.servlet.JettyWebConfiguration</Item>
      <Item>org.mortbay.jetty.servlet.jsr77.Configuration</Item>
    </Array>
  </Set>
  -->


  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Add and configure a specific web application                    -->
  <!-- + Set Unpack WAR files                                          -->
  <!-- + Set Default Descriptor.  Resource, file or URL                -->
  <!-- + Set Virtual Hosts. A Null host or empty array means all hosts -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Call name="addWebApplication">
    <Arg>/</Arg>
    <Arg><SystemProperty name="webapp" default="."/></Arg>
    <Set name="defaultsDescriptor"><SystemProperty name="home" default="."/>/tools/jetty/conf/webdefaults.xml</Set>
  </Call>

  <!-- =============================================================== -->
  <!-- Configure the Request Log                                       -->
  <!-- =============================================================== -->
  <Set name="RequestLog">
    <New class="org.mortbay.http.NCSARequestLog">
      <Arg><SystemProperty name="webapp" default="."/>/WEB-INF/logs/yyyy_mm_dd.request.log</Arg>
      <Set name="retainDays">90</Set>
      <Set name="append">true</Set>
      <Set name="extended">false</Set>
      <Set name="buffered">false</Set>
      <Set name="LogTimeZone">GMT</Set>
    </New>
  </Set>

  <!-- =============================================================== -->
  <!-- Configure the Other Server Options                              -->
  <!-- =============================================================== -->
  <Set name="requestsPerGC">2000</Set>
  <Set name="statsOn">false</Set>

</Configure>
