汎用定義について
JDBCデータソースの作成時に任意のデータベースやJDBCドライバのデータソースを作成できます。これをデータソースの汎用定義と呼びます。開発中にアプリケーションの動作確認をする場合に、一時的にサポートしないデータベースと接続確認を行う場合などに使用してください。実運用時にはサポートするデータベース/JDBCドライバを使用することを推奨します。(未サポートのデータベースやJDBCドライバを使用した場合、動作保証されません。)汎用定義で定義したデータソースを使用する場合、以下に注意してください。
コネクションプーリング機能
汎用定義で定義したデータソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装している場合、そのデータソースはInterstage側でコネクションプーリングされます。ただし、自動再接続機能は使用できません。
java.sql.ConnectionPoolDataSourceインタフェースを実装しないデータソースが定義された場合、Interstage側でプーリングは行いません。コネクションをプーリングするかはJDBCドライバ側の実装に依存しますので、JDBCドライバ(もしくは使用しているデータベース)のマニュアルを参照してください。
EJBのCMP1.1 Entity Bean、CMP2.0 Entity Bean
EJBコンテナがデータベースアクセス処理を行うCMP1.1 Entity BeanもしくはCMP2.0 Entity Beanは、汎用定義で定義したデータソースは使用できません。CMPの定義で使用できないデータソースを指定した場合、IJServer起動時にエラーとなります。またJ2EEのHotDeploy機能を用いてCMPの定義で使用できないデータソースを設定したモジュールを配備した場合、活性化処理に失敗し非活性状態になります。
ただし、開発時に一時的に使用したい場合、オプションを指定することでCMP1.1 Entity BeanもしくはCMP2.0 Entity Beanでも利用できます。汎用定義で定義したデータソースをCMP1.1 Entity Bean/CMP2.0 Entity Beanで使用できません。一時的に使用する場合は以下のオプションを指定してください。
定義ファイル格納ディレクトリ |
|
定義ファイル名 | FJEJBconfig.properties |
指定するキー | “cmp_generic_datasource_use” |
指定する値 | “yes”を指定します。 |
本オプションを指定してコンテナで異常が発生した場合、すぐにオプションの指定を中止してください。サポートしていないデータベースを利用した場合には以下の制限があります。
制限事項
サポートしないデータベースを利用した場合、CMP1.1 Entity Beanのcreateメソッドにおいてすでに存在するレコードデータを挿入しようとした場合、java.rmi.RemoteExceptionが返却されます。(サポートするデータベースの場合、javax.ejb.DuplicateKeyExceptionが返却されます。)
必須API
汎用定義で定義したデータソースをJ2EEのJNDI機能でlookupして利用する場合、利用するデータベースもしくはJDBCドライバが以下のAPIをサポートしている必要があります。
インタフェース名 | メソッド名 | 備考 |
---|---|---|
javax.sql.ConnectionPoolDataSource | getPooledConnection() | java.sql.ConnectionPoolDataSourceインタフェースを実装したデータソースを定義した場合のみ。 |
getPooledConnection(String user,String password) | ||
javax.sql.DataSource | getConnection() |
|
getConnection(String user, String password) | ||
javax.sql.PooledConnection | addConnectionEventListener(ConnectionEventListener listener) | java.sql.ConnectionPoolDataSourceインタフェースを実装したデータソースを定義した場合のみ。 |
close() | ||
getConnection() | ||
removeConnectionEventListener(ConnectionEventListener listener) | ||
java.sql.Connection | close() | J2EEのトランザクション開始後コネクションを取得する時、以下の順番でAutoCommitなどの設定が行われます。
2. の設定はDBコネクション設定においてIsolation-Levelをdefault以外に設定した場合のみ実行されます。 |
commit() | ||
getAutoCommit() | ||
getTransactionIsolation() | ||
isClosed() | ||
isReadOnly() | ||
setAutoCommit(boolean autoCommit) | ||
setReadOnly(boolean readOnly) | ||
setTransactionIsolation(int level) |
環境設定
以下の環境設定が必要です。
1.環境変数の設定
必要な環境設定については、使用する各データベースもしくはJDBCドライバのマニュアルを参照してください。
IJServerを使用する場合の設定方法
“IJServerを使用する場合の環境変数の設定方法”を参照して設定してください。
クライアント環境の場合の設定方法
クライアント環境でJ2EEアプリケーションクライアントを動作させる場合は、環境変数に設定してください。
2.Interstageへのデータソース登録
Interstage管理コンソールで、データソースを定義します。詳細は、Interstage管理コンソールのヘルプを参照してください。また、isj2eeadminコマンドを使用して変更することもできます。詳細は“リファレンスマニュアル(コマンド編)”の“isj2eeadmin”を参照してください。
3.その他データソース・プロパティ情報の設定
その他データソース・プロパティ情報に設定された情報は、DB接続テスト実施およびデータソース使用時にデータソースに対して以下のように設定されます。
データソースに「"set" + データソース・プロパティ名」という名前のメソッドが存在するかを確認します。ただし、データソース・プロパティ名の先頭の文字がアルファベットの小文字の場合は、それを大文字に変換し"set"につなげます。
例) データソース・プロパティ名がpropertyの場合、setPropertyというメソッドが実行されます。
データソースに1.のメソッド名が存在して引数が1つのメソッドであれば、データソース・プロパティ値をその引数の型データに変換してデータソースに対してメソッドを実行します。
以下の場合にはエラーとなります。DB接続テスト機能を使用してデータソース・プロパティが正しく設定できているか確認してください。
プロパティ名が誤っている場合
プロパティのデータ型が誤っている場合
プロパティ値にプロパティのデータ型に変換できない値が指定された場合