I'm trying to resuscitate and update the geronimo-apacheds integration and have run into some behavior I don't understand. Due to lack of internet access when I started I'm using up to date trunk with my xbean-spring mods, but they don't affect this situation compared to regular trunk.

In a unit test I'm starting the server with

new InitialDirectoryContext(env); which appears to be working ok

and stopping it with

new InitialDirectoryContext(env) from a shutdown config which is getting an NPE which seems less than appropriate.

The code gets into AbstractContextFactory.getInitialContext and on line 115 the server is shut down setting the DefaultDirectoryService.startupConfiguration to null, as seems appropriate.

Then on line 146 of AbstractContextFactory we call service.getJndiContext which first does this:

        checkSecuritySettings( principal, credential, authentication );

        if ( !started )
        {
            return new DeadContext();
        }

and checkSecuritySettings uses startupConfiguration on line 437, thus throwing the NPE.

So, this doesn't seem quite right to me.

1. The server has already been shut down by the time we are trying to get the context, so either returning a DeadContext() from AbstractContextFactory after shutting down the server or from DefaultDirectoryService.getJndiContext before checking the security settings seems reasonable. This would fix my immediate problem

2. Why is DefaultDirectoryService checking security settings at all? It's not checking authentication or authorization, just doing some minimal consistency checks, so why not rely on whatever is checking those? This seems to me like a big separation of concerns problem.

3. Have I missed something or is the usual way to start and stop the server through these new IniitialDirectoryContext() calls? Is there a reason it isn't started more directly through spring? I don't see how your'e going to fire up a new jvm through a new InitialDirectoryContext() call, so starting a server is in vm anyway, and allowing remote stopping seems.... like something you might not want to make too easy.

thanks
david jencks

Reply via email to