intra-mart Accel Platform 設定ファイルリファレンス 第33版 2023-10-01

resin-web 設定

概要

Resin に関する設定です。

モジュール Resin
フォーマットファイル(xsd) なし
設定場所 WEB-INF/resin-web.xml

<web-app xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin">
  <log-handler name="" class="jp.co.intra_mart.common.platform.log.handler.JDKLoggingOverIntramartLoggerHandler"/>
  <!-- im_service(im_asynchronous) -->
  <resource jndi-name="jca/work" type="jp.co.intra_mart.system.asynchronous.impl.executor.work.resin.ResinResourceAdapter" />
  <jsp>
    <recycle-tags>false</recycle-tags>
  </jsp>
  <database jndi-name="jdbc/default">
    <driver>
      <type>org.postgresql.ds.PGConnectionPoolDataSource</type>
      <url>jdbc:postgresql://localhost:5432/iap_db</url>
      <user>imart</user>
      <password>imart</password>
      <preparedStatementCacheQueries>0</preparedStatementCacheQueries>
    </driver>
    <max-connections>20</max-connections>
    <prepared-statement-cache-size>0</prepared-statement-cache-size>
  </database>
  <session-config>
    <reuse-session-id>false</reuse-session-id>
    <session-timeout>30</session-timeout>
  </session-config>
</web-app>

リファレンス

ログハンドラ設定

タグ名 log-handler
ログハンドラに関する設定です。

【設定項目】

<web-app>
  <log-handler name="" class="jp.co.intra_mart.common.platform.log.handler.JDKLoggingOverIntramartLoggerHandler"/>
</web-app>

必須項目 ×
複数設定
設定値・設定する内容 ログハンドラに関する設定をします。
単位・型 なし
省略時のデフォルト値 なし
親タグ web-app

【属性】

属性名 説明 必須 デフォルト値
name ログハンドラの名前を指定します。 なし
class ログハンドラのクラス名を指定します。 なし

注意

この設定は変更しないでください。

リソース設定

タグ名 resource
リソースに関する設定です。

【設定項目】

<web-app>
  <resource jndi-name="jca/work" type="jp.co.intra_mart.system.asynchronous.impl.executor.work.resin.ResinResourceAdapter" />
</web-app>

必須項目 ×
複数設定
設定値・設定する内容 リソースに関する設定をします。
単位・型 なし
省略時のデフォルト値 なし
親タグ web-app

【属性】

属性名 説明 必須 デフォルト値
jndi-name リソースの JNDI 名を指定します。 なし
type リソースのタイプを指定します。 なし

注意

この設定は変更しないでください。

JSP 設定

タグ名 jsp
JSP に関する設定です。

【設定項目】

<web-app>
  <jsp>
    ...
  </jsp>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 JSP の設定をします。
単位・型 なし
省略時のデフォルト値 なし
親タグ web-app

タグ再利用設定

タグ名 recycle-tags
JSP に関する設定です。
タグクラスのインスタンスを再利用します。

【設定項目】

<web-app>
  <jsp>
    <recycle-tags>false</recycle-tags>
  </jsp>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容
true タグのインスタンスを再利用します。
false タグのインスタンスを再利用しません。
単位・型 真偽値 (true/false)
省略時のデフォルト値 なし
親タグ jsp

注意

この設定は変更しないでください。

データベース設定

タグ名 database
データベース接続に関する設定です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
  </database>
</web-app>

必須項目 ×
複数設定
設定値・設定する内容 データベース接続を行うための設定をします。
単位・型 なし
省略時のデフォルト値 なし
親タグ web-app

【属性】

属性名 説明 必須 デフォルト値
jndi-name このデータベース設定の JNDI 名を設定します。 なし

コネクション取得待ち時間設定

タグ名 connection-wait-time
データベースコネクションの取得待ち時間です。コネクション取得時にこの時間を超えて利用可能なコネクションを取得できない場合はオーバーフローコネクションとして取得を試行します。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <connection-wait-time>30s</connection-wait-time>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 コネクションの滞留待ち時間を設定します。
単位・型

文字列(数値 + 時間単位)

時間単位に利用可能な文字は以下の通りです。

ms(ミリ秒)、s(秒)、m(分)、h(時)、D(日)、W(週)、M(月)、Y(年)
省略時のデフォルト値 30s(30秒)
親タグ database

ドライバ設定

タグ名 driver
JDBC ドライバに関する設定です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      ...
    </driver>
  </database>
</web-app>

必須項目
複数設定 ×
設定値・設定する内容 JDBC ドライバの設定をします。
単位・型 なし
省略時のデフォルト値 なし
親タグ database

ドライバタイプ設定

タグ名 type
JDBC ドライバのタイプに関する設定です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      <type>org.postgresql.ds.PGConnectionPoolDataSource</type>
      ...
    </driver>
  </database>
</web-app>

必須項目
複数設定 ×
設定値・設定する内容 JDBC ドライバのタイプの設定をします。
単位・型 文字列
省略時のデフォルト値 なし
親タグ driver

コラム

弊社では、Resin 4.0.56 以降をご利用の場合は ConnectionPoolDataSource の利用を推奨します。
Resin 4.0.55 以前では、java.sql.Driver をご利用ください。
Resin 4.0.56 以降でも java.sql.Driver を利用することは可能です。

ドライバ URL 設定

タグ名 url
JDBC ドライバの URL に関する設定です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      ...
      <url>jdbc:postgresql://localhost:5432/iap_db</url>
      ...
    </driver>
  </database>
</web-app>

必須項目
複数設定 ×
設定値・設定する内容 JDBC ドライバの URL の設定をします。
単位・型 文字列
省略時のデフォルト値 なし
親タグ driver

ユーザ設定

タグ名 user
接続するデータベースのユーザに関する設定です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      ...
      <user>imart</user>
      ...
    </driver>
  </database>
</web-app>

必須項目
複数設定 ×
設定値・設定する内容 データベースのユーザの設定をします。
単位・型 文字列
省略時のデフォルト値 なし
親タグ driver

パスワード設定

タグ名 password
接続するデータベースのユーザのパスワードに関する設定です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      ...
      <password>imart</password>
      ...
    </driver>
  </database>
</web-app>

必須項目
複数設定 ×
設定値・設定する内容 データベースのユーザのパスワードの設定をします。
単位・型 文字列
省略時のデフォルト値 なし
親タグ driver

暗号化パスワード設定

タグ名 resin:Password
接続するデータベースのユーザのパスワードに関する設定です。
暗号化されたパスワードを使用する場合に使用します。

このタグを使用する場合は、予めパスワードを暗号化してください。パスワードの暗号化はコマンドラインから resin.exe を実行します。
C:\resin-pro-4.x.xx>resin password-encrypt <パスワード>
password: {RESIN}WFpCuWyYSFzuOK1Gda0TxQ==
Linux 環境の場合は resinctl コマンドを使用してください。
resinctl コマンドを使用するには Resin がコンパイル、インストール済みである必要があります。
[resin-pro-4.x.xx]# bin/resinctl password-encrypt <パスワード>
password: {RESIN}WFpCuWyYSFzuOK1Gda0TxQ==
このタグを使用するには設定ファイルに以下のネームスペースが記述されている必要があります。
xmlns:resin="urn:java:com.caucho.resin"

【設定項目】

<web-app xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin">
  ...
  <database jndi-name="jdbc/default">
    <driver>
      ...
      <password>
        <resin:Password value="{RESIN}WFpCuWyYSFzuOK1Gda0TxQ=="/>
      </password>
      ...
    </driver>
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容
なし
単位・型 なし
省略時のデフォルト値 なし
親タグ password

【属性】

属性名 説明 必須 デフォルト値
value 暗号化されたパスワードを設定します。 なし

接続タイムアウト時間設定

タグ名 max-active-time
コネクションを取得してからの利用可能時間を設定します。この時間を超えたコネクションはクローズされます。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <max-active-time>6h</max-active-time>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 接続タイムアウト時間設定
単位・型

文字列(数値 + 時間単位)

時間単位に利用可能な文字は以下の通りです。

ms(ミリ秒)、s(秒)、m(分)、h(時)、D(日)、W(週)、M(月)、Y(年)
省略時のデフォルト値 6h(6時間)
親タグ database

最大コネクション数設定

タグ名 max-connections
データベースプールで利用可能なコネクションの最大数を設定します。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <max-connections>20</max-connections>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 コネクションの最大数
単位・型 数値
省略時のデフォルト値 1024
親タグ database

最大アイドル時間設定

タグ名 max-idle-time
データベースプールでアイドル状態のコネクションを保持する最大時間を設定します。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <max-idle-time>60s</max-idle-time>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 最大アイドル時間
単位・型

文字列(数値 + 時間単位)

時間単位に利用可能な文字は以下の通りです。

ms(ミリ秒)、s(秒)、m(分)、h(時)、D(日)、W(週)、M(月)、Y(年)
省略時のデフォルト値 60s
親タグ database

最大オーバーフローコネクション数設定

タグ名 max-overflow-connections
コネクション取得待ち時間設定 の設定時間を超越してコネクションをデータベースプールから取得できなかった場合に利用可能となるコネクションの数です。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <max-overflow-connections>1024</max-overflow-connections>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 オーバーフローコネクションの最大数
単位・型 数値
省略時のデフォルト値 1024
親タグ database

最大プール内生存時間設定

タグ名 max-pool-time
データベースコネクションプールで扱うコネクションの最大生存時間を設定します。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <max-pool-time>24h</max-pool-time>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 最大プール内生存時間
単位・型

文字列(数値 + 時間単位)

時間単位に利用可能な文字は以下の通りです。

ms(ミリ秒)、s(秒)、m(分)、h(時)、D(日)、W(週)、M(月)、Y(年)
省略時のデフォルト値 24h
親タグ database

コネクション検証設定

タグ名 ping
データベースコネクションプールで扱うコネクションの検証を行うかどうかを設定します。
SQL を発行する前に、 コネクション検証用テーブル設定 または コネクション検証用クエリ設定 で設定されたクエリを用いてそのコネクションが有効であるかどうかを検証します。
検証対象コネクションの経過時間設定 の時間を経過したアイドル状態のコネクションが検証の対象です。
検証の結果、無効であった場合はそのコネクションを削除し、コネクションプールから次のコネクションを取得して再度検証を行います。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <ping>false</ping>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 データベースコネクションプールで扱うコネクションの検証を行うかどうかを設定します。
単位・型 真偽値(true/false)
省略時のデフォルト値 false
親タグ database

注意

検証には以下のいずれかの設定が必要です。 true を設定した場合であっても、以下のどちらの設定もない場合は検証は行われません。

検証対象コネクションの経過時間設定

タグ名 ping-interval
データベースコネクションプールで扱うコネクションの検証を行う際に、検証対象となるコネクションの経過時間を設定します。
コネクション検証設定 が true の場合、ここで設定した時間が経過したアイドル状態のコネクションを利用する際に検証が行われます。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <ping-interval>1s</ping-interval>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容
検証対象となるコネクションの経過時間を設定します。
0 を設定した場合、アイドル状態のコネクション利用時に毎回検証が行われます。
単位・型

文字列(数値 + 時間単位)

時間単位に利用可能な文字は以下の通りです。

ms(ミリ秒)、s(秒)、m(分)、h(時)、D(日)、W(週)、M(月)、Y(年)
省略時のデフォルト値 1s
親タグ database

コネクション検証用テーブル設定

タグ名 ping-table
データベースコネクションプールで扱うコネクションの検証を行う際に、検証用に発行するクエリのテーブル名を設定します。
コネクション検証設定 が true の場合、ここで設定したテーブル名を利用して以下のクエリが発行されます。
select 1 from テーブル名 where 1=0

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <ping-table>im_schema_update</ping-table>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 コネクションの検証時に発行されるクエリで利用するテーブル名を設定します。
単位・型 文字列
省略時のデフォルト値 なし
親タグ database

注意

ここで設定したテーブルが存在しない場合、WARN ログが出力されます。
テナント環境セットアップ実施前などで、テーブルが作成されていない状態の場合は注意してください。
テーブル作成後はこの事象が解消します。

コネクション検証用クエリ設定

タグ名 ping-query
データベースコネクションプールで扱うコネクションの検証を行う際に、検証用に発行するクエリを設定します。
コネクション検証設定 が true の場合、ここで設定したクエリが発行されます。

【設定項目】

<web-app>
  <database jndi-name="jdbc/default">
    ...
    <ping-query>select 1 where 1=0</ping-query>
    ...
  </database>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 コネクションの検証時に発行されるクエリを設定します。
単位・型 文字列
省略時のデフォルト値 なし
親タグ database

コラム

コネクション検証用テーブル設定 も同時に設定した場合、 コネクション検証用テーブル設定 を利用したクエリを用いて検証が行われます。

プリペアドステートメントキャッシュ設定

タグ名
prepared-statement-cache-size
Postgresql Driver, Version 9.4-1202 以降の場合、または Postgresql Driver で ConnectionPoolDataSource を利用する場合は JDBC ドライバの初期化パラメータに設定
PreparedStatement を使用して SQL を発行すると、作成されたステートメントはメモリ上にキャッシュされます。
次回、同じ SQL が発行された場合、キャッシュされたステートメントが再利用され、レスポンスの向上を図ることができます。
prepared-statement-cache-size は、キャッシュを行うステートメントの個数を設定します。
intra-mart Accel Platform では、機能により SQL の発行や内容が回数が異なります。
その為、8, 16 程度の個数が設定されている場合キャッシュにヒットせずこの仕組みが有効に機能しない可能性があります。
プリペアドステートメントのキャッシュが適切にヒットするよう設定する場合、128 等ある程度の個数をキャッシュするよう設定する必要があります。

【設定項目】

以下の JDBC ドライバを使用する場合は prepared-statement-cache-size タグを設定してください。
  • Oracle
  • Microsoft SQLServer
  • Postgresql Driver, Version 9.4-1201 以前
<web-app>
  <database jndi-name="jdbc/default">
    ...
    <prepared-statement-cache-size>0</prepared-statement-cache-size>
  </database>
</web-app>
Postgresql Driver, Version 9.4-1202 以降を使用する場合は JDBC ドライバの仕様変更により、prepared-statement-cache-size タグの設定は適用されません。
JDBC 1.0 の設定方法で、初期化パラメータに preparedStatementCacheQueries を設定する必要があります。
<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      ...
      <init-param>
        <param-name>preparedStatementCacheQueries</param-name>
        <param-value>0</param-value>
      </init-param>
    </driver>
  </database>
</web-app>
Postgresql Driver で ConnectionPoolDataSource を利用する場合は、JDBC 2.0 の設定方法で初期化パラメータとして設定する必要があります。
<web-app>
  <database jndi-name="jdbc/default">
    <driver>
      ...
      <preparedStatementCacheQueries>0</preparedStatementCacheQueries>
    </driver>
  </database>
</web-app>
必須項目 ×
複数設定 ×
設定値・設定する内容 プリペアドステートメントのキャッシュ数
単位・型 数値
省略時のデフォルト値 0
親タグ
database
Postgresql Driver, Version 9.4-1202 以降の場合は driver
Postgresql Driver で ConnectionPoolDataSource を利用する場合は driver

セッション設定

タグ名 session-config
セッションに関する設定です。

【設定項目】

<web-app>
  <session-config>
    ...
  </session-config>
</web-app>

必須項目 ×
複数設定
設定値・設定する内容 セッションに関する設定をします。
単位・型 なし
省略時のデフォルト値 なし
親タグ web-app

セッションIDの再利用設定

タグ名 reuse-session-id
HTTP セッションの ID を再利用するかどうかを設定します。
true を設定した場合、過去に利用されたセッション ID を再利用します。
再利用されるのは ID のみで、過去に保管されていたセッションの情報は引き継ぎません。
ログイン、ログアウトにおいて、セッションを再作成しますが、その時に異なるセッション ID を利用する場合は、false を設定してください。

【設定項目】

<web-app>
  <session-config>
    <reuse-session-id>false</reuse-session-id>
  </session-config>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 HTTP セッションの ID を再利用するかどうかを設定します。
単位・型 真偽値(true/false)
省略時のデフォルト値 true
親タグ session-config

セッションタイムアウト設定

タグ名 session-timeout
HTTP セッションのタイムアウト時間です。指定した時間セッションを維持します。

【設定項目】

<web-app>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 HTTP セッションがタイムアウトされるまでの時間を設定をします。単位は分です。
単位・型 数値
省略時のデフォルト値 30
親タグ session-config

注意

セッションタイムアウトは、設定された時間に対して、最大 1 分間のずれが発生します。
例えば、セッションタイムアウトを 30 分に設定した場合、セッションタイムアウトが発生する時間は最終アクセス後、30 分から 31 分の間です。

CookieのHttpOnly属性

タグ名 cookie-http-only
セッション情報を管理するための Cookie に HttpOnly 属性を付与するかどうかを設定します。
true を設定した場合、Cookie のスコープは HTTP リクエストのみとなり、JavaScript からアクセスできなくなります。

【設定項目】

<web-app>
  <session-config>
    <cookie-http-only>true</cookie-http-only>
  </session-config>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 Cookie に HttpOnly 属性を付与するかどうかを設定します。
単位・型 真偽値(true/false)
省略時のデフォルト値 false
親タグ session-config

CookieのSecure属性

タグ名 cookie-secure
セッション情報を管理するための Cookie に Secure 属性を付与するかどうかを設定します。
true を設定した場合、HTTPS 通信の時のみ Cookie を送信します。

【設定項目】

<web-app>
  <session-config>
    <cookie-secure>true</cookie-secure>
  </session-config>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容 Cookie に Secure 属性を付与するかどうかを設定します。
単位・型 真偽値(true/false)
省略時のデフォルト値 false
親タグ session-config

CookieのSameSite属性

タグ名 cookie-same-site
セッション情報を管理するための Cookie に SameSite 属性を設定します。
外部サイトから intra-mart Accel Platform に対するリクエストにおいて Cookie の送信を制御します。

【設定項目】

<web-app>
  <session-config>
    <cookie-same-site>Lax</cookie-same-site>
  </session-config>
</web-app>

必須項目 ×
複数設定 ×
設定値・設定する内容
Cookie の SameSite 属性として Strict, Lax, None のいずれかの値を設定します。
各設定値の説明は、後述の「設定値」を参照してください。
単位・型 文字列
省略時のデフォルト値
ブラウザの設定に準拠します。
ブラウザのバージョンによってデフォルト値が異なりますので各ブラウザの仕様をご確認ください。
親タグ session-config

【設定値】

設定値 説明
Strict
Cookie の SameSite 属性として Strict を設定します。
外部サイトから intra-mart Accel Platform に対するすべてのリクエストにおいて Cookie が送信されません。
従って、外部サイトから遷移した場合はログイン状態が維持されず、未認証状態で処理されます。
Lax
Cookie の SameSite 属性として Lax を設定します。
外部サイトから intra-mart Accel Platform に対する GET メソッドによるリクエスト等、一部のリクエストでのみ Cookie が送信されます。
POST リクエストや、fetch API, XMLHttpRequest API, iframe 要素を用いた外部サイトからのリクエストの場合は Cookie が送信されません。
従って、その場合には未認証状態で処理されます。
None
Cookie の SameSite 属性として None を設定します。
外部サイトから intra-mart Accel Platform に対するすべてのリクエストにおいて Cookie が送信されます。

注意

SameSite 属性に None を指定した場合は、必ず Secure 属性を true に設定してください。
SameSite 属性が None で Secure 属性が true でない場合、安全でない Cookie としてブロックされるブラウザがあります。

注意

SameSite 属性は Resin 4.0.57 以降で設定が可能です。

JSPプリコンパイル設定

Web アプリケーションに含まれる JSP をサーバ起動時にプリコンパイルを行う設定です。
通常 JSP はページがアクセスされた時にコンパイルされますが、JSP プリコンパイル設定を行うことで事前にコンパイルを行うことが可能です。
JSPプリコンパイル設定を行うには、com.caucho.jsp.JspPrecompileListener を resin-web.xml の ServletContextListener に設定してください。
<web-app>
  <listener>
    <listener-class>com.caucho.jsp.JspPrecompileListener</listener-class>
    <init>
      <extension>jsp</extension>
    </init>
  </listener>
</web-app>
<extension> タグにはプリコンパイルを行うファイルの拡張子を指定してください。
上記の例では Web アプリケーションに含まれるすべての jsp ファイルをプリコンパイルを行う対象としています。
さらに詳細にプリコンパイル対象を指定する場合は <fileset> タグを指定します。
<web-app>
  <listener>
    <listener-class>com.caucho.jsp.JspPrecompileListener</listener-class>
    <init>
      <fileset>
        <include>**/*.jsp</include>
        <exclude>/a.jsp</exclude>
        <exclude>/foo/c.jsp</exclude>
      </fileset>
    </init>
  </listener>
</web-app>
<include> タグはプリコンパイルの対象とするファイル名、<exclude> タグにはプリコンパイルの対象から除外するファイル名を指定します。
上記の例で Web アプリケーション内に含まれるすべてのパスの jsp ファイルをプリコンパイルの対象とし、/a.jsp と /foo/c.jsp のみプリコンパイルの対象から除外しています。