Nashorn から JDBC で Oracle DB に接続する・その 2

はじめに

Nashorn 用の JavaScript プログラムから JDBC で Oracle DB に接続する手順のご紹介の続きです。今回はリモートマシンから接続する方法と、JDBC のライブラリのバージョンを出力するもう一つの方法をご紹介します。

前回の記事を読まれていない方はまずこちらをご覧下さい。

この記事の URL は https://blogs.oracle.com/nashorn_ja/entry/nashorn_jdbc_2 です。

リモートマシンから JDBC で接続する

前回の記事ではローカルマシンの ${ORACLE_HOME}/jdbc/lib/ojdbc6.jar を使用しましたが、リモートマシンから接続する場合は別途 JDBC のドライバが必要になります。

こちらから ojdbc6.jar をダウンロードしてください。

プログラムの方もリモートに接続できるよう、コネクトストリングを書き換えます。

var OracleDataSource = Java.type("oracle.jdbc.pool.OracleDataSource");
var ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:test/test@dbsrv:1521:orcl");
var conn = ods.getConnection();
var meta = conn.getMetaData();
print("JDBC driver version is " + meta.getDriverVersion());

ダウンロードした JDBC のドライバを jjs コマンドの -cp オプションで指定してスクリプトを実行します。

$ jjs -cp ojdbc6.jar version.js
JDBC driver version is 11.2.0.3.0

ローカルから実行した場合と同じ結果を得ることができました。

JAR ファイルの Main Class の実行によるバージョンの表示

続いて、JDBC のライブラリのバージョンを出力するもう一つの方法をご紹介します。

こちらにある通り、java -jar ojdbc6.jar でも JDBC ドライバのバージョンを確認できます。

$ java -jar ojdbc6.jar 
Oracle 11.2.0.3.0 JDBC 4.0 compiled with JDK6 on Thu_Jul_11_15:43:23_PDT_2013
#Default Connection Properties Resource
#Fri May 30 10:37:32 JST 2014

この処理は JAR ファイルのマニフェストの Main-Class に指定されているクラスの main(String[]) メソッドに実装されています。同じ処理を Nashorn からも呼び出してみましょう。

JAR ファイルの Main-Class を調べる

まず Main-Class が何であるかを調べます。

jar コマンドで JAR ファイルを展開し、META-INF/MANIFEST.MF ファイルを開いて、記載されている Main-Class を確認します。

$ jar xf ojdbc6.jar
$ grep Main-Class META-INF/MANIFEST.MF 
Main-Class: oracle.jdbc.OracleDriver

Main-Class は oracle.jdbc.OracleDriver であることが分かりました。

Main-Class の実行

先ほど確認した oracle.jdbc.OracleDriver クラスの main メソッドを Nashorn から実行します。

$ jjs -cp ojdbc6.jar 
jjs> var OracleDriver = Java.type("oracle.jdbc.OracleDriver");
jjs> var StringArray = Java.type("java.lang.String[]");
jjs> OracleDriver.main(new StringArray(0))
Oracle 11.2.0.3.0 JDBC 4.0 compiled with JDK6 on Thu_Jul_11_15:43:23_PDT_2013
#Default Connection Properties Resource
#Fri May 30 10:55:22 JST 2014

null
jjs> 

java コマンドで JAR ファイルを実行した際と同じ出力を得ることができました。

Java の配列型を使用する場合は、事前に Java.type() 関数を使用して JavaClass オブジェクトを作成しておく必要があります。

まとめ

Nashorn を使ってリモートマシンから JDBC で Oracle DB に接続する方法、JAR ファイルの Main-Class を呼び出す手順をご紹介しました。

次回は Oracle DB に接続して SQL を実行する手順をご紹介します。

Comments:

Post a Comment:
Comments are closed for this entry.
About

JavaVM 用 JavaScript エンジンの Nashorn について情報発信しているブログです。Nashorn の読み方はナズホーンです。

Search

Archives
« 7月 2015
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
       
Today