Email sent to the dev@ list.
I have been working on a second integration attempt of WADI and I am posting here a high-level description of the current state of progress such that people can jump in.
At this stage, this is a Jetty only attempt and I do believe that the same approach can be applied for Tomcat. The current integration provides (very unreliable) HttpSession state migration. It only works for a single Web-application; more effort is required on the WADI side to support multiple Web-applications and this will not impact the integration piece of code. I (more or less successfully) tested the integration with mod_proxy + mod_proxy_balancer and mod_proxy + mod_rewrite in front of three Geronimo servers running the WADI demo web-app.
The code changes are:
- new module to capture some clustering contracts - geronimo-clustering: there Node, SessionManager, Session and ClusteredInvocation are defined.
- new module to provide a WADI implementation of the above - geronimo-clustering-wadi;
- new module to capture clustering builder contracts - geronimo-clustering-builder: there is only one interesting interface JettyClusteringBuilder. This later defines a couple of methods to augment the environment of a Web module being built and add clustering specific GBeans;
- new module to provide a WADI implementation of the above - Geronimo-clustering-builder-wadi; and
- geronimo-jetty-builder and geronimo-jetty are impacted to hook in clustering. These two modules depend on geronimo-clustering and geronimo-clustering-builder and not on WADI specific modules.
Two new modules are added:
- jetty-clustering- wadi: this module defines default WADI GBeans such as Dispatcher, ReplicationManagerFactory, BackingStrategyFactory et cetera; and
- jetty-clustering-builder-wadi: this module defines a builder to process Jetty DD and add various GBeans to the module being built.
I think that the implementation is flexible enough to plug in another clustering implementation such as Kache.
As a matter of fact, there are some severe reliability (e.g. locking issues) and integration (only one Web-app can be clustered) issues, which need to be fixed. So, this work is not yet ready to be RTC voted. Having said that, I have opened a JIRA such that people can have a look to the integration.