<!-- サンプル・サーバ構成ファイル -->
<!-- 構成要素は、互いに親子供関係の状態で入れ子になっています -->

<!-- "Server" は1つ以上の"Service"要素を含み、完全なJVM環境に相当する
     単一要素です。サーバは 示されたポートにより、shutdown コマンド
     を待ちます。

     注: "Server" はそれ自体 "Container" ではありません。したがって、
     このレベルに"Valves"あるいは"Loggers"のようなサブコンポーネントを
     定義してはなりません。
 -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">


  <!-- JMX MBeans サポートを有効にするにはこれらの要素のコメントをはずしてください -->
  <!-- You may also configure custom components (e.g. Valves/Realms) by 
       including your own mbean-descriptor file(s), and setting the 
       "descriptors" attribute to point to a ';' seperated list of paths
       (in the ClassLoader sense) of files to add to the default list.
       e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"
  -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>

  <!-- Global JNDI resources -->
  <GlobalNamingResources>

    <!-- デモンストレーション目的のテスト項目 -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <!-- UserDatabaseRealmによってユーザ認証に利用できる、
         編集可能なユーザ・データベース -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>

  </GlobalNamingResources>

  <!-- "Service" は単一の"Container"を共有する1つ以上の"Connectors"のコレク
       ションです。(その結果、コンテナー内にwebアプリケーションが見えます)
       通常は、そのコンテナーは"Engine"です。しかし、これは要求されません。

       注: "Service" はそれ自体 "Container" ではありません。したがって、
       このレベルに "Valves" あるいは "Loggers" のようなサブコンポーネントを
       定義してはなりません。
   -->

  <!-- Tomcat スタンドアロン・サービスの定義 -->
  <Service name="Tomcat-Standalone">

    <!-- "Connector" は、リクエストを受け取り、レスポンスを返す終了点を表わ
         します。各コネクター(Connector)は、処理用の関連する "Container"
         (通常 エンジン)上へのリクエストを渡します。

         初期設定では port 8080 の非SSL HTTP/1.1 コネクタが有効になっています。
         次の操作をして、2番目のConnector項目のコメントをはずすことで、
         port 8443のSSL HTTP/1.1コネクタを有効にすることもできます。
         SSLのサポートには次のステップが必要です。(詳細は Tomcat 4.0 
         ドキュメンテーションの SSL Config HOWTO を参照してください):
         * JSSE 1.0.2以降をダウンロード、インストールし、JAR ファイルを
           "$JAVA_HOME/jre/lib/ext" 内に置きます。
         * 実行する:
             %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
             $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix)
           with a password value of "changeit" for both the certificate and
           the keystore itself.

         初期状態では、web アプリケーションが request.getRemoteHost() をcall
         するためにDNS検索が有効になっています。これは、パフォーマンスに悪い
         影響を与えるので、"enableLookups"の項目を"false"にすることで、無効に
         することもできます。 DNS検索を無効にしたとき、request.getRemoteHost()
         は、リモート・クライアントのIPアドレスを文字列にしたものを返します。
    -->

    <!-- 非SSL Coyote HTTP/1.1 コネクタ(port 8080) の定義 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8080" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="20000"
               useURIValidationHack="false" disableUploadTimeout="true" />
    <!-- メモ : コネクション・タイムアウトを無効にするには connectionTimeout
     の値を -1 に設定します。 -->

    <!-- SSL Coyote HTTP/1.1 コネクタ(port 8443)の定義 -->
    <!--
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8443" minProcessors="5" maxProcessors="75"
               enableLookups="true"
	       acceptCount="100" debug="0" scheme="https" secure="true"
               useURIValidationHack="false" disableUploadTimeout="true">
      <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
               clientAuth="false" protocol="TLS" />
    </Connector>
    -->

    <!-- Coyote/JK2 AJP 1.3 コネクタ(port 8009)の定義 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="0"
               useURIValidationHack="false"
               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

    <!-- AJP 1.3 コネクタ(port 8009)の定義 -->
    <!--
    <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
               port="8009" minProcessors="5" maxProcessors="75"
               acceptCount="10" debug="0"/>
    -->

    <!-- Proxied HTTP/1.1 コネクタ(port 8082)の定義 -->
    <!-- これを利用するための情報は、proxy ドキュメンテーションを参照してく
         ださい。 -->
    <!--
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8082" minProcessors="5" maxProcessors="75"
               enableLookups="true"
               acceptCount="100" debug="0" connectionTimeout="20000"
               proxyPort="80" useURIValidationHack="false"
               disableUploadTimeout="true" />
    -->

    <!-- 古い非SSL HTTP/1.1 Test コンテナ (port 8083)の定義 -->
    <!--
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
               port="8083" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" />
    -->

    <!-- 非SSL HTTP/1.0 Test Connector(port 8084)の定義 -->
    <!--
    <Connector className="org.apache.catalina.connector.http10.HttpConnector"
               port="8084" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" />
    -->

    <!-- エンジンは、 全てのリクエストを処理する(カタリーナ内の)エントリー・
         ポイントを表します。 Tomcat stand alone エンジンの実装は、リクエスト
         (request)に含まれる HTTPヘッダを解析し、適したホスト(バーチャルホスト)
         へ処理を渡します。 -->

    <!-- JK/JK2でload-balancingをサポートするためにjvmRouteをセットすることが
         できます。例:
    <Engine name="Standalone" defaultHost="localhost" debug="0" jmvRoute="jvm1">         
    --> 
         
    <!-- コンテナ階層の最上位コンテナの定義 -->
    <Engine name="Standalone" defaultHost="localhost" debug="0">

      <!-- request dumper の値は、このTomcatのインスタンスが受信した全てのリ
           クエスト・ヘッダとCookie、送信したレスポンス・ヘッダやCookieのデ
           バッグのための使いやすい情報をダンプします。特定のバーチャ
           ルホストまたはアプリケーションでのみ必要であれば、このエレメント
           (要素)を対応する <Host> または <Context> エントリーの中に記述して
           ください。

           同様の構造は、サンプルアプリケーション中の"RequestDumperFilter" 
           フィルター をチェックアウトすることで、全ての Servlet 2.3コンテナ
           で利用できます。 (このフィルターのソースコードは
           "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters" にありま
           す).

           Request dumping は、初期設定では無効にされています。有効にするには
           次のエレメントのコメントを外してください。 -->
      <!--
      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
      -->

      <!-- Global logger unless overridden at lower levels -->
      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/>

      <!-- Because this Realm is here, an instance will be shared globally -->

      <!-- This Realm uses the UserDatabase configured in the global JNDI
           resources under the key "UserDatabase".  Any edits
           that are performed against this UserDatabase are immediately
           available for use by the Realm.  -->
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 debug="0" resourceName="UserDatabase"/>

      <!-- Comment out the old realm but leave here for now in case we
           need to go back quickly -->
      <!--
      <Realm className="org.apache.catalina.realm.MemoryRealm" />
      -->

      <!-- Replace the above Realm with one of the following to get a Realm
           stored in a database and accessed via JDBC -->

      <!--
      <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
             driverName="org.gjt.mm.mysql.Driver"
          connectionURL="jdbc:mysql://localhost/authority"
         connectionName="test" connectionPassword="test"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
      -->

      <!--
      <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
             driverName="oracle.jdbc.driver.OracleDriver"
          connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
         connectionName="scott" connectionPassword="tiger"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
      -->

      <!--
      <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
             driverName="sun.jdbc.odbc.JdbcOdbcDriver"
          connectionURL="jdbc:odbc:CATALINA"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
      -->

      <!-- デフォルト・バーチャルホストの定義 -->
      <Host name="localhost" debug="0" appBase="webapps" 
       unpackWARs="true" autoDeploy="true">

        <!-- Normally, users must authenticate themselves to each web app
             individually.  Uncomment the following entry if you would like
             a user to be authenticated the first time they encounter a
             resource protected by a security constraint, and then have that
             user identity maintained across *all* web applications contained
             in this virtual host. -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn"
                   debug="0"/>
        -->

        <!-- Access log processes all requests for this virtual host.  By
             default, log files are created in the "logs" directory relative to
             $CATALINA_HOME.  If you wish, you can specify a different
             directory with the "directory" attribute.  Specify either a relative
             (to $CATALINA_HOME) or absolute path to the desired directory.
        -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="localhost_access_log." suffix=".txt"
                 pattern="common" resolveHosts="false"/>
        -->

        <!-- Logger shared by all Contexts related to this virtual host.  By
             default (when using FileLogger), log files are created in the "logs"
             directory relative to $CATALINA_HOME.  If you wish, you can specify
             a different directory with the "directory" attribute.  Specify either a
             relative (to $CATALINA_HOME) or absolute path to the desired
             directory.-->
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="localhost_log." suffix=".txt"
	        timestamp="true"/>

        <!-- 各Webアプリケーションのプロパティの定義。  This is only needed
             if you want to set non-default properties, or have web application
             document roots in places other than the virtual host's appBase
             directory.  -->

        <!-- Tomcat Root コンテキスト -->
        <!--
          <Context path="" docBase="ROOT" debug="0"/>
        -->

        <!-- Tomcat サンプル・コンテキスト -->
        <Context path="/examples" docBase="examples" debug="0"
                 reloadable="true" crossContext="true">
          <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_examples_log." suffix=".txt"
        	  timestamp="true"/>
          <Ejb   name="ejb/EmplRecord" type="Entity"
                 home="com.wombat.empl.EmployeeRecordHome"
               remote="com.wombat.empl.EmployeeRecord"/>

          <!-- もし、サンプル・アプリでユーザーデータベースを編集したい
               なら、次のエントリーのコメントを外せます。
               もちろん、アプリケーションのセキュリティが必要でしょうから、
               デフォルトではできません!
               次のようにしてデータベース・オブジェクトにアクセスできてし
               まうかもしれません:

               Context initCtx = new InitialContext();
               Context envCtx = (Context) initCtx.lookup("java:comp/env");
               UserDatabase database =
                    (UserDatabase) envCtx.lookup("userDatabase");
          -->
<!--
          <ResourceLink name="userDatabase" global="UserDatabase"
                        type="org.apache.catalina.UserDatabase"/>
-->


          <!-- PersistentManager: Uncomment the section below to test Persistent 
		       Sessions.
                         
               saveOnRestart: If true, all active sessions will be saved
                 to the Store when Catalina is shutdown, regardless of
                 other settings. All Sessions found in the Store will be 
                 loaded on startup. Sessions past their expiration are
                 ignored in both cases.
               maxActiveSessions: If 0 or greater, having too many active 
                 sessions will result in some being swapped out. minIdleSwap
                 limits this. -1 or 0 means unlimited sessions are allowed.
                 If it is not possible to swap sessions new sessions will
                 be rejected.
                 This avoids thrashing when the site is highly active.
               minIdleSwap: Sessions must be idle for at least this long
                 (in seconds) before they will be swapped out due to 
                 activity.
                 0 means sessions will almost always be swapped out after
                 use - this will be noticeably slow for your users.
               maxIdleSwap: Sessions will be swapped out if idle for this
                 long (in seconds). If minIdleSwap is higher, then it will
                 override this. This isn't exact: it is checked periodically.
                 -1 means sessions won't be swapped out for this reason,
                 although they may be swapped out for maxActiveSessions.
                 If set to >= 0, guarantees that all sessions found in the
                 Store will be loaded on startup.
               maxIdleBackup: Sessions will be backed up (saved to the Store,
                 but left in active memory) if idle for this long (in seconds), 
                 and all sessions found in the Store will be loaded on startup.
                 If set to -1 sessions will not be backed up, 0 means they
                 should be backed up shortly after being used.

               To clear sessions from the Store, set maxActiveSessions, maxIdleSwap,
               and minIdleBackup all to -1, saveOnRestart to false, then restart 
               Catalina.
          -->
		  <!--
          <Manager className="org.apache.catalina.session.PersistentManager"
              debug="0"
              saveOnRestart="true"
              maxActiveSessions="-1"
              minIdleSwap="-1"
              maxIdleSwap="-1"
              maxIdleBackup="-1">
                <Store className="org.apache.catalina.session.FileStore"/>
          </Manager>
		  -->
          <Environment name="maxExemptions" type="java.lang.Integer"
                      value="15"/>
          <Parameter name="context.param.name" value="context.param.value"
                     override="false"/>
          <Resource name="jdbc/EmployeeAppDb" auth="SERVLET"
                    type="javax.sql.DataSource"/>
          <ResourceParams name="jdbc/EmployeeAppDb">
            <parameter><name>username</name><value>sa</value></parameter>
            <parameter><name>password</name><value></value></parameter>
            <parameter><name>driverClassName</name>
              <value>org.hsql.jdbcDriver</value></parameter>
            <parameter><name>url</name>
              <value>jdbc:HypersonicSQL:database</value></parameter>
          </ResourceParams>
          <Resource name="mail/Session" auth="Container"
                    type="javax.mail.Session"/>
          <ResourceParams name="mail/Session">
            <parameter>
              <name>mail.smtp.host</name>
              <value>localhost</value>
            </parameter>
          </ResourceParams>
          <ResourceLink name="linkToGlobalResource" 
                    global="simpleValue"
                    type="java.lang.Integer"/>
        </Context>

      </Host>

    </Engine>

  </Service>

  <!-- The MOD_WEBAPPコネクタは、Apache 1.3 とTomcat 4.0(Servletコンテナ)を
       接続するために使われます。 README.txt ファイルでWebAppモジュール・ディ
       ストリビューションのビルド方法を読んでください。
       (または、"jakarta-tomcat-connectors/webapp" CVS レポジトリをチェックア
       ウトしてください)

       Apache側の設定では "httpd.conf で定義されている "ServerName" と "Port"
       ディレクティブが必要です。そして、次のような行を "httpd.conf"ファイル
       の後ろに付け加えます。

         LoadModule webapp_module libexec/mod_webapp.so
         WebAppConnection warpConnection warp localhost:8008
         WebAppDeploy examples warpConnection /examples/

       次に(必要なら Tomcat を再起動したあとに) Apache を再起動すると、
       接続が確立し、"WebAppDeploy" ディレクティブで指定したアプリケーショ
       ンが Apache をとおしてアクセスできます。
  -->

  <!-- Apache-Connector サービスの定義 -->
<!--
  <Service name="Tomcat-Apache">

    <Connector className="org.apache.catalina.connector.warp.WarpConnector"
     port="8008" minProcessors="5" maxProcessors="75"
     enableLookups="true" appBase="webapps"
     acceptCount="10" debug="0"/>

    <Engine className="org.apache.catalina.connector.warp.WarpEngine"
     name="Apache" debug="0">

      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="apache_log." suffix=".txt"
              timestamp="true"/>

      <Realm className="org.apache.catalina.realm.MemoryRealm" />

    </Engine>

  </Service>
-->

</Server>
