###############################################################################
# Copyright (c) 2007 SAS Institute, Inc. and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
# 
# Contributors:
#     Larry Isaacs - Initial API and implementation
###############################################################################
# A version of the default Tomcat 5.0 server.xml with comments and whitespace removed
default.serverxml.50=\
<Server port="8005" shutdown="SHUTDOWN" debug="0">\n\
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"\n\
            debug="0"/>\n\
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"\n\
            debug="0"/>\n\
  <GlobalNamingResources>\n\
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>\n\
    <Resource name="UserDatabase" auth="Container"\n\
              type="org.apache.catalina.UserDatabase"\n\
       description="User database that can be updated and saved">\n\
    </Resource>\n\
    <ResourceParams name="UserDatabase">\n\
      <parameter>\n\
        <name>factory</name>\n\
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>\n\
      </parameter>\n\
      <parameter>\n\
        <name>pathname</name>\n\
        <value>conf/tomcat-users.xml</value>\n\
      </parameter>\n\
    </ResourceParams>\n\
  </GlobalNamingResources>\n\
  <Service name="Catalina">\n\
    <Connector port="8080"\n\
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"\n\
               enableLookups="false" redirectPort="8443" acceptCount="100"\n\
               debug="0" connectionTimeout="20000" \n\
               disableUploadTimeout="true" />\n\
    <Connector port="8009" \n\
               enableLookups="false" redirectPort="8443" debug="0"\n\
               protocol="AJP/1.3" />\n\
    <Engine name="Catalina" defaultHost="localhost" debug="0">\n\
      <Logger className="org.apache.catalina.logger.FileLogger"\n\
              prefix="catalina_log." suffix=".txt"\n\
              timestamp="true"/>\n\
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"\n\
                 debug="0" resourceName="UserDatabase"/>\n\
      <Host name="localhost" debug="0" appBase="webapps"\n\
       unpackWARs="true" autoDeploy="true"\n\
       xmlValidation="false" xmlNamespaceAware="false">\n\
        <Logger className="org.apache.catalina.logger.FileLogger"\n\
                 directory="logs"  prefix="localhost_log." suffix=".txt"\n\
            timestamp="true"/>\n\
      </Host>\n\
    </Engine>\n\
  </Service>\n\
</Server>\n

default.serverxml.55=\
<Server port="8005" shutdown="SHUTDOWN">\n\
  <Listener className="org.apache.catalina.core.AprLifecycleListener" />\n\
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />\n\
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />\n\
  <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>\n\
  <GlobalNamingResources>\n\
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>\n\
    <Resource name="UserDatabase" auth="Container"\n\
              type="org.apache.catalina.UserDatabase"\n\
       description="User database that can be updated and saved"\n\
           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"\n\
          pathname="conf/tomcat-users.xml" />\n\
  </GlobalNamingResources>\n\
  <Service name="Catalina">\n\
    <Connector port="8080" maxHttpHeaderSize="8192"\n\
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"\n\
               enableLookups="false" redirectPort="8443" acceptCount="100"\n\
               connectionTimeout="20000" disableUploadTimeout="true" />\n\
    <Connector port="8009" \n\
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />\n\
    <Engine name="Catalina" defaultHost="localhost">\n\
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"\n\
             resourceName="UserDatabase"/>\n\
      <Host name="localhost" appBase="webapps"\n\
       unpackWARs="true" autoDeploy="true"\n\
       xmlValidation="false" xmlNamespaceAware="false">\n\
      </Host>\n\
    </Engine>\n\
  </Service>\n\
</Server>\n

default.serverxml.60=\
<Server port="8005" shutdown="SHUTDOWN">\n\
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />\n\
  <Listener className="org.apache.catalina.core.JasperListener" />\n\
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />\n\
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />\n\
  <GlobalNamingResources>\n\
    <Resource name="UserDatabase" auth="Container"\n\
              type="org.apache.catalina.UserDatabase"\n\
              description="User database that can be updated and saved"\n\
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"\n\
              pathname="conf/tomcat-users.xml" />\n\
  </GlobalNamingResources>\n\
  <Service name="Catalina">\n\
    <Connector port="8080" protocol="HTTP/1.1" \n\
               maxThreads="150" connectionTimeout="20000" \n\
               redirectPort="8443" />\n\
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />\n\
    <Engine name="Catalina" defaultHost="localhost">\n\
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"\n\
             resourceName="UserDatabase"/>\n\
      <Host name="localhost"  appBase="webapps"\n\
            unpackWARs="true" autoDeploy="true"\n\
            xmlValidation="false" xmlNamespaceAware="false">\n\
      </Host>\n\
    </Engine>\n\
  </Service>\n\
</Server>

serverxml.test1=\
<Server port="8005" shutdown="SHUTDOWN">\n\
  <Service name="Service">\n\
  </Service>\n\
</Server>

serverxml.test2=\
<Server port="8005" shutdown="SHUTDOWN">\n\
  <Service name="Service">\n\
    <Engine name="Engine" defaultHost="localhost">\n\
      <Host name="localhost" appBase="webapps"\n\
       unpackWARs="true" autoDeploy="true"\n\
       xmlValidation="false" xmlNamespaceAware="false">\n\
       <Context docBase="WebApp1" path="/WebApp1" reloadable="true" />\n\
       <Context docBase="WebApp2" path="/WebApp2" reloadable="true" workDir="relative/workdir" />\n\
       <Context docBase="WebApp3" path="/WebApp3" reloadable="true" workDir="/absolute/workdir" />\n\
      </Host>\n\
    </Engine>\n\
  </Service>\n\
</Server>

serverxml.test3=\
<Server port="8005" shutdown="SHUTDOWN">\n\
  <Service name="Service">\n\
    <Engine name="Engine" defaultHost="localhost">\n\
      <Host name="localhost" appBase="webapps"\n\
       unpackWARs="true" autoDeploy="true"\n\
       xmlValidation="false" xmlNamespaceAware="false" workDir="relative/host">\n\
       <Context docBase="WebApp1" path="/WebApp1" reloadable="true" />\n\
       <Context docBase="WebApp2" path="/WebApp2" reloadable="true" workDir="relative/workdir" />\n\
       <Context docBase="WebApp3" path="/WebApp3" reloadable="true" workDir="/absolute/workdir" />\n\
      </Host>\n\
    </Engine>\n\
  </Service>\n\
</Server>

default.serverxml.32=\
<Server>\
    <Logger name="tc_log" verbosityLevel = "INFORMATION"/>\
    <Logger name="servlet_log" path="logs/servlet.log"/>\
    <Logger name="JASPER_LOG" path="logs/jasper.log" verbosityLevel = "INFORMATION" />\
    <ContextManager debug="0" workDir="work" showDebugInfo="true" >\
        <ContextInterceptor className="org.apache.tomcat.context.AutoSetup" />\
        <ContextInterceptor className="org.apache.tomcat.context.WebXmlReader" />\
        <ContextInterceptor className="org.apache.tomcat.context.LoaderInterceptor" />\
        <ContextInterceptor className="org.apache.tomcat.context.DefaultCMSetter" />\
        <ContextInterceptor className="org.apache.tomcat.context.WorkDirInterceptor" />\
        <RequestInterceptor className="org.apache.tomcat.request.SessionInterceptor" noCookies="false" />\
        <RequestInterceptor className="org.apache.tomcat.request.SimpleMapper1" debug="0" />\
        <RequestInterceptor className="org.apache.tomcat.request.InvokerInterceptor" debug="0" prefix="/servlet/" />\
        <RequestInterceptor className="org.apache.tomcat.request.StaticInterceptor" debug="0" suppress="false" />\
        <RequestInterceptor className="org.apache.tomcat.session.StandardSessionInterceptor" />\
        <RequestInterceptor className="org.apache.tomcat.request.AccessInterceptor" debug="0" />\
        <RequestInterceptor className="org.apache.tomcat.request.SimpleRealm" debug="0" />\
        <ContextInterceptor className="org.apache.tomcat.context.LoadOnStartupInterceptor" />\
        <Connector className="org.apache.tomcat.service.PoolTcpConnector">\
            <Parameter name="handler" value="org.apache.tomcat.service.http.HttpConnectionHandler"/>\
            <Parameter name="port" value="8080"/>\
        </Connector>\
        <Connector className="org.apache.tomcat.service.PoolTcpConnector">\
            <Parameter name="handler" value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>\
            <Parameter name="port" value="8007"/>\
        </Connector>\
        <Context path="/examples" docBase="webapps/examples" crossContext="false" debug="0" reloadable="true" > \
        </Context>\
        <Context path="/admin" docBase="webapps/admin" crossContext="true" debug="0" reloadable="true" trusted="false" > \
        </Context>\
    </ContextManager>\
</Server>

tomcat.context.50=\n\
<Context path="/DBTest" docBase="DBTest"\n\
        reloadable="true" crossContext="true">\n\
\n\
  <Logger className="org.apache.catalina.logger.FileLogger"\n\
             prefix="localhost_DBTest_log." suffix=".txt"\n\
             timestamp="true"/>\n\
\n\
  <Resource name="jdbc/TestDB"\n\
               auth="Container"\n\
               type="javax.sql.DataSource"/>\n\
\n\
  <ResourceParams name="jdbc/TestDB">\n\
    <parameter>\n\
      <name>factory</name>\n\
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>\n\
    </parameter>\n\
\n\
    <!-- Maximum number of dB connections in pool. Make sure you\n\
         configure your mysqld max_connections large enough to handle\n\
         all of your db connections. Set to 0 for no limit.\n\
         -->\n\
    <parameter>\n\
      <name>maxActive</name>\n\
      <value>100</value>\n\
    </parameter>\n\
\n\
    <!-- Maximum number of idle dB connections to retain in pool.\n\
         Set to -1 for no limit.  See also the DBCP documentation on this\n\
         and the minEvictableIdleTimeMillis configuration parameter.\n\
         -->\n\
    <parameter>\n\
      <name>maxIdle</name>\n\
      <value>30</value>\n\
    </parameter>\n\
\n\
    <!-- Maximum time to wait for a dB connection to become available\n\
         in ms, in this example 10 seconds. An Exception is thrown if\n\
         this timeout is exceeded.  Set to -1 to wait indefinitely.\n\
         -->\n\
    <parameter>\n\
      <name>maxWait</name>\n\
      <value>10000</value>\n\
    </parameter>\n\
\n\
    <!-- MySQL dB username and password for dB connections  -->\n\
    <parameter>\n\
     <name>username</name>\n\
     <value>javauser</value>\n\
    </parameter>\n\
    <parameter>\n\
     <name>password</name>\n\
     <value>javadude</value>\n\
    </parameter>\n\
\n\
    <!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next\n\
         if you want to use this driver - we recommend using Connector/J though\n\
    <parameter>\n\
       <name>driverClassName</name>\n\
       <value>org.gjt.mm.mysql.Driver</value>\n\
    </parameter>\n\
     -->\n\
    \n\
    <!-- Class name for the official MySQL Connector/J driver -->\n\
    <parameter>\n\
       <name>driverClassName</name>\n\
       <value>com.mysql.jdbc.Driver</value>\n\
    </parameter>\n\
    \n\
    <!-- The JDBC connection url for connecting to your MySQL dB.\n\
         The autoReconnect=true argument to the url makes sure that the\n\
         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the\n\
         connection.  mysqld by default closes idle connections after 8 hours.\n\
         -->\n\
    <parameter>\n\
      <name>url</name>\n\
      <value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>\n\
    </parameter>\n\
  </ResourceParams>\n\
\n\
  <Environment name="maxExemptions" value="10"\n\
         type="java.lang.Integer" override="false"/>\n\
\n\
  <Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99"\n\
   dataSourceName="jdbc/authority"\n\
   userTable="users" userNameCol="user_name" userCredCol="user_pass"\n\
   userRoleTable="user_roles" roleNameCol="role_name"/>\n\
</Context>
