Interstage

 

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でリソースにアクセスする時に使用されますので、移動したり、削除したりしないでください。

 

元のページへ戻る ページの先頭へ