У меня есть RPG PGM, который вызывает класс Java, если в задании нет JVM, среда выполнения RPG добавляет ее при вызове класса Java. После этого все вызовы, которые поступают из одной и той же программы RPG или другой программы RPG, находящейся в одном и том же Job, используют одну и ту же JVM.Возможно ли повторное использование JVM, созданного в другом задании OS/400 из RPG?
Дело в том, что если я запускаю ту же программу PRG из другого задания, она запускает другую JVM, в основном у меня есть одна JVM для Job.
Я хочу знать, возможно ли иметь только одну JVM и прикреплять к ней другие задания.
Любая помощь будет оценена по достоинству.
Вот как я пытаюсь интегрировать 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());
}
}
Я не думаю, что это ответственно без дополнительной информации; например как «RPG PGM» запускает JVM и как он общается с ним? –