2008-09-16 5 views
2

Ich bin nicht mit Tomcat vertraut, aber mein Team hat ein komplexes Projekt geerbt, das sich auf ein Java-Servlet konzentriert, das in Tomcat auf vielen Servern gehostet wird. Eine benutzerdefinierte Konfigurationsverwaltungssoftware wird verwendet, um die server.xml zu schreiben, und verschiedene Ressourcen (Verbindungspools, Beans, Servervariablen usw.), die in server.xml geschrieben sind, konfigurieren das Servlet. Das ist alles gut und gut.Platzhalter für Ressourcen in einem Tomcat-Servlet context.xml

Die Namen einiger Ressourcen sind jedoch nicht im Voraus bekannt. Zum Beispiel benötigt das Servlet möglicherweise Zugriff auf eine beliebige Anzahl von "Anonymizern", wie vom Betreiber konfiguriert. Jedem Anonymizer ist ein eindeutiger Name zugeordnet. Wir erstellen und konfigurieren Sie jeden Anonymisierungs mit Java Beans ähnlich den folgenden:

<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" 
/> 

Doch dies scheint uns zu verlangen, für jeden einen jeden möglichen Ressourcennamen im Voraus explizite Einträge in dem Servlet context.xml Datei zu haben. Ich möchte die expliziten context.xml-Einträge durch Platzhalter ersetzen oder wissen, ob es für diesen Problemtyp eine bessere Lösung gibt.

Derzeit:

<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"/> 

Ersetzt durch so etwas wie:

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

Allerdings habe ich, um herauszufinden, nicht in der Lage gewesen, wenn dies möglich ist, oder das, was die korrekte Syntax sein könnte. Kann jemand irgendwelche Vorschläge machen, wie man damit besser umgehen kann?

Antwort

1

Ich habe nicht über diese kommen, aber es könnte einfacher sein, so etwas wie eine AnonymizerService als Ressource zu haben, die alle verschiedenen erforderlichen AnonymizerBeans enthüllt. Auf diese Weise haben Sie keine Probleme mit Platzhaltern, müssen nur eine Ressource in der Webanwendung veröffentlichen und Sie sind zurück auf dem gut definierten und gut verstandenen Pfad.

Hoffe, dass hilft etwa einen Monat nach der ersten Frage ...

1

Ich weiß nicht, ob es das ist, was Sie benötigen, aber vielleicht möchten Sie vielleicht untersuchen, wie Sie Ihre eigene benutzerdefinierte Ressourcenfabrik für Tomcat erstellen. Hier ist die allgemeine Dokumentation für alle Dinge Ressourcen über Tomcat: Tomcat Resources

+0

Das beantwortet einen Teil der Frage. Es scheint keine Möglichkeit zu geben, einen ResourceLink mit irgendeiner Form von Namens-Wildcard zu definieren. Vielleicht könnten wir versuchen, dies zu erreichen, indem wir Ressourcen irgendwie zusammenfassen, so dass alle Anonymizer context.xml als eine einzige Ressource passieren. – DonGar

Verwandte Themen