一番簡単な WebLogic データソースのテスト
スポンサードリンク
11g, 12c 以降の WebLogic データソースでは色々な機能が追加されており、データソースの設定をいじり回すことが多いです。
これまで WebLogic にデータソースを作成してテストをする際はわざわざ Web アプリにしてデプロイしていましたが、データソースがデプロイされている WebLogic Server の weblogic.jar をクラスパスに指定すれば、スタンドアロンの Java プロセスからルックアップできることに今さらながら気がつきました。
1. WebLogic データソースの作成
ここでは jdbc/GridLinkDS という JNDI 名で、GridLink データソースを作成しています。
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 の形にしてデプロイしなくても良いんですね。