Apache Tomcat Web サーバを使用する場合の Java のデータ ソース構成

データ ソースは、データベースへの名前付き接続です。Web アプリケーション サーバ内にデータ ソースを指定して、フィーチャ サービスを ArcGIS Spatial Data Server for the Java Platform に公開する必要があります。通常、データ ソース オブジェクトは、JNDI(Java Naming and Directory Interface)API に基づいてネーミング サービスで設定されます。

Tomcat をインストールして設定した後、次の手順を実行して、Tomcat を ArcGIS Spatial Data Server 用に準備します。

Tomcat ホーム ディレクトリへの JDBC ドライバの配置

DBMSの JDBC ドライバを $CATALINA_HOME の lib ディレクトリに置く必要があります。

Tomcat の context.xml ファイルの変更

Apache Tomcat Web サーバを使用する場合は、デフォルトの Web 構成ファイル context.xml にデータ ソースを指定する必要があります。context.xml を編集するには、次の手順を実行します。

  1. Tomcat インストール ディレクトリ内の conf ディレクトリに移動します。
  2. context.xml ファイルのバックアップ コピーを作成します。
  3. テキスト エディタで context.xml ファイルを開きます。
  4. <Resource name> エレメントの情報を自分のサイト用に変更します(コード例はこのトピック内に記述されています)。<Resource name> エレメントは、<Context> エレメント内にネストされています。

    <Context> エレメント内には他のエレメントも存在することがありますが、<Resource name> エレメントは <Context> エレメントの 1 レベル下で、他のエレメント内にはネストされていないことを確認してください。

  5. context.xml ファイルを保存して閉じます。
  6. Tomcat サーバを再起動します。

context.xml ファイルにデータ ソースを追加しなかった場合、または <Resource name> エレメント属性の先頭に jdbc/ を付けなかった場合、次のエラー メッセージが表示されます。

Name jdbc is not bound in this Context

次の例は、Tomcat の context.xml ファイルでのデータ ソース設定を、サポートされているデータベースごとに示しています。データベースごとに 2 種類のコネクション プール(DBCP(データベース コネクション プール)および JDBC コネクション プール)の例があります。Apache では、JDBC コネクション プールを推奨しています。<Resource name> エレメントで使用できる属性の詳細と説明については、Apache Tomcat のマニュアルをご参照ください。

ヒントヒント:

複数のデータ ソースを構成する場合は、データ ソースのプロパティを反映したデータ ソース名を使用します。たとえば、データソース名にサーバ名、データベース名、およびユーザ名などを含めます。これは、Web アプリケーション サーバ ファイルまたはコンソールでプロパティを調べることなくデータ ソースを識別するのに役立ちます。

PostgreSQL

次に、DBCP を使用する PostgreSQL 向けの <Resource> エレメントの例を示します。X で示された値は、指定するサイト固有情報を表します。

<Context>
    <Resource name="jdbc/X" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://X:X/X"
              username="X" 
              password="X" 
              maxActive="X" 
              maxIdle="X" 
              maxWait="X"/>
</Context>

この例では、リソース名が jdbc/pgservername、データ ソースがサーバ pgservername 上のポート 5432 でリスニングする PostgreSQL データベース(pgdbname)です。

<Context>
    <Resource name="jdbc/pgservername_pgdbname_pgusername" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://pgservername:5432/pgdbname"
              username="pgusername" 
              password="pgpassword246" 
              maxActive="20" 
              maxIdle="10" 
              maxWait="-1"/>
</Context>

次に、同じ PostgreSQL データベースが JDBC コネクション プールを使用する例を示します。

<Context>
     <Resource name="jdbc/pgservername_pgdbname_pgusername" 
               factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
               driverClassName="org.postgresql.Driver"
               url="jdbc:postgresql://pgservername:5432/pgdbname" 
               username="pgusername"
               password="pgpassword246"
               initialSize="20"
               maxActive="80" 
               maxIdle = "30" 
               minIdle="20"
               timeBetweenEvictionRunsMillis="30000"
               minEvictableIdleTimeMillis="60000"
               testOnBorrow="true"
               validationQuery="SELECT 1" 
               validationInterval="30000" 
               removeAbandoned="true"
               removeAbandonedTimeout="60" 
               logAbandoned="true" 
               abandonWhenPercentageFull="60"
               jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
</Context>

Oracle

次に、Oracle 向けの <Resource> エレメントの例を示します。X で示された値は、指定するサイト固有情報を表します。

<Context>
    <Resource name="jdbc/X" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@X:X:X"
              username="X" 
              password="X" 
              maxActive="X" 
              maxIdle="X"
              maxWait="X"/>
</Context>

この例では、リソース名が jdbc/oraservername、データ ソースが、データベース ポート 1521 でリスニングするサーバ oraservername 上の Oracle データベースです。Oracle SID は osid です。Oracle SID は、データ ソースを登録する前に設定する必要があります。

<Context>
    <Resource name="jdbc/oraservername_osid_orausername" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@oraservername:1521:osid"
              username="orausername" 
              password="0rapassword123" 
              maxActive="20" 
              maxIdle="10"
              maxWait="-1"/>
</Context>

次に、同じ Oracle データベースが JDBC コネクション プールを使用する例を示します。

<Context>
    <Resource name="jdbc/oraservername_osid_orausername" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@oraservername:1521:osid" 
              username="orausername"
              password="0rapassword123"
              initialSize="20"
              maxActive="80" 
              maxIdle = "30" 
              minIdle="20"
              timeBetweenEvictionRunsMillis="30000"
              minEvictableIdleTimeMillis="60000"
              testOnBorrow="true"
              validationQuery="SELECT 1 FROM DUAL" 
              validationInterval="30000" 
              removeAbandoned="true"
              removeAbandonedTimeout="60" 
              logAbandoned="true" 
              abandonWhenPercentageFull="60"
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
</Context>

DB2

次に、DB2 向けの <Resource> エレメントの例を示します。X で示された値は、指定するサイト固有情報を表します。

<Context>
    <Resource name="jdbc/X" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="com.ibm.db2.jcc.DB2Driver"
              url="jdbc:db2://X:X/X"
              username="X" 
              password="X" 
              maxActive="X" 
              maxIdle="X"
              maxWait="X"/>
</Context>

この例では、リソース名が jdbc/db2servername、DB2 サーバが db2servername、データベース ポートが 60000、カタログ データベースが db2dba です。

<Context>
    <Resource name="jdbc/db2servername_db2dba_db2username" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="com.ibm.db2.jcc.DB2Driver"
              url="jdbc:db2://db2servername:60000/db2dba"
              username="db2username" 
              password="db2password975" 
              maxActive="20" 
              maxIdle="10"
              maxWait="-1"/>
</Context>

次に、同じ DB2 データベースが JDBC コネクション プールを使用する例を示します。

<Context>
    <Resource name="jdbc/db2servername_db2dba_db2username" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
              driverClassName="com.ibm.db2.jcc.DB2Driver"
              url="jdbc:db2://db2servername:60000/db2dba" 
              username="db2username"
              password="db2password975"
              initialSize="20"
              maxActive="80" 
              maxIdle = "30" 
              minIdle="20"
              timeBetweenEvictionRunsMillis="30000"
              minEvictableIdleTimeMillis="60000"
              testOnBorrow="true"
              validationQuery="VALUES 1" 
              validationInterval="30000" 
              removeAbandoned="true"
              removeAbandonedTimeout="60" 
              logAbandoned="true" 
              abandonWhenPercentageFull="60"
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
</Context>

関連トピック

9/15/2013