2008-09-16 8 views
2

Je ne suis pas très familier avec Tomcat, mais mon équipe a hérité d'un projet complexe qui tourne autour d'une servlet Java hébergée dans Tomcat sur de nombreux serveurs. Un logiciel de gestion de configuration personnalisé est utilisé pour écrire le fichier server.xml et diverses ressources (pools de connexions, beans, variables de serveur, etc.) écrites dans server.xml configurent le servlet. Tout cela est bien et bon.Caractères génériques pour les ressources dans un contexte Tomcat Servlet.xml

Cependant, les noms de certaines ressources ne sont pas connus à l'avance. Par exemple, la servlet peut avoir besoin d'accéder à un nombre quelconque d '«anonymisateurs» configurés par l'opérateur. Chaque anonymizer a un nom unique associé. Nous créons et configurer chaque Anonymizer en utilisant JavaBeans similaires à ce qui suit:

<Resource 
    name="bean/Anonymizer_toon" 
    type="com.company.tomcatutil.AnonymizerBean" 
    factory="org.apache.naming.factory.BeanFactory" 
    className="teAnonymizer" 
    databaseId="50" 
/> 
<Resource 
    name="bean/Anonymizer_default" 
    type="com.company.tomcatutil.AnonymizerBean" 
    factory="org.apache.naming.factory.BeanFactory" 
    className="teAnonymizer" 
    databaseId="54" 
/> 

Cependant, cela semble nous obliger à avoir des entrées explicites dans le fichier context.xml du Servlet pour chacun un chaque nom possible des ressources à l'avance. Je voudrais remplacer les entrées context.xml explicites par des caractères génériques, ou savoir s'il existe une meilleure solution à ce type de problème.

Actuellement:

<ResourceLink name="bean/Anonymizer_default" 
       global="bean/Anonymizer_default" 
       type="com.company.tomcatutil.AnonymizerBean"/> 

    <ResourceLink name="bean/Anonymizer_toon" 
       global="bean/Anonymizer_toon" 
       type="com.company.tomcatutil.AnonymizerBean"/> 

remplacé par quelque chose comme:

<ResourceLink name="bean/Anonymizer_*" 
       global="bean/Anonymizer_*" 
       type="com.company.tomcatutil.AnonymizerBean"/> 

Cependant, je n'ai pas été en mesure de déterminer si cela est possible ou ce que la syntaxe correcte peut-être. Quelqu'un peut-il faire des suggestions sur de meilleures façons de gérer cela?

Répondre

1

Je ne suis pas tombé sur ceci, mais il pourrait être plus facile d'avoir quelque chose comme un AnonymizerService comme une ressource qui révèle tous les différents AnonymizerBeans requis. De cette façon, vous n'avez aucun problème avec les caractères génériques, devez publier une seule ressource dans l'application Web et vous êtes de retour sur le chemin bien défini et bien compris.

Espérons que cela aide environ un mois après la question initiale ...

1

Je ne sais pas si c'est ce dont vous avez besoin, mais vous voudrez peut-être étudier la possibilité de créer votre propre fabrique de ressources personnalisée pour Tomcat. Voici la documentation générale pour toutes les ressources via Tomcat: Tomcat Resources

+0

Cela répond à une partie de la question. Il semble qu'il n'y ait aucun moyen de définir un ResourceLink avec n'importe quelle forme de wildcard de nom. Peut-être pourrions-nous essayer de résoudre ce problème en regroupant les ressources d'une manière ou d'une autre, afin que tous les anonymes passent par context.xml comme une seule ressource. – DonGar

Questions connexes