ローカルアクセスアプリケーションに書き換える
NotesでJavaを利用している際に発生した問題を調査する場合、始めに切り分けないといけないのは、Java アプリケーションがローカルアクセスアプリケーションかリモートアクセスアプリケーションか、と言う点です。
リモートアクセスアプリケーションと言うのはいわゆるDIIOP経由でのアクセス、ローカルアクセスアプリケーションと言うのはNotes.jarを介してノーツクライアントのモジュールを利用してアクセスする方式です。 したがって、ローカルアクセスアプリケーションを動かすには、ローカルにNotesクライアントが導入されている必要があります。よく、「私のアプリケーションはリモートのドミノサーバーにつなぐのでローカルアクセスではありません」と思ってしまう方も多いのですが、Sessionクラスのオブジェクトをリモートに持つかローカルに持つかの違いで、どちらもリモートのデータベースを開いたり処理する事が出来ます。
以前このブログでDIIOPのサンプルを紹介しましたが、あのNABにアクセスするだけのサンプルをローカルアクセスに変えてみましょう。
変更したコードでは、createSession()の呼び方が少し変わった(引数がなくなっています)のと、sinitThread()やstermThread() と言うおまじないのような処理が入っているのに気付いて頂けたら十分です。他にもローカルアクセスアプリケーションを使う方法はあるのですが、それは後日紹介します。
# そろそろ「このくらいのサンプルはデザイナーヘルプにあるじゃないか・・・」とか言われそう
# ですが、チュートリアル目的のエントリなので。。
# 一応コンパイル方法までフォローしているので。。。。
NABTest1.java
コンパイル用バッチファイル (C:\MyJava を作業フォルダと仮定しています。)
compile.bat
set Java_HOME=D:\Java\JDK6.0\bin
set PATH=%Java_HOME%;%PATH%
set CLASSPATH=C:\lotus\Notes\jvm\lib\ext\Notes.jar;C:\myjava
javac -target 1.5 NABTest1.java
# 7.x をご利用の場合は、-target を 1.4にして下さい。。
run.bat
java -cp c:\MyJava;C:\lotus\Notes\jvm\lib\ext\Notes.jar NABTest1
リモートアクセスアプリケーションと言うのはいわゆるDIIOP経由でのアクセス、ローカルアクセスアプリケーションと言うのはNotes.jarを介してノーツクライアントのモジュールを利用してアクセスする方式です。 したがって、ローカルアクセスアプリケーションを動かすには、ローカルにNotesクライアントが導入されている必要があります。よく、「私のアプリケーションはリモートのドミノサーバーにつなぐのでローカルアクセスではありません」と思ってしまう方も多いのですが、Sessionクラスのオブジェクトをリモートに持つかローカルに持つかの違いで、どちらもリモートのデータベースを開いたり処理する事が出来ます。
以前このブログでDIIOPのサンプルを紹介しましたが、あのNABにアクセスするだけのサンプルをローカルアクセスに変えてみましょう。
変更したコードでは、createSession()の呼び方が少し変わった(引数がなくなっています)のと、sinitThread()やstermThread() と言うおまじないのような処理が入っているのに気付いて頂けたら十分です。他にもローカルアクセスアプリケーションを使う方法はあるのですが、それは後日紹介します。
# そろそろ「このくらいのサンプルはデザイナーヘルプにあるじゃないか・・・」とか言われそう
# ですが、チュートリアル目的のエントリなので。。
# 一応コンパイル方法までフォローしているので。。。。
NABTest1.java
import lotus.domino.* ;
public class NABTest1
{
static String domsrv = "ServerName/Org" ; // server name
static String dbname = "names.nsf"; // database (e.g. mail\\hnagashi.nsf)
public static void main(String args[]){
try{
NotesThread.sinitThread();
Session s = NotesFactory.createSession() ;
Database db = s.getDatabase(domsrv, dbname );
if(!db.isOpen()){
db.open();
}
String title = db.getTitle();
String uname = s.getUserName();
System.out.println("UserName: " + uname );
System.out.println("ServerName: " + db.getServer());
System.out.println("Title: " + title);
}catch(NotesException ne){
System.out.println(ne.id + ne.text);
ne.printStackTrace() ;
}catch (Exception e){e.printStackTrace() ;
}finally { NotesThread.stermThread();}
}
}
コンパイル用バッチファイル (C:\MyJava を作業フォルダと仮定しています。)
compile.bat
set Java_HOME=D:\Java\JDK6.0\bin
set PATH=%Java_HOME%;%PATH%
set CLASSPATH=C:\lotus\Notes\jvm\lib\ext\Notes.jar;C:\myjava
javac -target 1.5 NABTest1.java
# 7.x をご利用の場合は、-target を 1.4にして下さい。。
run.bat
java -cp c:\MyJava;C:\lotus\Notes\jvm\lib\ext\Notes.jar NABTest1
コメント