Error 82 when doing a CALLNAT to a Java RPC server

Hi guys.

We’ve got a little situation here that is threatning to become a major user headache.

I’ve got a Java RPC server running and I do a CALLNAT from my natural program to get to it. But now it seems that if no program in a spesific library on Natural does a callnat for a while, the connection to the EntireX broker seems to Timeout and then I get a 0082 - Program not found error when doing the callnat.

Basically what I do then is sign on another natural session, and then run a dummy program to do a callnat to the Java procedure. This then seems to activate the link, and the original program can then continue along its merry way.

Now I don’t mind the users phoning me and then having to sign onto production to do the dummy callnat, but I’m not always available (Have way to many meetings for a non manager), and then their frustration levels rise, and we don’t want to give too many people command line access to the production database (obviously).

Any thoughts would be greatly appreciated.

Regards

Elmar Matthee
University of Stellenbosch
South Africa

are you able to do an RPCERR command or call RPCINFO from an ON ERROR? This would help to get the actual RPC error that is happening and narrow down the possible problems.

You might also turn on tracing and see what the logs in your RPC server show - are there connections timing out or something on that side, causing the server to return an error after an idle period?

This may have been resolved already but…
Does your JavaRPCServer program do a receive with Wait time of zero (wait forever)?
If so, it may be that Broker is closing the idle connection to save resources.
Our code does a receive with wait for 60 seconds. if the receive returns with a time out code, we just re-issue the receive with wait…

This may have been resolved already but…
Does your JavaRPCServer program do a receive with Wait time of zero (wait forever)?
If so, it may be that Broker is closing the idle connection to save resources.
Our code does a receive with wait for 60 seconds. if the receive returns with a time out code, we just re-issue the receive with wait…