MB blog

ちょっぴりテクニカルな話題のメモです。

一番簡単な WebLogic データソースのテスト


スポンサードリンク

11g, 12c 以降の WebLogic データソースでは色々な機能が追加されており、データソースの設定をいじり回すことが多いです。

これまで WebLogic にデータソースを作成してテストをする際はわざわざ Web アプリにしてデプロイしていましたが、データソースがデプロイされている WebLogic Server の weblogic.jar をクラスパスに指定すれば、スタンドアロンJava プロセスからルックアップできることに今さらながら気がつきました。

1. WebLogic データソースの作成

ここでは jdbc/GridLinkDS という JNDI 名で、GridLink データソースを作成しています。

f:id:lake_michigan:20141204144712p:plain

2. テスト用の main クラスを記述&コンパイル

"jdbc/GridLinkDS"  で普通にルックアップしています。

public class MultiDSTest {

    public static void main(String args[]) {

        String serverHost = "localhost";
        String serverPort = "7001";
        String dbusername = "system";
        String dbpassword = "oracle";
        String dsname = "jdbc/GridLinkDS";

        Hashtable env = new Hashtable();

        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        env.put(Context.PROVIDER_URL, "t3://" + serverHost + ":" + serverPort);
        env.put("user", dbusername);
        env.put("password", dbpassword);

        String information = "";

        try {
            Context context = new InitialContext(env);
            javax.sql.DataSource ds =
                (javax.sql.DataSource) context.lookup(dsname);
            Connection  connection = ds.getConnection();
            Statement   statement = connection.createStatement();
            ResultSet   resultSet;
            String      sql;

            System.out.println("Got a connection from...");

            sql = "select sys_context('userenv', 'instance_name'), sys_context('userenv', 'server_host'), sys_context('userenv', 'service_name') from dual";
            resultSet = statement.executeQuery(sql);

            while (resultSet.next()) {
                information  = resultSet.getString(1) + "   " + resultSet.getString(2) + "   " + resultSet.getString(3);
            }
        System.out.println(information);
        
            statement.close();
            resultSet.close();
            connection.close();
        } catch (Exception e) {
            System.out.println("Error:" + e);
        }
    }
}

 

3. 実行

クラスパスに weblogic.jar を追加してから java コマンドで上記クラスファイルを実行すると、 "jdbc/GridLinkDS" が普通にルックアップできます。

weblogic.jar は 12.1.3 の場合、<MiddlewareHome>/wlserver/server/libweblogic.jar に存在します。

 

わざわざ WebApp の形にしてデプロイしなくても良いんですね。