Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
ここでは,SQL Serverと接続する場合の前提条件と注意事項について説明します。
SQL Serverの場合の前提条件について示します。
表3-29 RARファイルごとに使用できるトランザクションサポートレベル(SQL Server)
使用するDB Connector (RARファイル) |
トランザクションサポートレベル | ライトトランザクション | |
---|---|---|---|
有効 | 無効 | ||
DBConnector_SQLServer_CP.rar | NoTransaction LocalTransaction |
○ | ○ |
(凡例) ○:使用できる
なお,SQL Serverと接続できるのはWindowsの場合だけです。
ここでは,SQL Serverと接続する場合のシステムでの文字コード変換に関する注意事項とDB Connector設定時の注意事項について説明します。
SQL Server接続時,データベースに日本語文字コードを含むデータを格納する場合,システムでの文字コード変換について考慮する必要があります。ここでは,システムでの文字コード変換の概要と,文字化けを回避するために設定時に注意することについて説明します。
Javaでは日本語文字コードはUnicodeで表現されます。SQL Serverを使用する場合,Webクライアントとアプリケーションサーバ間,およびアプリケーションサーバとSQL Server間の処理で文字コード変換が実施されます。
SQL Serverを使用する場合の文字コード変換の概要を次の図に示します。
図3-19 SQL Serverを使用する場合の文字コード変換の概要
図中の1.〜4.について説明します。
SQL Serverを使用する場合,外部文字コードとデータベース格納文字コードの組み合わせや,文字コード変換を実施する場合に使用されるコンバータの種類によっては,文字化けなどの問題が発生することがあります。このような文字化けを回避するためには,文字コードの設定に注意する必要があります。
SQL Serverでは次の表に示す文字データ型をサポートしています。SQL Serverを使用する場合,Unicodeデータ型を使用することによって,文字コード変換時に発生する文字化けを防ぐことができます。
表3-30 SQL Serverでサポートする文字データ型
カテゴリ | 文字データ型 |
---|---|
Unicodeデータ型 | nchar,nvarchar,ntext |
非Unicode文字データ型 | char,varchar,text |
次に,SQL Serverでのデータベース格納文字コードとして,Unicodeデータ型を使用する場合と,非Unicodeデータ型を使用する場合の文字コード変換について説明します。
DB ConnectorのselectMethodプロパティ(<config-property-name>の項目名)の値に「direct」を設定した場合の注意事項を次の表に示します。
表3-31 DB ConnectorのselectMethodプロパティ設定時の注意事項
条件 | 注意事項 |
---|---|
コネクションの障害検知機能が有効 | コネクションに障害が発生していても正常であると誤診することがあります。その結果,ユーザアプリケーションプログラムに障害が発生したコネクションを返すことがあるので,コネクションの障害検知機能を使用しないでください。障害が発生したら,cjclearpoolコマンドを実行してください。 |
Statement,PreparedStatement,CallableStatementを複数同時に生成 | SQL ServerのJDBCドライバによって,同時に生成したステートメントごとにSQL Serverへの接続が生成されます。 また,ステートメントプーリング機能を使用する場合には,プールされているステートメントごとに接続が生成され,メモリを多く消費するので注意してください。 |
SQL Server 2005に接続する場合,コネクションプーリング機能を必ず使用してください。
また,SQL Server JDBC Driver 3.0の挙動によって,次の現象が発生することがあります。
GC(ガーベージコレクション)が発生するまで,データベースとのセッションが切断されないで,使用されないセッションが残ってしまうことがあります。この現象を回避するため,javagcコマンドを実行してください。
なお,この現象は次の条件で発生します。
上記(a)のデータベースとのセッションが切断されないことに起因して,データベースとのセッションの数がデータベースの同時ユーザ接続の最大数に達した場合には,新規セッションが生成できなくなります。ユーザプログラムからjavax.sql.DataSourceインタフェースのgetConnectionメソッドを実行したときに,java.sql.SQLExceptionが発生することがあります。この現象を回避するため,データベースの同時ユーザ接続の最大数を0(無制限)に設定してください。
なお,この現象はデータベースの同時ユーザ接続の最大数を1以上の値に設定した場合に発生します。
SQL Server 2008またはSQL Server 2012に接続する場合の注意事項を次に示します。なお,SQL Server 2005使用時の注意事項はどれも該当しません。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.