Note: entering this to capture email discussion with Nick. Currently in 3.4 calling non_existent() on a dead object generates an error level log message with a stack trace. Very old versions of JacORB (e.g. 2.3.1) just silently threw the exception and let the caller deal with it). This is happening in the orb.Delegate, servant_preinvoke(), which throws a OBJECT_NOT_EXIST, but the outer catch{} block is calling logger.error("unexpected exception during servant_preinvoke", e); before it re-throws the exception. Basically we think that a OBJ_NOT_EXISTS on a non_existent should just silently return 'false' (without error level logging). Suggestion from Nick: ######################## So we would have public ServantObject servant_preinvoke( org.omg.CORBA.Object self, String operation, @SuppressWarnings("rawtypes") Class expectedType ) and /** * Only called by servant_preinvoke. Special case method used by non_existent to disable logging for object not exist */ private ServantObject servant_preinvoke( org.omg.CORBA.Object self, String operation, @SuppressWarnings("rawtypes") Class expectedType, boolean logObjectNotExist ) The test case could do something similar to org.jacorb.test.util.JDKLoggerTest where it checks the file contents for the log file. And the actual test could reuse orb.NonExistentLocalTest.
Fixed instead by changing the logging level inside preinvoke for simplicity. SHA f049e37ff187fc908172312e01f48f49b6b67745