JNDI SPを利用したOracle8i接続方法
データソースの登録
1 Oracle8i JDBC2.X データソースの登録
JNDI SPを使用してOracleデータベースにアクセスするには、JDBC2.X データソースの登録を行う必要があります。登録を行うjavaプログラムのソースを環境に合わせて修正、コンパイル、実行を行います。
環境変数の設定
データソースを登録するプログラムを実行するには、ORACLE_HOMEなどプログラム実行時に必要となる環境変数、OracleのJDBCドライバのクラスファイル、 Sun
Microsystems社のWebサイト(http://java.sun.com)からダウンロードしたクラスファイルをCLASSPATHに設定する必要があります。
例
SET ORACLE_HOME=D:\ORACLE\ORA81
SET ORACLE_SID=RUMIK
SET PATH=%ORACLE_HOME%\lib:%PATH%
SET CLASSPATH=%ORACLE_HOME%\jdbc\lib\classes12.zip;%CLASSPATH%
SET CLASSPATH=%ORACLE_HOME%\jdbc\lib\nls_charset12.zip;%CLASSPATH%
SET CLASSPATH=E:\DownLoad\ORACLE_JNDI\fscontext.jar;%CLASSPATH%
SET CLASSPATH=E:\DownLoad\ORACLE_JNDI\providerutil.jar;%CLASSPATH% |
データソースを登録するプログラムの修正
ここではマニュアルに記載のFJDSJNDI.javaを使用してデータソース登録を行います。
/*** @(#)FJDSJNDI.java *
* Copyright (c) 2000 FUJITSU LIMITED All Rights Reserved. *
* Interstage EJB Java sample application * */
// Import the java.sql package to use JDBC
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;
import oracle.sql.*;
import oracle.jdbc.pool.*;
import javax.naming.*;
import javax.naming.spi.*;
import java.util.Hashtable;
public class FJDSJNDILOCAL{
public static void main (String args [])
throws SQLException, NamingException
{ // Initializing the Context
Context context = null;
try {
Hashtable env =
new Hashtable (5);
env.put(Context.INITIAL_CONTEXT_FACTORY
, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put (Context.PROVIDER_URL,
"file:///e:/tmp/JNDI"); //(1) PROVIDER_URL
context = new InitialContext(env);
} catch (NamingException e){
e.printStackTrace();
}
dsBind(context, "jdbc/CT2");
dsLookup(context, "jdbc/CT2");
}
static void dsBind (Context context, String dsName) throws SQLException,
NamingException
{
/Creating OracleDataSource instance explicitly
OracleConnectionPoolDataSource ods = new
OracleConnectionPoolDataSource( );
// Setting the user name, password, driver
type and URL
ods.setUser("J2EE_CL");
//(2) ユーザ名
ods.setPassword("J2EE_CL");
//(3) パスワード
ods.setDriverType("thin");
ods.setNetworkProtocol("ipc");
ods.setURL("jdbc:oracle:thin:@RUMIK:1521:RUMIK");
//(4) データベースURL
// Binding it
System.out.println ("Binding with :
" + dsName);
context.bind (dsName,ods);
}
static void dsLookup (Context context, String dsName) throws SQLException,
NamingException
{
System.out.println ("Looking up with
: " + dsName);
OracleConnectionPoolDataSource ods = (OracleConnectionPoolDataSource)
context.lookup (dsName);
// Retrieving a connection
PooledConnection pooledconnection = ods.getPooledConnection();
// Closing the connection
pooledconnection.close();
pooledconnection = null;
}
} |
上記プログラムを実行すると、(1)で指定したフォルダに".bindings"というファイルが作成されます。このファイルを移動したり、削除したりしないでください。
(1) フォルダを区切るセパレータは、Windows上で実行する場合も"/"を使用してください。
|
"file:///e:/tmp/jndi"は、Windowsの表記ではe:\tmp\jndiとなります。ドライブを指定せず、"file:/tmp/jndi"と指定した場合、Interstageをインストールしたフォルダからの相対パスと解釈します。指定したフォルダは、プログラム実行前にあらかじめ作成しておいてください。 |
(2) Oracleデータベースにログインするユーザ名を指定します。
(3) パスワードを指定します。
(4) Oracleデータベースに接続するURLを指定します。"jdbc:oracle:thin:@ホスト名:ポート番号:SID"という形式です。
データソース登録プログラムのコンパイルと実行
コンパイル
|
| C:\work> javac FJDSJNDILOCAL.java |
|
実行
|
C:\work> java FJDSJNDILOCAL
Binding with : jdbc/CT2
Looking up with : jdbc/CT2
C:\work> |
|
プログラムを実行すると、JDBCドライバを使用してデータベースに接続テストを行います。実行時にJavaの例外"java.sql.SQLException"が発生した場合は、「データソースを登録するプログラムの修正」でおこなった、Oracle関連の修正を再確認してください。
上記プログラムをエラーなく終了すると、フォルダE:\tmp\JNDIに ".bindings"というファイルが作成されます。このファイルは、JNDI
SPでリソースにアクセスする時に使用されますので、移動したり、削除したりしないでください。
