On 10/01/12 13:21, Brian Burch wrote:
Konstantin,

Thank you for your prompt and helpful response... at least I know I
haven't overlooked something simple. With your encouragement, I'm happy
to keep "fighting the alligators until I can get back to draining the
swamp"!

I am working on this issue in my spare time while on holiday in Australia. I was testing a local fix yesterday which inserted the default MemoryRealm into the StandardEngine. I decided to go to bed and email my proposed change in the morning.

While I was sleeping, Mark committed r1230777 (and r1230767), which is very similar to mine, but was more bold. I was nervous (through ignorance) about the consequences for the standalone and embedded cases.

I have now reworked my new unit tests to work with Mark's change (they no longer need to explicitly trigger assignment of the default MemoryRealm), and they all run successfully. I will submit them soon.


Sorry to keep this topic open, but I have some outstanding questions following Mark's change, so perhaps someone could spare the time to answer them for me?

Tomcat.getEngine has not changed its overall behaviour: it creates the Engine when it doesn't already exist. However, it now also creates and assigns the default MemoryRealm to the new StandardEngine instance.

I can see the StandardEngine constructor is also called in both the MBeanFactory and Embedded classes. MBeanFactory, at first glance, seems to set the Realm on request, but not define a default for the Engine. The Embedded constructors will either explicitly set a Realm, or leave it uninitialised.

If this observation is correct, then there are real cases where the Engine can be created without a default realm, in which case StandardEngine will create a default JAASRealm as soon as the getRealm method is called. This JAASRealm MUST be properly configured in the jvm if an Exception is to be avoided.

Is it still meaningful to let the StandardEngine establish a default JAASRealm in getRealm under these circumstances, or would it be more consistent to use a default MemoryRealm? Anyone who wants to use a JAASRealm would surely have to configure it, so isn't it is a bit lazy to rely on implicit assignment. Surely these users would (should) explicitly define the JAASRealm in Embedded or MBeanFactory?

Perhaps the logic in StandardEngine.getRealm to catch these special cases and create a default JAASRealm is redundant?

Thanks,

Brian

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to