JNDIからのデータソースの取得方法

"MysqlDS"という名前でバインド済みのデータソースをローカルのJNDIから取得する.

public static void main(String[] args) throws Exception {
    Hashtable ht = new Hashtable();
    ht.put(Context.INITIAL_CONTEXT_FACTORY,
           "weblogic.jndi.WLInitialContextFactory");
    ht.put(Context.PROVIDER_URL,
           "t3://localhost:7001");
    InitialContext ctx = new InitialContext(ht);

    DataSource ds = (DataSource) PortableRemoteObject.narrow(
        ctx.lookup("MysqlDS"), DataSource.class);
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select connection_id()");
    rs.next();
    System.out.println(rs.getInt(1));
    stmt.close();
    conn.close();
    ctx.close();
}

InitialContextを作成するときの環境変数に注意.普通のJavaクライアントから呼び出す場合にはWLInitialContextFactoryクラス等が入っているweblogic.jarファイルにCLASSPATHを通しておく.