Tomcat: autenticador de formularios personalizados en una aplicación web, no como un módulo JAR independiente. ¿Posible?

Nuestra aplicación web requiere autenticación de formulario personalizado con lógica específica dentro. La implementación actual del autenticador de formularios requiere el módulo autenticador, llamémoslocustom.auth.jarestar presente en%CATALINA_HOME%/lib antes de que comience la aplicación web. La aplicación web utiliza ese módulo de autenticador personalizado utilizando la siguientecontext.xml directiva:

<Valve className="foo.bar.CustomAuth" characterEncoding="UTF-8"/>

Hasta donde entiendo los requisitos de Tomcat, este módulo,custom.auth.jar, debe estar presente en Tomcat'slib directorio antes de que se inicie la aplicación web, ya que la aplicación web no parece requerir el código de autenticador incluido en el archivo web, siempre intenta encontrarlo en%CATALINA_HOMA%/lib. De lo contrario, la aplicación web simplemente no puede iniciar:

SEVERE: Parse error in context.xml for /webapp
java.lang.ClassNotFoundException: foo.bar.CustomAuth

Debido a las características específicas de la lógica empresarial de autenticación y cierta protección, nos vimos obligados a introducir algún tipo de control de versiones del módulo de autenticación y verificar su versión en el servicio de escucha de la aplicación web, si la aplicación web encuentra una versión incompatible del módulo de autenticación. (no se comprueba el archivo JAR que se proporciona en el directorio de la biblioteca de Tomcat; en su lugar usamos reflexión), simplemente se niega a comenzar a informar el error de compatibilidad entre la aplicación web que se está intentando iniciar y el módulo de autenticación. De nuevo, unexistente El módulo autenticador debe especificarse encontext.xml.

A pesar de que protege las versiones incompatibles, esto genera algunas dificultades importantes: no podemos iniciar otra versión de la misma aplicación en la misma instancia de Tomcat, ya que estas dos aplicaciones requieren versiones diferentes del módulo de autenticación. Pero puede haber una sola versión en el Tomcat's.lib directorio.

Mi pregunta es: ¿es posible empaquetar el personalizado?FormAuthenticator directamente en la aplicación web que no requiere esa versión única de laFormAuthenticator ¿Se cargará antes de que se inicie la aplicación web? Esto permitiría iniciar tantas versiones de la aplicación web como queramos y no tocaremos.%CATALINA_HOME%/lib en absoluto.

En otras palabras: ¿cómo puedo hacer que Tomcat tome el módulo autenticador personalizado de la aplicación web, no de su directorio de biblioteca principal? Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta