JDBC API を使用したデータベースアクセスには、次の 2 つの方法があります。
DriverManager インタフェース (JDBC 1.0 API) を介した接続の確立
特定のドライバを読み込み、接続 URL を提供します。この方法は、ほかのアプリケーションサーバー (IBM の WebSphere 4.0 など) で使用されます。
JDBC 2.0 データソースの使用
DataSource インタフェース (JDBC 2.0 API) は、設定可能な接続プールを介して使用できます。J2EE 1.2 によれば、データソースは JNDI ネーミングサービスを介してアクセスされます。
Application Server8.2 は、Application Server 6.x に含まれている Native Type 2 JDBC ドライバをサポートしません。Type 2 のドライバを使用して他社製の JDBC ドライバにアクセスするコードは、手動で移行する必要があります。
このデータベースアクセス方法は古くてあまり効率がよくないため推奨されていませんが、まだこの方法を使用しているアプリケーションが存在する可能性があります。
その場合、アクセスコードは次のようになります。
public static final String driver = "oracle.jdbc.driver.OracleDriver"; public static final String url = "jdbc:oracle:thin:tmb_user/tmb_user@iben:1521:tmbank"; Class.forName(driver).newInstance(); Properties props = new Properties(); props.setProperty("user", "tmb_user"); props.setProperty("password", "tmb_user"); Connection conn = DriverManager.getConnection(url, props);
このコードは、Application Server 6.x から Application Server8.2 に完全に移植できます。ただし、Application Server8.2 が適切な JDBC ドライバを読み込むのに必要なクラスを特定できることが条件です。必要なクラスが Application Server に配備されたアプリケーションにアクセスできるようにするには、Application Server のインストールディレクトリの /lib ディレクトリにドライバ実装用のアーカイブ (JAR または ZIP) を置きます。
管理コンソールの GUI を使用してドライバのパスを設定することにより、CLASSPATH を変更します。
サーバーインスタンス server1 をクリックします。
右側のペインの「JVM 設定」タブをクリックします。
「パス設定」オプションをクリックし、「クラスパスのサフィックス」テキスト入力ボックスにパスを追加します。
設定変更を行ったら、「保存」をクリックします。
新しい設定を適用します。
設定ファイル server.xml を変更するためにサーバーを再起動します。
データベースへのアクセスに JDBC 2.0 データソースを使用すると、パフォーマンス上の利点 (透過的な接続プーリングなど) が得られるとともに、コードや実装が単純化することで生産性が向上し、コードの移植性が高まります。
Application Server 6.x アプリケーション上に xyz と言う名前のデータソースがあり、JNDI 検索コードに影響を与えたくない場合は、Application Server8.2 のために作成するデータソースの名前に必ず「JDBC」を付けてください。次に例を示します。jdbc/xyz。
JDBC データソースの設定については、『Sun Java System Application Server Enterprise Edition 8.2 管理ガイド』の第 3 章「JDBC リソース」を参照してください。
データソースから接続を取得するには、次の手順に従います。
初期 JNDI コンテキストを取得します。
異なる環境間での移植性を保証するには、(サーブレット、JSP ページ、または EJB 内にある) InitialContext オブジェクトを取得するためのコードを次のようにします。
InitialContext ctx = new InitialContext();
JNDI 検索を使用してデータソースへの参照を取得します。
JNDI コンテキストにバインドされたデータソースへの参照を取得するには、初期コンテキストオブジェクトからデータソースの JNDI 名を検索します。この方法で検索されたオブジェクトを次のように DataSource タイプオブジェクトとしてキャストします。
ds = (DataSource)ctx.lookup(JndiDataSourceName);
データソースへの参照を使用して接続を取得します。
この操作には、次のようなコード行が必要です。
conn = ds.getConnection();
Application Server 6.x と Application Server は、どちらもこれらの方法に従ってデータソースから接続を取得します。