2012-09-27 4 views
8

Gerade von Tomcat 6 nach Tomcat 7 verschoben und festgestellt, dass bei der Bereitstellung einer Webapp namens Widget der META-INF/Kontext. XML wird nicht mehr nach conf/Catalina/localhost/widget.xml kopiert.In Tomcat 7 müssen Sie context.xml in conf/Catalina/locahost kopieren, damit es wirksam wird

Was Im unklar ist, ob es sein muss, werden die Einstellungen in context.xml in META-INF wenn links verwendet werden, oder haben sie nur wirken, wenn bewegt Konf/Catalina/localhost/widget.xml

Im mit einem Vanille-tomcat 7-Installation

Antwort

10

Siehe documentation (Hervorhebung von mir):

individuellen Kontext Elemente explizit definiert werden können:

  • In einer einzelnen Datei bei /META-INF/context.xml innerhalb der Anwendung Dateien. Optional (basierend auf dem Attribut des Hosts) kann dies nach $CATALINA_BASE/conf/[enginename]/[hostname]/ kopiert und in Basisdateinamen der Anwendung plus einer Erweiterung ".xml" umbenannt werden.

    Sets auf true, wenn Sie einen Kontext XML-Descriptor innerhalb der (bei /META-INF/context.xml gelegen) Anwendung eingebettet wollen xmlBase kopiert werden:

Die Dokumentation für Host dies auf copyXML zu sagen hat wenn die Anwendung bereitgestellt wird. Bei nachfolgenden Starts wird der kopierte Kontext-XML-Deskriptor vor jedem in die Anwendung eingebetteten Kontext-XML-Deskriptor verwendet, auch wenn der in der Anwendung eingebettete Deskriptor aktueller ist. Der Wert der Flagge ist standardmäßig auf false gesetzt. Hinweis: Wenn deployXML false ist, hat dieses Attribut keine Wirkung.

+0

Ich hätte sagen sollen, dass ich das schon angeschaut habe und das copyXML Attribut bemerkt habe, aber das beantwortet meine Frage nicht. Um zu wiederholen, ob ich die context.xml in META-INF belassen habe, wird sie verwendet, oder hat sie nur Wirkung, wenn sie umbenannt und nach $ CATALINA_BASE/conf/[engine_name]/[hostname]/ –

+0

kopiert wird. Es steht kurz vor dem Teil, den ich zitierte "Einzelne Kontextelemente können explizit definiert werden:". Wenn es "in einer individuellen Datei in /META-INF/context.xml definiert werden kann", wird Tomcat es natürlich abholen.Das Kopieren unter $ CATALINA_BASE/conf ist nur so, dass Sie alle Konfigurationen an derselben Stelle gruppiert sehen können. Außerdem, hast du es nicht versucht? –

+0

Weitere Dokumentation: copyXML wird tatsächlich verwendet, um die Konfiguration unter $ CATALINA_BASE/conf, die bei nachfolgenden Neustarts verwendet wird, zu starten. –

1

Wie ich es verstehe, wird verwendet, die context.xml in META-INF es sei denn, das Element deployXML auf false gesetzt. Hinweis von Tomcat 7 docs, der Standardwert ist true, es sei denn, ein Sicherheitsmanager ist aktiviert!

jedoch aus den Dokumenten, war ich den Eindruck, unter, dass in der context.xml selbst das copyXML Attribute Einstellung (ohne sie zu berühren server.xml) würde bewirken, dass die Datei kopiert werden, um CONF:

<Context antiJARLocking="true" path="/widget" copyXML="true" /> 

Bei Verwendung von Tomcat 7 scheint es jedoch so zu sein, dass die Datei nicht in conf kopiert wird, es sei denn, die ist auf true auf der oben von Frank beantworteten Seite eingestellt.