Hi,
We have an RPG program making a Java call several times in a job. The Java call
fails after certain number of calls and the number of calls is fixed. In one of
the systems we noticed that the number of calls to the Java method after which
the job abends is 262141. Is there any system parameter for the number of Java
calls possible for a particular job. Also could this be because several
instaces of the JVM being created and results in no new instance to be created
(Lack of Garbage collection). Is there a way to know these details.
The details of the error message we get
To module . . . . . . . . . : QJVAJNI
To procedure . . . . . . . : FindClass
Statement . . . . . . . . . : 1
Message . . . . : Java program threw an exception.
Cause . . . . . : An exception was sent from within a Java program. The
Java exception object reference -2143288700 identifies the Java throwable
object that further describes the exception. The exception was thrown in a
thread attached to Java Virtual Machine -1259697824. Recovery . . . :
This exception can be handled only within the Java Virtual Machine
environment. If this exception causes a Java application to end, report the
problem to the person responsible for maintaining that application.
Technical description . . . . . . . . : Correct the cause of the exception
or add an appropriate "catch" clause to the Java program at the point where
the exception occurs.
_______________________________________________________
50 11/11/06 00:24:16.518736 QRNXIE QSYS *ST
From module . . . . . . . . : QRNXMSG
From procedure . . . . . . : SignalException
Statement . . . . . . . . . : 21
To module . . . . . . . . . : SLPB479
To procedure . . . . . . . : SLPB479
Statement . . . . . . . . . : 85
Message . . . . : Java exception received when calling Java method.
Cause . . . . . : RPG procedure SLPB479 in program DIPOLIB/SLPB479 received
Java exception "UnknownError " when calling method "conditionValidator"
with signature
"(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lj
ava.lang.String;Ljava.lan" in class
"walgreens.acplan.job.ConditionValidatorJob". Recovery . . . : Contact
the person responsible for program maintenance to determine the cause of the
problem. Technical description . . . . . . . . : If the exception
indicates that the Java class was not found, ensure the class for the method
is in the class path. If the exception indicates that the Java method was
not found, check the method name and signature. If the signature is not
correct, change the RPG prototype for the method, or change the Java method,
so that the return type and parameter types match. You can determine the
signatures for all the methods in class XYZ using command QSH CMD('javap -s
XYZ').
Software/Hardware used:
ASKED:
January 13, 2007 10:09 AM
UPDATED:
December 29, 2009 9:27 AM
You don’t tell anything about what operating system version/release you’re running, what Java version you’re using, what Java group PTF level you’re at nor even what Java error is happening. No Java source from the failing class to review…
If your Java programming is not communicating its problems back to your RPG, there is nothing that we can learn from the RPG portion of the job. The only thing we can tell from the message you show is that the exception happened in class walgreens.acplan.job.ConditionValidatorJob. (Technically, I guess we can also tell that that class isn’t properly catching and handling exceptions.)
There is a possible clue from which some sense can be made — failing after 262141 calls. There’s no way from what we know to tell if it’s significant or not. It’s simply suspicious that it falls so close to the binary boundary of 262144 (4*256*256).
If there was a hint of source code to go with, hopefully from the point of failure, it might even be explained.
Tom