Tomcat: authenicator de formulário personalizado em um aplicativo da Web, não como um módulo JAR independente. Possível?

Nosso aplicativo da Web requer autenticação de formulário personalizada com lógica específica interna. A implementação atual do autenticador de formulário requer o módulo autenticador, vamos chamá-locustom.auth.jar, estar presente em%CATALINA_HOME%/lib antes que o aplicativo da Web seja iniciado. O aplicativo da Web usa esse módulo de autenticador personalizado usando o seguintecontext.xml directiva:

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

Tanto quanto eu entendo os requisitos do Tomcat, este módulo,custom.auth.jar, deve estar presente no Tomcat'slib antes do início do aplicativo da web, porque o aplicativo da web não parece exigir o código do autenticador empacotado com o archive da web - ele sempre tenta encontrá-lo em%CATALINA_HOMA%/lib. Caso contrário, o aplicativo da Web simplesmente não poderá ser iniciado:

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

Devido às especificidades da lógica de negócios de autenticação e alguma proteção, fomos forçados a introduzir algum tipo de versão do módulo de autenticação e verificar sua versão no ouvinte do aplicativo de aplicativo da web - se o aplicativo da web encontrar uma versão incompatível do módulo de autenticação (não verificando o arquivo JAR fornecido no diretório da biblioteca do Tomcat - usamos o reflexo) - ele simplesmente se recusa a começar a relatar o erro de compatibilidade entre o aplicativo da web que está sendo iniciado e o módulo de autenticação. Mais uma vez,existir módulo autenticador deve ser especificado emcontext.xml.

Apesar de proteger as versões incompatíveis, isso traz algumas grandes dificuldades: não podemos iniciar outra versão do mesmo aplicativo na mesma instância do Tomcat, porque esses dois aplicativos exigem versões diferentes do módulo de autenticação. Mas pode haver uma única versão no Tomcatlib diretório.

Minha pergunta é: é possível empacotar o costumeFormAuthenticator diretamente no aplicativo da Web que não exige essa versão única doFormAuthenticator ser carregado antes do aplicativo da web ser iniciado? Isso permitiria iniciar quantas versões do aplicativo da Web quisermos e não tocar%CATALINA_HOME%/lib em absoluto.

Em outras palavras: como posso fazer com que o Tomcat leve o módulo de autenticador personalizado do aplicativo da Web, não de seu diretório de biblioteca inicial? Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion