Tomcat 5.5: Eigener Realm funktioniert nicht

Hallo zusammen,

meine Webanwendung nutzt bisher den form-based Tomcat-Authentifizierungsmechanismus mit einem org.apache.catalina.realm.DataSourceRealm.
Da ich aber die Anzahl gleichzeitig eingeloggter Benutzer kontrollieren möchte, war mein Plan, diesen Tomcat-DataSourceRealm zu erweitern.

Prinzipiell kein Problem, ich habe eine Unterklasse von DataSourceRealm erzeugt und alle authenticate(...)-Methoden überschrieben, z.B. so:
Code:
	@Override
	public Principal authenticate(String arg0, String arg1)
	{
		Principal result = super.authenticate(arg0, arg1);
               // eigener Code zum ConcurrentUser-Handling...
               return result;
        }

Dann habe ich den Klassennamen meines neuen Realms in server.xml als alleinigen Realm registriert:

Code:
	<Realm className="com.test.MeinDatabaseRealm" 
		debug="99" dataSourceName="jdbc/UserDB" userTable="usertabelle"
                userNameCol="username" userCredCol="passwd" digest="MD5" 
		userRoleTable="rollen" roleNameCol="rolle"/>

Und das JAR mit meiner Realm-Klasse nach server/lib kopiert.

Das Problem: die überschriebenen Methoden scheinen nicht ausgeführt zu werden, ich habe probeweise geloggt oder Datenbankeinträge erzeugt. Der Login als solcher funktioniert jedoch wie bisher, d.h. nach Eingabe von richtigem Benutzernamen und Passwort lande ich in meiner geschützten Webapp.

Dass meine Klasse wirklich verwendet wird halte ich für sicher, denn wenn ich das JAR testweise wieder entferne, fliegt beim Tomcat-Start erwartungsgemäß eine ClassNotFoundException. Außerdem habe ich im Konstruktor der Klasse einen System.out.println("...)"-Aufruf, der auch brav im catalina.out erscheint.

Um ganz sicher zu gehen, habe ich die Implementierung meines Realms dann nochmal geändert, so dass jetzt alle authenticate(...)-Methoden NULL zurückgeben.
Krankerweise funktioniert der Login dennoch!

Meine Frage: Mach ich da einen Denkfehler, oder überschreibe ich die falschen Methoden? Aber wenn nicht die authenticate(...)-Methoden, welche dann?

Hat da jemand schon Erfahrung damit oder sonstige interessante Tipps? Danke schonmal...

der Henning
 

Neue Beiträge

Zurück