動作を行うための 基本情報として 設定(Config)ファイル を使用しています。
使用されるのは common.wdg , RunDBServer.wdg の2つのファイルになります。
RunDBServer.wdg からは common.wdg の設定を参照しています。
common.wdg では、接続先サーバの情報などの設定を行います。
common.wdg の設定方法は 共通Configuration設定(common.wdg)
を参照して下さい。
このドキュメントでは RunDBServer.wdg の設定 についての説明になります。
<jdbc driver="${RunJdbcDriver}" url="${RunJdbcUrl}" isolation="" AutoCommit="false" />
この項目ではJDBCドライバのクラスの指定、およびJDBCへの接続URLを設定しています。 この項目はデフォルトではcommon.wdgの内容を参照していますので、設定を変更する場合はcommon.wdgの値を変更して下さい。
<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 | ダーティー読み取り、繰り返し不可の読み取り、およびファントム読み取りが抑制されます。 |
遮断レベルを指定します。この例では TRANSACTION_READ_COMMITTED を指定しています。
<jdbc
driver="${RunJdbcDriver}"
url="${RunJdbcUrl}"
isolation="TRANSACTION_READ_COMMITTED"
AutoCommit="false"
/>
遮断レベルとして何も指定しなかった場合(空文字列を指定した場合)は、接続先データベースのデフォルトの設定が使われます。
<jdbc
driver="${RunJdbcDriver}"
url="${RunJdbcUrl}"
isolation=""
AutoCommit="false"
/>
まったく何も指定しなかった場合は、以前のバージョンと互換性を保つため、TRANSACTION_READ_COMMITTED が適用されます。
<jdbc driver="${RunJdbcDriver}" url="${RunJdbcUrl}" AutoCommit="false" />
<jdbc
driver="${RunJdbcDriver}"
url="${RunJdbcUrl}"
isolation=""
AutoCommit="false"
/>
データベース接続におけるAutoCommitを設定します。
AutoCommit="false" | 自動コミットモードを無効にします。 |
AutoCommit="true" | 自動コミットモードを有効にします。 |
AutoCommit="" | Connection#setAutoCommit(boolean)を呼び出しません。 |
AutoCommitの記述がされていない時 | AutoCommit="false"と認識されます。 |
<connect user="${RunJdbcUser}" password="${RunJdbcPass}" /> <connect user="${RunJdbcUser}" password="${RunJdbcPass}" /> <connect user="${RunJdbcUser}" password="${RunJdbcPass}" />
データベースに接続するときに使用するユーザ名とパスワードを指定します。この項目はデフォルトではcommon.wdgの内容を参照していますので、設定を変更する場合はcommon.wdgの値を変更して下さい。
また、ここでユーザ、パスワード指定を複数行記述すると、その行数分だけデータベースのコネクションプールを確保することとなり、同時に複数のデータベースアクセスを行うプロジェクトでの処理向上に役立ちます。
(上記の例では3つのデータベースコネクションがコネクションプールに確保されます)
<connection>
<check type="unuse" interval="30000" timeout="900000" />
</connection>
DBServer実行時、ネットワークになんらかの障害が発生すると、データベースのコネクションが解放されないまま残るという現象が発生することがあります。
DBServerではこの現象を解消するために、コネクションプールの使用状況の
チェックを一定時間ごとに行います。
一定時間以上データベースアクセスが行われないまま使用中になっているコネクションがある場合は、
そのコネクションを解放し、未使用状態のコネクションプールへと戻します。
コネクションプールのチェックを行う間隔をミリ秒で指定して下さい。
この時間を短くすると、使用されないまま放置されているコネクションを早く発見できますが、
あまり短くするとチェックのためのオーバーヘッドがかかります。
接続を解除するtimeout値をミリ秒で指定して下さい。
この時間を短くすると使用されないまま放置されているコネクションを
早期に発見できますが、あまり短くすると処理の途中で解放されてしまうことがあります。
Timeoutに指定する時間は、あるDCを実行後、次のDCを実行するまでにかかる時間、
(ロジッククラスの処理時間等)の最大値よりも大きい値を指定します。
上記の例では30秒ごとに15分以上放置されたコネクションが存在しないかどうかをチェックし、 存在した場合、そのコネクションを解放してコネクションプールに戻します。
<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 接続が切断された場合は、この設定により自動的に接続し直すことが可能となります。
<connection>
<require timeout="180000" />
</connection>
トランザクション開始時にコネクションプールからJDBCコネクションを取得する時の、最大待ち時間を設定します。common.wdg での beforehand の定義は次のように行います。
<server name="${DefaultDBServer}"
protocol="${rmi}"
url="${RmiUrl}${RunDBServerRmiRegistName}"
exchanger="${CommonExchanger}" beforehand="true" />
ApServerからDBServerに接続する時の定義に「beforehand="true"」と指定すると、トランザクション開始時にすべての接続先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変換クラス」に登録した基本クラスを指定します。
OMCの基本クラスタブのデータベース用フォーマットクラスに登録したクラスを検索するパッケージを指定します。
< convert package="xxx"/>
が複数行指定された場合は、記述されたパッケージの順番に DB変換クラスが検索されます。
<data> <convert package="jp.ne.mki.wedge.data.db.mycv1" /> <convert package="jp.ne.mki.wedge.data.db.defaults" /> <convert package="jp.ne.mki.wedge.data.db.mycv2" /> </data>
この状態で、DB変換クラス「Varchar」を選択した場合は、
の優先順位でクラスを検索し、見つかったクラスを使用します。
DB変換クラスの作成方法についてはこちらを参考にして下さい。
<dc> <mapping name="jp.ne.mki.wedge.run.db.control.dc.Start" alias="my.MyStart" /> </dc>
本来使用されるSQLマッパー基本クラスを別のSQLマッパー基本クラスに置き換えるマッピングテーブルを設定します。
例えば、例の場合では 処理開始用のSQLマッパー基本クラスに"my.MyStart"クラスが使用されることとなります。
このマッピングテーブルを用いることで、リポジトリ定義では設定できない 開始・終了・異常時終了 用の
SQLマッパー基本クラスを独自で作成したクラスに置き換えることが可能となります。
<network> <regist protocol="${rmi}" url="${RmiUrl}${RunDBServerRmiRegistName}" /> <!-- RMI data connection port <rmi port="49201" /> --> </network>
起動されたDBServerをどのようなRegistry名称でRMIへ登録するかを設定します。
この項目は標準でcommon.wdgの内容を参照していますので、そちらの値を変更して下さい。
ApServerのコンフィグレーションには自分自身が参照すべきDBServerのRmiUrlを記述しています。
ApServerからDBServerへとアクセスをするためには、
の二つの値が一致している必要があります。
DBServerが待機する RMI のポート番号を設定します。
ネットワーク上にファイアウォールやロードバランサが存在する場合等、ポート番号を固定する必要がある場合に設定します。
この指定を省略した場合は、起動時に Java VM が空いているポートを割り当てます。
出力されるプロファイルログの設定を行います。
<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は、トレースログを出力しています。
詳しい設定内容は ログ使用方法 を参照して下さい。