There seems to be a slight inconsistency on the <distributable/> implementation as it will throw a ISE only if the manager is set to distributable="true". The manager will NOT inherit the webapp distributable property. The documentation looks fairly consistent with my interpretation of the Servlet 2.4 specification (7.7.2), the Tomcat documentation states about the Manager distributable property that: --- Set to true to ask the session manager to enforce the restrictions described in the Servlet Specification on distributable applications (primarily, this would mean that all session attributes must implement java.io.Serializable). Set to false (the default) to not enforce these restrictions. NOTE - The value for this property is inherited automatically based on the presence or absence of the <distributable> element in the web application deployment descriptor (/WEB-INF/web.xml). --- Looking at the source code, it is clear to me that this is not the case as the Manager setDistributable property is only set when parsing the server.xml (or context that is)
Modified StandardContext#setDistributable to propagate to its Manager, matching the docs. Thanks for pointing this out.