Resin 4.0.0 Task List
Based on feedback from customers, we’re adding more changes to 4.0.0 instead of spreading the changes through the 4.0.x release. People would like to see all the major changes at once, rather than dealing with new changes every two months. The tradeoff, of course, is that the 4.0.0 release will take longer to complete.
The tasks fall into three major categories:
- WebBeans/IoC configuration
- Clustering
- OSGi, Maven, classloading
Because the OSGi, etc, are additions, not changes, we might keep them undocumented for 4.0.0.
Because Quercus is a series of bite-sized bug fixes, it does not have a specific 4.0.0 requirement.
WebBeans/IoC configuration
The config changes must be complete for 4.0.0 because we want to avoid major configuration changes more than once.
Backward compatibility will be maintained, but the documentation will change to reflect the new syntax.
- Complete implementation of the WebBeans draft:
- Injection and Binding
- Interceptors and Decorators
- Events
- XML configuration
- Scopes and EL integration
- EJB integration
- Conversion/Modularization of Resin configuration:
- BAM: change <bam-service/> to <bam:Service/>
- DistCache: change <persistent-store> to <cluster:TriadCache/>
- Security: change <authenticator> to <sec:XmlAuthenticator>
- Rewrite: change <dispatch> to <rewrite:Dispatch>
- EJB: change <ejb-stateless-bean> to <ejb:Stateless/> and <ejb-server> to <ejb-r:EjbServer/>
- JMS: change <jms-queue> to <jms:MemoryQueue>
- JPA: change <jpa-persistence> to <amber:Persistence/>
- Remote: change <remote-client> to <remote:HessianService url=”/foo”/>
- Service: change <jmx-service> to <admin:JmxService/>
- ProxyCache: change <cache> and <cache-mapping> to <proxycache:ProxyCache/>
- bean, resource, component: replaced by WebBeans equivalent
- OSGi: change osgi-bundle to <osgi:Bundle/>
- JCA: change resource-adapter/connector to <jca:ResourceAdapter/>
Clustering
Clustering changes for 4.0.0 must be complete because the dynamic server addition/removal must be seamless for all clustering capabilities.
- Triad infrastructure
- Configuration for triad system
- Dynamic addition/removal of servers
- BAM infrastructure
- Clustered BAM with addressable services (”distcache@baa.app-tier.admin.resin”)
- Authentication/Security for administration messages
- Isolation of admin BAM address space from user BAM address space
- Convert lifecycle sync to BAM (startup, shutdown messages)
- Convert watchdog to BAM
- Convert dist JMX to BAM
- Convert clustered JMS to BAM
- Batching and queuing of admin BAM services
- Distributed Caching
- General clustered triad caching infrastructure
- Distributed sessions layered on new caching infrastruture
- Performance and stress work
- Public API (jcache?) for general caching
- Deployment
- Distributed .git repository using BAM for communication
- Distributed deployment/version map
- web-app deployment from dist .git repository
- host deployment from dist .git repository
- command-line config deployment from dist .git repository
- eclipse integration
- ant/maven integration
- Load balancing - Load balancing update to triad system
- JMS -Clustered JMS must change to the triad/bam system
OSGi, Maven, ClassLoading
Because these are additions, not changes, we may put them off until 4.0.1 instead of adding them to 4.0.0.
- Jar repository
- Shared 3rd-party jars in ${resin.home}/library
- Loaded/dependencies by Maven pom in web-app
- Distributed with clustered deployment
- OSGi
- OSGi-aware Resin classloaders
- OSGi bundles loaded from ${resin.home}/library
- OSGi bundles configured with WEB-INF/web-beans.xml for beans and services
- OSGi services configured with @OsgiService
