Well, what can I say. In the end, it was a trivial fix. In
Tomcat's server.xml, I added:
<RequestInterceptor
className="org.apache.tomcat.request.Jdk12Interceptor"
debug="0" />
This was after the last existing RequestInterceptor entry. That
sets the correct ClassLoader for every request. With that, I have the
following configuration:
tomcat/bin: nothing
tomcat/lib: nothing
tomcat/classes: nothing
WEB-INF/classes: jndi.properties, bean remote + home interfaces
WEB-INF/lib: jboss-client.jar, jnp-client.jar, jta-spec1_0_1.jar,
ejb.jar
I think this will be the preferred configuration, though you might
argue in favor of putting the libraries in tomcat/lib instead of
WEB-INF/lib if you think all the web apps can safely use jBoss.
Note that this specifically resolves all the ClassLoader problems
I had before, plus the bizarre locations people have had to use for
jndi.properties. God bless good architecture, for letting this all come
down to a one-line configuration change. Now, shall I update the
jBoss+Tomcat web page, or does someone else want to?
Enjoying JSPs,
Aaron