DBServer設定

動作を行うための 基本情報として 設定(Config)ファイル を使用しています。
使用されるのは common.wdg , RunDBServer.wdg の2つのファイルになります。

RunDBServer.wdg からは common.wdg の設定を参照しています。
common.wdg では、接続先サーバの情報などの設定を行います。
common.wdg の設定方法は 共通Configuration設定(common.wdg) を参照して下さい。

このドキュメントでは RunDBServer.wdg の設定 についての説明になります。

1. 接続先データベースの設定

1-1. JDBC の設定

<jdbc
	driver="${RunJdbcDriver}"
	url="${RunJdbcUrl}"
	isolation=""
	AutoCommit="false"
/>

この項目ではJDBCドライバのクラスの指定、およびJDBCへの接続URLを設定しています。 この項目はデフォルトではcommon.wdgの内容を参照していますので、設定を変更する場合はcommon.wdgの値を変更して下さい。

1-2. トランザクション遮断レベルの設定

<jdbc
	driver="${RunJdbcDriver}"
	url="${RunJdbcUrl}"
	isolation=""
	AutoCommit="false"
/>

データベース接続におけるトランザクション遮断レベルを設定します。
Java 2 Platform, Standard Edition では次の 4つの遮断レベルを指定することができます。

TRANSACTION_READ_COMMITTED ダーティー読み取りは抑制されます。
TRANSACTION_READ_UNCOMMITTED ダーティー読み取り、繰り返し不可の読み取り、およびファントム読み取りが起こります。
TRANSACTION_REPEATABLE_READ ダーティー読み取りおよび繰り返し不可の読み取りが抑制されます。
TRANSACTION_SERIALIZABLE ダーティー読み取り、繰り返し不可の読み取り、およびファントム読み取りが抑制されます。

1-3. AutoCommitの設定

<jdbc
	driver="${RunJdbcDriver}"
	url="${RunJdbcUrl}"
	isolation=""
	AutoCommit="false"
/>

データベース接続におけるAutoCommitを設定します。

AutoCommit="false" 自動コミットモードを無効にします。
AutoCommit="true" 自動コミットモードを有効にします。
AutoCommit="" Connection#setAutoCommit(boolean)を呼び出しません。
AutoCommitの記述がされていない時 AutoCommit="false"と認識されます。

1-4. ユーザ名、パスワードの設定

<connect user="${RunJdbcUser}" password="${RunJdbcPass}" />
<connect user="${RunJdbcUser}" password="${RunJdbcPass}" />
<connect user="${RunJdbcUser}" password="${RunJdbcPass}" />

データベースに接続するときに使用するユーザ名とパスワードを指定します。この項目はデフォルトではcommon.wdgの内容を参照していますので、設定を変更する場合はcommon.wdgの値を変更して下さい。
また、ここでユーザ、パスワード指定を複数行記述すると、その行数分だけデータベースのコネクションプールを確保することとなり、同時に複数のデータベースアクセスを行うプロジェクトでの処理向上に役立ちます。
(上記の例では3つのデータベースコネクションがコネクションプールに確保されます)

 

2. チェック

2-1. Connection Pool の使用状況チェック

<connection>
	<check type="unuse" interval="30000" timeout="900000" />
</connection>

DBServer実行時、ネットワークになんらかの障害が発生すると、データベースのコネクションが解放されないまま残るという現象が発生することがあります。
DBServerではこの現象を解消するために、コネクションプールの使用状況の チェックを一定時間ごとに行います。
一定時間以上データベースアクセスが行われないまま使用中になっているコネクションがある場合は、 そのコネクションを解放し、未使用状態のコネクションプールへと戻します。

上記の例では30秒ごとに15分以上放置されたコネクションが存在しないかどうかをチェックし、 存在した場合、そのコネクションを解放してコネクションプールに戻します。

2-2. JDBC 接続のチェック

<connection>
	<check type="alive" class="jp.ne.mki.wedge.pub.server.db.check.connect.SqlSelectExec"
		interval="600"
		sql="select sysdate from dual" />
</connection>

定期的に JDBC 接続が切断されていないかどうかをチェックし、切断されている場合は、再接続を行います。
例えば、RDBMS が再起動することにより、JDBC 接続が切断された場合は、この設定により自動的に接続し直すことが可能となります。

2-3. コネクション要求のタイムアウト

<connection>
    <require timeout="180000" />
</connection>
トランザクション開始時にコネクションプールからJDBCコネクションを取得する時の、最大待ち時間を設定します。
単位はミリ秒で指定します。
1以上の値が指定された場合は、コネクション取得要求を開始してからその時間が経過するまで待機します。 指定された時間が経過する前にコネクションが取得できた場合は、処理を継続します。
指定された時間が経過してもコネクションが取得できなかった場合は、処理を中断してエラーを返します。
0以下の値を指定した場合、または指定しなかった場合は、コネクションが取得できるまで待機します。(従来と同じ動きになります。)
上記の例ではコネクション取得要求を開始してから最大 3分間、コネクションが取得できるまで待機します。

ポイントPoint
この設定は複数DB接続環境で common.wdg の「beforehand」の指定と組み合わせて使います。
common.wdg に「beforehand="false"」と指定すると、マッパークラス から SQL を発行するタイミングで、対象となる DB に対するコネクションをまだ取得していない場合に、コネクションプールに対してJDBCコネクション取得要求を行います。
するとトランザクションごとに DBに接続する順序が異なりますので、同時実行するトランザクション数が多くなり、コネクションプールに用意された JBCコネクションを使い切った場合は、デッドロックが発生する可能性があります。
コネクション要求の最大待機時間を指定することで、デッドロックが発生しても永遠に待ち続けることなく、エラーで終わらせることができるようになります。
最大待ち時間になってもコネクションが取得できなかった場合は、そのトランザクションが保持していたコネクションは、コネクションプールに戻されます。
「beforehand="true"」と指定すると、トランザクション開始時にすべての接続先DB に対する JDBC コネクションの取得要求を行います。通常はこちらの方を指定してください。


common.wdg での beforehand の定義は次のように行います。

<server name="${DefaultDBServer}"
        protocol="${rmi}"
        url="${RmiUrl}${RunDBServerRmiRegistName}"
        exchanger="${CommonExchanger}" beforehand="true" />
ApServerからDBServerに接続する時の定義に「beforehand="true"」と指定すると、トランザクション開始時にすべての接続先DB に対するコネクション取得要求を行います。
「beforehand="true"」と指定すると、マッパークラス実行時に、まだそのDBに対するコネクションを取得していない場合は、そのDBに対するコネクションの取得要求を行います。
トランザクションの中で、すでにそのDBに対してマッパークラスを実行しているため、コネクションも取得している場合は、マッパークラス実行時にコネクション取得要求は行わず、すでに取得済みのコネクションを使って SQL を発行します。
「beforehand」を指定しなかった場合は、「beforehand="true"」を指定した場合と同じ動きになります。

 

3. DB変換クラス使用時のパッケージ

<data>
	<convert package="jp.ne.mki.wedge.data.db.defaults" />
</data>

DB変換クラスを使用時に、クラス名の頭に付け加えるパッケージ名を記述します。 例えばOMCにてDB変換クラスがVarcharと登録されていて、このパッケージ部分に jp.ne.mki.wedge.data.db.defaultsと記述されている場合、実際に使用されるクラスは jp.ne.mki.wedge.data.db.defaults.Varcharとなります。
独自に作成されたDB変換クラスをご利用になられる場合は、そのクラス名(パッケージ名を含まない)を OMCの「基本クラス」タブのデータベース用フォーマットクラスに登録し、 「データクラス」タブの「DB変換クラス」に登録した基本クラスを指定します。

DB変換クラスの作成方法についてはこちらを参考にして下さい。

 

4. SQLマッパー基本クラスのマッピングテーブル設定

<dc>
	<mapping name="jp.ne.mki.wedge.run.db.control.dc.Start" alias="my.MyStart" />
</dc>

本来使用されるSQLマッパー基本クラスを別のSQLマッパー基本クラスに置き換えるマッピングテーブルを設定します。 例えば、例の場合では 処理開始用のSQLマッパー基本クラスに"my.MyStart"クラスが使用されることとなります。
このマッピングテーブルを用いることで、リポジトリ定義では設定できない 開始・終了・異常時終了 用の SQLマッパー基本クラスを独自で作成したクラスに置き換えることが可能となります。

 

5. ネットワークの設定

5-1. RMIの登録Registry名称

<network>
	<regist protocol="${rmi}" url="${RmiUrl}${RunDBServerRmiRegistName}" />
<!-- RMI data connection port
	<rmi port="49201" />
-->
</network>
 

6. ログの出力先パス

出力されるプロファイルログの設定を行います。

ポイントPoint
log type="xxxxx"の記述については固定値です。 file=" 以下を環境に合わせて設定してください。

ポイントPoint
プロファイルログはmode="on"の時のみ出力されます。

 

7. ログHandlerの設定

<setting>
  <debug>
    <log>
    	<handlers>
    		<common>
    			<handler class="jp.ne.mki.wedge.option.log.handler.WedgeFileHandler">
    				<formatter class="jp.ne.mki.wedge.run.logger.formatter.RunEngineFormatter" />
    				<limit value="1048576" />
    				<count value="10" />
    				<append value="true" />
    				<pattern value="${LogPath}RunDBServer.%g.log" />
    				<level value="CONFIG" />
    			</handler>
    			<handler class="jp.ne.mki.wedge.run.logger.handler.TraceLogHandler">
    				<formatter class="jp.ne.mki.wedge.run.db.logger.formatter.RunDBServerTraceLogFormatter" />
    				<filter class="jp.ne.mki.wedge.run.logger.filter.TraceLogFilter" />
    				<limit value="10485760" />
    				<count value="30" />
    				<append value="true" />
    				<pattern value="${LogPath}/RunDBServer/trace_#g/#s_#t.log" />
    				<level value="FINEST" />
    			</handler>
    		</common>
    	</handlers>
    </log>
  </debug>
</setting>

ログ出力のHandlerを設定します。
デフォルトの設定では、WedgeFileHandlerは、エラー・警告・情報 ログを出力し、TraceLogHandlerは、トレースログを出力しています。
詳しい設定内容は ログ使用方法 を参照して下さい。