2010-09-18 3 views
0

Avec votre aide, j'ai résolu avec succès une question que j'ai posée here. J'ai développé un authentificateur Tomcat personnalisé pour l'application Web. Actuellement, l'authentificateur et son fichier de configuration se trouvent dans le répertoire %CATALINA_HOME%\lib\. Malheureusement, le fichier de configuration de l'authentificateur est presque un doublon pour le fichier de configuration de l'application Web (situé dans %CATALINA_HOME%\webapps\myapp) pour lequel l'authentificateur a été développé, et les fichiers de configuration partagent évidemment les mêmes paramètres de connexion DB. C'est gênant car le partage du seul fichier de configuration serait le meilleur.Authentificateur de formulaire spécifique à l'application Web sous Tomcat 6

Je pense qu'il pourrait y avoir deux façons de résoudre le problème:

  1. Trouver le répertoire webapps pour myapp présence en quelque sorte au démarrage Tomcat, puis lire le fichier de configuration de l'application (passez de la situation actuelle et la myapp\WEB-INF\web.xml est configuré correctement). Bien sûr, cela nécessite malheureusement le redémarrage de Tomcat.
  2. Il peut y avoir un moyen de placer l'authentificateur de formulaire dans le répertoire d'application Web correspondant pour pouvoir lire directement le fichier de configuration partagé. Peut-être que cela pourrait éliminer le redémarrage de Tomcat et permettre un redéploiement simple.

Je voudrais préférer la deuxième solution si c'est possible, mais je ne suis pas sûr. Quel est le meilleur moyen, s'ils existent tous les deux? Ou existe-t-il une autre solution, voire une meilleure, qui ne place pas l'authentificateur de l'application Web en %CATALINA_HOME\lib%?

Merci d'avance et désolé pour mon anglais.

+0

Y a-t-il une raison pour laquelle l'application Web ne peut pas simplement invoquer l'authentificateur dans Tomcat? (et votre anglais est bien.) –

+0

@ Thorbjørn Ravn Andersen: Merci. Actuellement, l'application Web 'context.xml' est configurée pour utiliser cet authentificateur. Le seul problème est que l'application Web est basée sur le répertoire webapps et que l'authentificateur est '% CATALINA_HOME% \ lib'-base-de-répertoire, bien que la logique métier de l'authentifiant dépende de cette application. Et il pourrait être parfait si leurs fichiers de configuration étaient seulement et non une paire. La raison de la question est que le déploiement de l'application web nécessite toujours la mise à jour des paramètres de l'authentificateur pour devenir le même. Le '% CATALINA_HOME% \ lib' est juste" gâché "avec le fichier de configuration auth. –

Répondre

0

Ah, c'est beaucoup plus facile! L'idée principale est juste d'obtenir la chaîne de connexion à travers l'objet (JDBCRealm) context.getRealm() dans le authenticate(...). C'est suffisant pour résoudre mon problème.

0

Vous avez un cas de duplication de code. Je suggère de refactoriser le code, afin que Tomcat dispose de tout le code nécessaire à son authentification, puis de refactoriser votre application pour utiliser uniquement le code d'authentification Tomcat.

Si votre application ne peut pas utiliser l'authentification Tomcat, vous pouvez au moins déplacer le code commun, y compris ses fichiers de configuration, dans Tomcat, puis utiliser le code commun.

+0

La seule chose dupliquée est multiple (deux) configurations situées dans 'CATALINA_HOME \ lib \ myapp.conf' (je crois qu'il devrait y avoir des fichiers JAR seulement) et' CATALINA_HOME \ webapps \ monapp \ WEB-INF \ myapp.conf' respectivement. Les deux contiennent les mêmes propriétés de connexion DB. Mais récemment, j'ai eu un bug obscur (pour un premier regard), parce que j'ai juste oublié de mettre à jour les deux fichiers après le déploiement. Donc, je voudrais mettre la configuration de l'authentificateur dans le répertoire web applicatio correspondant en quelque sorte pour rendre le fichier de configuration unique. Désolé, je ne peux pas mieux expier.:( –

+0

Avez-vous envisagé de charger la configuration dans un objet PRoperties dans le conteneur, et de la mettre à disposition de votre application via JNDI? –

+0

@ Thorbjørn Ravn Andersen: Non, en fait non, je ne connais pas JNDI, et pour l'instant Je n'arrive pas à comprendre comment cela pourrait m'aider à partager les paramètres de connexion DB entre l'authentificateur et l'application web –

Questions connexes