Distributable Shared Session Configuration
Currently, the shared-session-config schema (used to enable use of session sharing for WARs within an EAR) does not indicate whether a distributable or non-distributable session manager should be used. Consequently, we assign the session manager implementation based on the availability of the module providing the distributed implementation. Since the default infinispan web session configuration attempts to passivate sessions on shutdown, users will see NotSerializableExceptions on shutdown if they use non-serializable session attributes - even if their web applications do not define themselves as being <distributable/>. The only existing workaround for this is to remove the requisite clustering modules from the server - which of course means that the same server cannot support any traditional distributable web applications. To fix this, we should add a <distributable/> element (a la web.xml) to the shared-session-config schema to determine which session manager implementation to use.
To retain compatibility, version 1.0 of the schema will continue presume to use a distributable shared session manager. Beginning with version 2.0, users will need to opt-in to this behavior via the new <distributable/> element (as we already do for individual web applications).
Add new version 2.0 of shared-session-config schema, including new <distributable/> element.
Add boolean isDistributable() method to SharedSessionConfig meta-data.
isDistributable() should return true if version 1.0 of the schema was specified.
SharedSessionConfig DUP should only install a distributable session manager if isDistributable() returns true.
Parameterize existing shared-session-config parser by schema version.
Modify existing shared session config clustering test to use new schema version.