I believe I have found a bug.
The situation is a webapp with BerkeleyDB (from Sleepycat software,
Running it in Resin 3.1.8 fails during initialization and the culprit
is the method com.caucho.log.EnvironmentLogger.getHandlers().
BerkeleyDB plays around with the loggers (java.util.logging) and the
expectation in the code base is that an array is always returned
from getHandlers(), never null. That seems to be a valid assumption,
the method in EnvironmentLogger overrides a method in
java.util.logging.Logger, which does indeed make sure return an
empty array instead of null.
>From what I can tell the fix is relatively simple, unless I am
mistaken it is just a matter of making the default value an empty
array. In other words the constructor of EnvironmentLogger should
That approach could affect how "parent" environments work, so maybe
the fix should be a little bit more like the implementation in
java.util.logging.Logger. I don't understand the code well enough to
make that judgement.
The workaround is not entirely simple, I ended up grabbing all 8
loggers used by BerkeleyDB in this configuration and add a dummy
handler to each of them.
resin-interest mailing list