Domino の Java プログラム 講座 (初級編 スタンドアローン・アプリケーションの SBMJOB での実行)

スタンドアローンの Java アプリケーションを Qshell からでなく、SBMJOB で実行してみました。

リモートアクセスのものとローカルアクセスのものをそれぞれです。もとはこちらで紹介したものをアレンジして使いました。

こちらが NotesTest.java でリモートアクセスのものです。

import lotus.domino.*;

public class NotesTest implements Runnable {

public static void main(java.lang.String[] args) {
NotesTest sjd = new NotesTest();
Thread nt = new Thread((Runnable)sjd);
nt.start(); }

public void run() {
try {
Session s = NotesFactory.createSession("ASDOMINO");
String p = s.getPlatform();
String nv = s.getNotesVersion();

System.out.println("Current Platform : " + p);
System.out.println("Current Domino Version: " + nv);

s.recycle();
}
catch (NotesException n) {
System.out.println("ID: " + n.id + " -- Name: " + n.text);
}
catch (Exception e) {
e.printStackTrace(); }
}
}

こちらが NotesTest2.java でローカルアクセスのものです。

import lotus.domino.*;

public class NotesTest2 implements Runnable {

public static void main(java.lang.String[] args) {
NotesTest2 sjd = new NotesTest2();
Thread nt = new Thread((Runnable)sjd);
nt.start(); }

public void run() {
try {
NotesThread.sinitThread();
Session s = NotesFactory.createSession();
String p = s.getPlatform();
String nv = s.getNotesVersion();

System.out.println("Current Platform : " + p);
System.out.println("Current Domino Version: " + nv);

s.recycle();
}
catch (NotesException n) {
System.out.println("ID: " + n.id + " -- Name: " + n.text);
}
catch (Exception e) {
e.printStackTrace(); }
finally
{
NotesThread.stermThread();
}
}
}

以下の例では、NotesTest も NotesTest2 も IFS 上の /NotesTest というディレクトリにおいてあります。

最初にローカルアクセスのものを実行させてみましょう。順番が逆のようになってしまいましたが、NotesTest2 の方です。

ローカルアクセスのドミノ Java プログラムを正しく実行させるためには、以前見たようにいろいろな設定が必要です。
いろいろ見てみた結果、以下のように QNOTES ライブラリーをライブラリーリストに入れ、PATH 環境変数をセットし、CPYEVVAR(*YES) と INLLIBLE(*CURRENT) [SBMJOB されるプログラムの LIBL に QNOTES ライブラリーを含めるためです。これはデフォルトの値なので画面では特に指定していません] オプションを指定し、さらに実行ユーザーに QNOTES を指定した SBMJOB コマンドを使い、正しいクラスパスを指定した Java コマンドを実行させます。

CLASSPATH には、ローカルアクセスなので /QIBM/ProdData/Lotus/Notes/notes.jar と NotesTest2 が存在する /NotesTest を指定します。

結果は、SBMJOB で実行されたジョブのスプールに表示されます。
一番上の「CONSOLE ERROR」はよくわかりませんが、とりあえず正しい結果がでているからいいでしょう。

こちらがリモートアクセスのものの実行です。 ADDLIBLE も ADDENVVAR も CPYENVVAR(*YES) も INLLIBLLE(*CURRENT) も必要ありません。クラスパスの指定が正しいかどうかだけがチェックポイントです。

クラスパスには、こちらはリモートアクセスなので /QIBM/ProdData/Lotus/Notes/Shared/ncso.jar を指定し、NotesTest の存在する /NotesTest ディレクトリを指定します。

こちらが実行結果です。

実行スピードは若干ローカルアクセスのものの方が速いようです。ただまあ指定の面倒さと自由度の低さを考えるとどうなんでしょうね?! やっぱりわたしはリモートアクセスの肩を持ちますけど。

[Top Pageに戻る]

Ads by TOK2