Java クラスを呼び出す RPG PGM があります。ジョブに JVM がない場合、Java クラスが呼び出されたときに RPG ランタイムが JVM を追加します。この後、同じ RPG プログラムまたは同じジョブ内にある別の RPG プログラムからのすべての呼び出しは、同じ JVM を使用します。
問題は、別のジョブから同じ PRG プログラムを開始すると、別の JVM が開始されることです。基本的に、ジョブ用に 1 つの JVM があります。
JVM を 1 つだけにして、他のジョブからアタッチできるかどうかを知りたいです。
どんな助けでも大歓迎です。
これが、プロシージャーを通じて RPG/JAVA を統合しようとしている方法です。しかし、何らかの理由でスレッドが起動されません。
========
RPG CODE
========
d DSP_class c 'tests.mthreads.RPGProcessDispatcher'
d DSP s o class(*JAVA:DSP_class)
d DSP_new pr o extproc(*JAVA:
d DSP_class:
d *CONSTRUCTOR)
d DSP_dispatch pr n extproc(*JAVA:
d DSP_class:
d 'dispatch')
d dispatcher s like(DSP)
d dispatched s n
d i s 3i 0
/free
dispatcher = DSP_new();
for i=1 by 1 to 2;
dispatched = DSP_dispatch(dispatcher);
endfor;
*inlr=*on;
/end-free
RPGProcessDispatcher
====================
public boolean dispatch() {
if (freeThreads == 0) {
return false;
}
System.out.println("Tread @"+freeThreads);
decThreadsAvailable();
RPGSimpleProcess p = new RPGSimpleProcess();
p.registerRunCompleted(this);
Thread t = new Thread(p);
t.start();
return true;
}
RPGSimpleProcess
================
@Override
public void run() {
try {
Thread.sleep(100000);
notifyEnd();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}