<title>Semi-Formal Configuration Description</title>

<p/>Configuration is based on element-only XML like the Servlet 2.2
deployment descriptors.

<p/>For convenience, Resin allows any element to be used as an attribute.
This syntactic sugar makes the configuration files more readable and
maintainable.

<p/>Using the syntactic sugar, the following are equivalent:
<deftable>
<tr><td>&lt;foo>&lt;bar>13&lt;/bar>&lt;/foo><td>canonical representation, but verbose
<tr><td>&lt;foo bar=13/><td>typical configuration
<tr><td>&lt;foo>&lt;bar id=13/>&lt;/foo><td>Useful for a key-based list.
</deftable>

<p/>In general, the order is not important, but the nesting depth is.

<p/>The special element
<a href="resin-config.xtp#resin_include">resin:include</a> can be used in
any place to read in another file.

<section title="Semi-Formal Description">

<code><pre>

caucho.com ::= <a href="resin-config.xtp#log">log</a>* |
               <a href="resin-config.xtp#java">java</a> |
               <a href="resin-config.xtp#jsp">jsp</a> |
               <a href="resin-config.xtp#smtp.vfs">smtp.vfs</a> | 
               <a href="app-config.xtp#env-entry">env-entry</a>* |
               <a href="app-config.xtp#resource-ref">resource-ref</a>* |
               <a href="app-config.xtp#ejb-ref">ejb-ref</a>* |
               <a href="app-config.xtp#jndi-link">jndi-link</a>*
               <a href="resin-config.xtp#env-entry">env-entry</a>* | 
               <a href="resin-config.xtp#user-name">user-name</a> |
               <a href="resin-config.xtp#group-name">group-name</a> |
               <a href="http-config.xtp#http-server">http-server</a>

log ::= <a href="resin-config.xtp#log">id</a> |
        <a href="resin-config.xtp#log">href</a> |
        <a href="resin-config.xtp#log">timestamp</a>

java ::= <a href="resin-config.xtp#java">compiler</a> |
         <a href="resin-config.xtp#java">work-dir</a> |
         <a href="resin-config.xtp#java">compiler-args</a>

smtp.vfs ::= <a href="resin-config.xtp#smtp.vfs">host</a> |
             <a href="resin-config.xtp#smtp.vfs">port</a>

http-server ::=	<a href="http-config.xtp#http">http</a>* |
                <a href="http-config.xtp#srun">srun</a>* |
                <a href="http-config.xtp#srun-backup">srun-backup</a>* |
                <a href="http-config.xtp#thread-max">thread-max</a> |
                <a href="http-config.xtp#thread-keepalive">thread-keepalive</a> |
                <a href="http-config.xtp#request-timeout">request-timeout</a> |
                <a href="http-config.xtp#cache">cache</a> |
                <a href="http-config.xtp#host">host</a>* |
                <a href="app-config.xtp#classpath">classpath</a>* |
                <var/any host tag for host defaults/>
		 
http ::= <a href="http-config.xtp#http">host</a> |
         <a href="http-config.xtp#http">port</a> |
         <a href="http-config.xtp#http">ssl</a> (default: <var/false/>) |
         <a href="http-config.xtp#http">key-store-type</a> (default: <var/jks/>) |
         <a href="http-config.xtp#http">key-store-file</a> |
         <a href="http-config.xtp#http">key-store-password</a> |
         <a href="http-config.xtp#http">certificate-pem</a> ||
         <a href="http-config.xtp#http">key-pem</a>
		 
srun ::= <a href="http-config.xtp#srun">host</a> |
         <a href="http-config.xtp#srun">port</a>
         <a href="http-config.xtp#http">ssl</a> (default: <var/false/>) |
         <a href="http-config.xtp#http">key-store-type</a> (default: <var/jks/>) |
         <a href="http-config.xtp#http">key-store-file</a> |
         <a href="http-config.xtp#http">key-store-password</a>
		 
srun-backup ::= <a href="http-config.xtp#srun-backup">host</a> |
                <a href="http-config.xtp#srun-backup">port</a> |
                <a href="http-config.xtp#http">ssl</a> (default: <var/false/>) |
                <a href="http-config.xtp#http">key-store-type</a> (default: <var/jks/>) |
                <a href="http-config.xtp#http">key-store-file</a> |
                <a href="http-config.xtp#http">key-store-password</a>

cache ::= <a href="http-config.xtp#cache">dir</a> |
          <a href="http-config.xtp#entries">entries</a> |
          <a href="http-config.xtp#size">size</a>

host ::= <a href="http-config.xtp#host">id</a> |
         <a href="http-config.xtp#host">regexp</a> |
         <a href="http-config.xtp#host">app-dir</a> |
         <a href="http-config.xtp#error-log">error-log</a> |
         <a href="http-config.xtp#access-log">access-log</a>* |
         <a href="http-config.xtp#war-dir">war-dir</a>* |
         <a href="app-config.xtp#web-app">web-app</a>* |
         <var/any web-app tag (for "/" web-app)/>
	  
access-log ::= <a href="http-config.xtp#access-log">id</a> |
               <a href="http-config.xtp#access-log">format</a> |

web-app ::= <a href="http-config.xtp#web-app">id</a> |
            <a href="http-config.xtp#web-app">url-regexp</a> |
            <a href="http-config.xtp#web-app">app-dir</a> |
            <a href="app-config.xtp#servlet-mapping">servlet-mapping</a>* |
            <a href="app-config.xtp#servlet">servlet</a>* |
            <a href="app-config.xtp#filter-mapping">filter-mapping</a>* |
            <a href="app-config.xtp#filter">filter</a>* |
            <a href="app-config.xtp#classpath">classpath</a>* |
            <a href="app-config.xtp#class-update-interval">class-update-interval</a> |
            <a href="app-config.xtp#context-param">context-param</a>* |
            <a href="app-config.xtp#session-config">session-config</a> |
            <a href="app-config.xtp#error-page">error-page</a>* |
            <a href="app-config.xtp#path-mapping">path-mapping</a>* |
            <a href="app-config.xtp#mime-mapping">mime-mapping</a>* |
            <a href="app-config.xtp#cache-mapping">cache-mapping</a>* |
            <a href="app-config.xtp#chain-mapping">chain-mapping</a>* |
            <a href="app-config.xtp#welcome-file-list">welcome-file-list</a> |
            <a href="app-config.xtp#character-encoding">character-encoding</a> |
            <a href="app-config.xtp#directory-servlet">directory-servlet</a> |
            <a href="app-config.xtp#jsp">jsp</a> |
            <a href="app-config.xtp#taglib">taglib</a>* |
            <a href="app-config.xtp#temp-dir">temp-dir</a> |
            <a href="app-config.xtp#resource-ref">resource-ref</a>* |
            <a href="app-config.xtp#env-entry">env-entry</a>* |
            <a href="app-config.xtp#resource-ref">resource-ref</a>* |
            <a href="app-config.xtp#ejb-ref">ejb-ref</a>* |
            <a href="app-config.xtp#jndi-link">jndi-link</a>*

servlet-mapping ::= <a href="app-config.xtp#url-pattern">url-pattern</a> |
                    <a href="app-config.xtp#servlet-mapping">url-regexp</a> |
                    <a href="servlet-config.xtp#servlet-name">servlet-name</a> |
                    <a href="app-config.xtp#servlet-mapping">path-info</a> |
                    <a href="servlet-config.xtp#servlet-class">servlet-class</a> |
                    <a href="servlet-config.xtp#init-param">init-param</a>* |
                    <a href="servlet-config.xtp#load-on-startup">load-on-startup</a> |
                    <a href="servlet-config.xtp#servlet-mapping">run-at</a>*

servlet ::= <a href="servlet-config.xtp#servlet-name">servlet-name</a> |
            <a href="servlet-config.xtp#servlet-class">servlet-class</a> |
            <a href="servlet-config.xtp#init-param">init-param</a>* |
            <a href="servlet-config.xtp#load-on-startup">load-on-startup</a> |
            <a href="servlet-config.xtp#servlet-mapping">run-at</a>*

init-param ::= <a href="servlet-config.xtp#init-param">param-name</a> |
               <a href="servlet-config.xtp#init-param">param-value</a> |

classpath ::= <a href="app-config.xtp#classpath">id</a> |
              <a href="app-config.xtp#classpath">source</a> (default: same as id) |
              <a href="app-config.xtp#classpath">compile</a> (default: <var/true/>)

context-param ::= <a href="app-config.xtp#context-param">param-name</a> |
                  <a href="app-config.xtp#context-param">param-value</a>

ejb-ref ::= <a href="app-config.xtp#ejb-ref">ejb-ref-name</a> |
            <a href="app-config.xtp#ejb-ref">ejb-ref-factory</a> |
            <a href="app-config.xtp#ejb-ref">init-param</a>

browser-mapping ::= <a href="app-config.xtp#browser-mapping">regexp</a> |
                    <a href="app-config.xtp#browser-mapping">force10</a>

cache-mapping ::= <a href="app-config.xtp#cache-mapping">url-pattern</a> |
                  <a href="app-config.xtp#cache-mapping">url-regexp</a> |
                  <a href="app-config.xtp#cache-mapping">expires</a>

env-entry ::= <a href="app-config.xtp#env-entry">env-entry-name</a> |
              <a href="app-config.xtp#env-entry">env-entry-type</a> |
              <a href="app-config.xtp#env-entry">env-entry-value</a>

error-page ::= <a href="app-config.xtp#error-page">location</a> |
               <a href="app-config.xtp#error-page">exception</a> |
               <a href="app-config.xtp#error-page">error-code</a>

filter-mapping ::= <a href="app-config.xtp#filter-mapping">mime-type</a> |
                   <a href="app-config.xtp#filter-mapping">servlet-name</a>

jndi-link ::= <a href="app-config.xtp#jndi-link">jndi-name</a> |
              <a href="app-config.xtp#jndi-link">property-file</a> |
              <a href="app-config.xtp#jndi-link">jndi-factory</a> |
              <a href="app-config.xtp#jndi-link">init-param</a>

mime-mapping ::= <a href="app-config.xtp#mime-mapping">extension</a> |
                 <a href="app-config.xtp#mime-mapping">mime-type</a>

path-mapping ::= <a href="app-config.xtp#path-mapping">url-pattern</a> |
                 <a href="app-config.xtp#path-mapping">url-regexp</a> |
                 <a href="app-config.xtp#path-mapping">real-path</a>

resource-ref ::= <a href="app-config.xtp#resource-ref">res-ref-name</a> |
                 <a href="app-config.xtp#resource-ref">res-type</a> |
                 <a href="app-config.xtp#resource-ref">init-param</a>*

session-config ::= <a href="app-config.xtp#session-config">session-timeout</a> |
                  <a href="app-config.xtp#session-config">session-max</a> |
                  <a href="app-config.xtp#session-config">enable-cookies</a> |
                  <a href="app-config.xtp#session-config">enable-url-rewriting</a>

</pre></code>

</section>
