<!--
   - The Resin configuration file.
   -
   - This example file is more complicated than is needs to be because
   - it makes several configurations explicit that can be simplified and
   - because it needs to configure the examples.
   -
   - Look in conf/samples for more realistic sample configurations.
   -   conf/samples/simple.conf - a simple, basic configuration
   -   conf/samples/deploy.conf - a simple configuration for deployment
   -
   - The configuration is based on a purely element-based XML.  To make
   - it easier to read, attributes can be used as syntactic sugar.
   -
   - The following are equivalent:
   - <foo><bar>13</bar></foo>  - canonical representation, but verbose
   - <foo bar=13/>             - typical configuration
   - <foo><bar id=13/></foo>   - sometimes useful
  -->
<caucho.com>

<!--
   - Resin logging.  Debugging is also available with different values
   - for id.
  -->
<log id='/log' href='stderr:' timestamp='[%Y-%m-%d %H:%M:%S.%s]'/>

<!-- Security providers.  Adding JSSE looks like:
   - <security-provider id='com.sun.net.ssl.internal.ssl.Provider'/>
  -->

<!--
   - You can change the compiler to "javac" or jikes.
   - The default is "internal" only because it's the most
   - likely to be available.
  -->
<java compiler="internal" compiler-args=""/>

<!--
   - Sample database pool configuration
   - The JDBC name is java:comp/env/jdbc/test
  -->
<resource-ref>
  <res-ref-name>jdbc/test</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <init-param driver-name="com.caucho.jdbc.mysql.Driver"/>
  <init-param url="jdbc:mysql_caucho://localhost:3306/test"/>
  <init-param user=""/>
  <init-param password=""/>
  <init-param max-connections="20"/>
  <init-param max-idle-time="30"/>
</resource-ref>

<!--
   - Use precompiled JSP classes if available.
   - 'static-encoding' - optimization if you stick to one character set
  -->
<jsp precompile='true' static-encoding='true' recompile-on-error='true'/>

<http-server>
  <!--
     - The root file directory of the server.  Apache users will change
     - this to /usr/local/apache/htdocs and IIS users will change it
     - to d:\inetpub\wwwroot
    -->
  <doc-dir>doc</doc-dir>

  <!-- the http port -->
  <http port='8080'/>

  <!--
     - The srun port, read by both JVM and plugin
     - 127.0.0.1 is the localhost
    -->
  <srun host='127.0.0.1' port='6802'/>

  <!--
     - How to add SSL:
     -
     - <http port=8443>
     -   <ssl>true</ssl>
     -   <key-store-type>pkcs12</key-store-type>
     -   <key-store-file>keys/server_cert.p12</key-store-file>
     -   <key-store-password>changeit</key-store-password>
     - </http>
    -->

  <!--
     - If starting bin/httpd.sh as root on Unix, specify the user name
     - and group name for the web server user.  Note: Linux users must
     - either have the new thread package (RedHat 9.0 or later) or use
     - bin/resin.
     -
     - <user-name>resin</user-name>
     - <group-name>resin</group-name>
    -->

  <!--
     - For production sites, change class-update-interval to something
     - like 60s, so it only checks for updates every minute.
    -->
  <class-update-interval>2s</class-update-interval>

  <!--
     - If true, the classloader order follows the Servlet spec.
     - If false, the classloader order follows the JDK spec.
    -->
  <servlet-classloader-hack>false</servlet-classloader-hack>

  <!--
     - Select an error page to display when the connection fails.
     -
     - <error-page exception='connection' location='/my-error-page.html'/>
    -->

  <!-- To disable /caucho-status, set this to false -->
  <caucho-status>true</caucho-status>

  <!-- maximum number of threads -->
  <thread-max>150</thread-max>

  <!--
     - How many threads to wait for keepalives.  Should be at least the
     - number of Apache processes to get good performance.
    -->
  <thread-keepalive id='100'/>

  <!--
     - How long an idle keepalive connection should listen to the socket.
     -
     - The choice of 65 seconds is to avoid the IE SSL timeout problem.
     - If you're not using SSL, you can make this shorter.
    -->
  <request-timeout id='65s'/>

  <!--
     - How many sockets to hold in the buffer before failing requests.
    -->
  <accept-buffer-size id='256'/>
  <!--
     - Maximum number of request threads which will wait for a socket.
    -->
  <thread-min id='5'/>

  <!--
     - Ping to test if the web server is still up.  You can uncomment this
     - and point it to pages on the webserver that exercise your main
     - logic (like database access).  If the GET fails, it will restart
     - the server.  This will catch deadlocks, but not JDK freezes.
     -
     - <ping sleep-time='1m' retry-count='3' retry-time='1s'>
     -   <url>http://localhost:8080/ping/ping.jsp</url>
     - </ping>
    -->

  <!--
     - Enables/disables exceptions when the browser closes a connection.
    -->
  <ignore-client-disconnect>true</ignore-client-disconnect>

  <!--
     - Enable internal caching.
     - 'dir' is the directory containing the cache
     - 'size' is the memory size in kb
     - 'entries' is the total number of entries
    -->
  <cache dir='cache' size='1024' entries='8192'/>

  <!--
     - Expires time for a cacheable file.  Production sites will
     - normally change this to '15m'
    -->
  <cache-mapping url-pattern='/' expires='2s'/>

  <!--
     - servlet configuration outside the <host> is a default for all hosts.
    -->
  <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>
  <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

  <!--
     - The "invoker" servlet invokes servlet classes from the URL.
     - /examples/basic/servlet/HelloServlet will start the HelloServlet
     - class.  In general, the invoker should only be used
     - for development, not on a deployment server, because it might
     - leave open security holes.
    -->
  <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>


  <!--
     - set the pages to be used as welcome (index) files
    -->
  <welcome-file-list>index.xtp, index.jsp, index.html</welcome-file-list>

  <!-- default host if no other host matches -->
  <host id=''>
    <!--
       - The standalone server should uncomment for access logging.
       - With another web server, like Apache, the web server will
       - log this information.
      -->
    <access-log id='logs/access.log' 
          format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
          rollover-period='1W'/>

    <error-log id='logs/error.log'/>

    <!--
       - Specifies an automatically-expanding .war dir.  Any foo.war
       - file will be expanded to a /foo application.
      -->
    <war-dir id='webapps'/>

    <web-app id='/'>
      <!--
         - The classpath directive may be repeated.  Source is optional
         - Servlets and beans generally belong in WEB-INF/classes
        -->
      <classpath id='WEB-INF/classes'
                 source='WEB-INF/classes'
                 compile='true'/>

      <session-config>
        <session-max>4096</session-max>
        <session-timeout>30</session-timeout>
        <enable-cookies>true</enable-cookies>
        <enable-url-rewriting>true</enable-url-rewriting>

        <!--
           - Store sessions in the filesystem, so they can persist across
           - servlet and class changes.
           -
           - Uncomment this during development.
          -->
        <!--
           -  <file-store>WEB-INF/sessions</file-store>
          -->
      </session-config>

      <!-- enable multipart-mime/form processing -->
      <!--
         - <multipart-form upload-max='-1'/>
        -->

      <!-- /~user maps to user directories -->
      <path-mapping url-regexp='^/~([^/]*)'
                    real-path='/home/$1/public_html/'/>
    </web-app>

    <!-- 
       - The following entries configuration the examples.  You may safely
       - delete anything from here down.
      -->

    <!--
       - Define applications (ServletContexts) for the examples.
       - Since applications are entirely separate from one another,
       - including session variables and servlet-mappings, the
       - servlet-mapping declarations need to be repeated.
      -->
    <web-app id='java_tut'/>

    <web-app id='examples/basic'>
      <!-- Application init parameters, see Env.java to get the values -->
      <context-param info='An application information string'/>

      <!-- snoop-servlet handles all urls starting with /snoop -->
      <servlet-mapping url-pattern='/snoop/*' servlet-name='snoop-servlet'/>

      <!-- configure snoop-servlet with init parameters -->
      <servlet servlet-name='snoop-servlet' servlet-class='Env'>
        <init-param info='A servlet information string'/>
      </servlet>
    </web-app>

    <web-app id='examples/tags'/>

    <web-app id='examples/tictactoe'/>
 
    <web-app id='examples/navigation'/>

    <web-app id='examples/xsl'/>

    <web-app id='examples/templates'>
      <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>
      <servlet-mapping url-pattern='/GuestJsp' servlet-name='GuestJsp'/>
      <servlet-mapping url-pattern='/GuestXtp' servlet-name='GuestXtp'/>
      <servlet-mapping url-pattern='/RSS' servlet-name='jsp.RSS'/>

      <servlet servlet-name='GuestJsp' servlet-class='jsp.GuestJsp'/>
      <servlet servlet-name='GuestXtp' servlet-class='jsp.GuestXtp'/>
    </web-app>

    <web-app id='/examples/login'/>
  </host>

  <!--
     - Known broken browsers.  These should no longer be necessary, but
     - you can uncomment them if they become a problem.
     -
     - <browser-mapping regexp="MSIE 4\.0b2" force10/>
     - <browser-mapping regexp="RealPlayer 4\.0" force10/>
     - <browser-mapping regexp="Java/1\\.0" force10/>
     - <browser-mapping regexp="JDK/1\\.0" force10/>
    -->
</http-server>
</caucho.com>
