2014-10-14 10:12 GMT+04:00 Keiichi Fujino <kfuj...@apache.org>:
> I have a question of new SessionIdGenerator implementation.
> If reloading Manager( or Context), SessionIdGenerator is re-created based
> on sessionIdGeneratorClass that is cached to Manager.
> However, attributes of jvmRoute and sessionIdLength are default value.
> I think these attributes are need to take over when reloading.
> Or another workaround?

Looking at ManagerBase.startInternal(), I think that

1) jvmRoute shall not be set on <SessionIdGenerator> element. It is
set on <Engine> and is inherited from there. The documentation on
"jvmRoute" attribute in config/sessionidgenerator.html explicitly
mentions that effect.

It ManagerBase.startInternal() there is the following code:
 "sessionIdGenerator.setJvmRoute(getJvmRoute());"

2) For sessionIdLength I think one shall be able to configure it on
<SessionIdGenerator>, so the current behaviour is a bug and is worth
to be added to Bugzilla.

The workaround is to set that attribute on <Manager> element. (This
contradicts documentation that says that this attribute on Manager
element is deprecated).

The fix is probably to let SessionIdGenerator to implement Lifecycle interface.

The "this.sessionIdGenerator = null;" assignment in
ManagerBase.stopInternal() originates from r1044874. That is a wrong
place to clear sessionIdGenerator reference. A better place would be
destroyInternal(), or just do not clear it.

The old code before r1044874 was calling "randoms.clear();" there. I
think it is easier to expose that method via Lifecycle.stop().

Best regards,
Konstantin Kolinko

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

Reply via email to