Tomcat: Authenticator w niestandardowej formie w aplikacji internetowej, a nie jako samodzielny moduł JAR. Możliwy?

Nasza aplikacja internetowa wymaga niestandardowego uwierzytelnienia formularza z określoną logiką wewnątrz. Obecna implementacja uwierzytelniania formularza wymaga modułu uwierzytelniającego, nazwijmy tocustom.auth.jarbyć obecnym w%CATALINA_HOME%/lib przed uruchomieniem aplikacji internetowej. Aplikacja internetowa używa tego modułu uwierzytelniania niestandardowego, korzystając z poniższychcontext.xml dyrektywa:

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

O ile rozumiem wymagania Tomcat, ten moduł,custom.auth.jar, musi być obecny w Tomcatlib katalog przed uruchomieniem aplikacji internetowej, ponieważ wydaje się, że aplikacja internetowa nie wymaga kodu uwierzytelniającego spakowanego w archiwum internetowym - zawsze próbuje go znaleźć%CATALINA_HOMA%/lib. W przeciwnym razie aplikacja internetowa po prostu nie może się uruchomić:

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

Ze względu na specyfikę logiki biznesowej uwierzytelniania i pewną ochronę, musieliśmy wprowadzić pewien rodzaj wersjonowania modułu uwierzytelniania i sprawdzić jego wersję w detektorze aplikacji WWW - jeśli aplikacja internetowa znajdzie niezgodną wersję modułu uwierzytelniania (nie sprawdzając pliku JAR podanego w katalogu biblioteki Tomcata - zamiast tego używamy refleksji) - po prostu odmawia rozpoczęcia zgłaszania błędu zgodności między aplikacją WWW, którą próbujesz uruchomić, a modułem uwierzytelniania. Ponownieistniejący moduł uwierzytelniający musi być określony wcontext.xml.

Pomimo tego, że chroni niekompatybilne wersje, stwarza to poważne trudności: nie możemy uruchomić innej wersji tej samej aplikacji w tej samej instancji Tomcat, ponieważ te dwie aplikacje wymagają różnych wersji modułu uwierzytelniania. Ale w Tomcat może być jedna wersjalib informator.

Moje pytanie brzmi: czy można spakować zwyczajFormAuthenticator bezpośrednio w aplikacji internetowej nie wymagającej tej pojedynczej wersjiFormAuthenticator ładować przed uruchomieniem aplikacji internetowej? Pozwoliłoby to na uruchomienie tylu wersji aplikacji internetowej, ile chcemy i nie dotykać%CATALINA_HOME%/lib w ogóle.

Innymi słowy: jak zmusić Tomcata do pobrania modułu uwierzytelniania niestandardowego z aplikacji internetowej, a nie z katalogu biblioteki domowej? Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion