Upload
schellsoft
View
2.738
Download
4
Embed Size (px)
Citation preview
Kontexte und ihr Deployment
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Themenübersicht "Kontexte und ihr Deployment"
Kontexte repräsentieren eine bereitgestellte Anwendung
Jeder Kontext besitzt einen XML-Descriptor mit Einstellungen
Tomcat nutzt ausschl. interne Kopien dieser Kontext-Descriptoren!
Vor dem Deployment müssen alle Ressourcen bereitstehen
Tomcat erlaubt Archiv- und Exploded-Contexte
Tomcat erlaubt statisches und dynamisches Deployment
Die Tools für das Deployment sind vielfältig:ANT, Maven, Manager-Anwendung, Tomcat-Client-Deployer
Hosts ermöglichen Deployment-bezogene Einstellungen
Valves bieten standardisierte technische Aspekt-Funktionalität
25
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Kontexte
Context = Tomcat-Web-Anwendung inclusive Metadaten
Jeder Context besitzt einen Descriptor:• XML-File mit Tomcat-spezifischen Konfigurationen der Applikation• Falls der Context-Descriptor fehlt, verwendet Tomcat Standard-Einstellungen• Frühere Tomcat-Versionen integrierten den Descriptor in die "$CATALINA_BASE/conf/
server.xml" (dies ist nun "discouraged", funktioniert jedoch noch immer!)
Die Locations für Context-Descriptoren sind vielseitig: • In einem <Host>-Element der "$CATALINA_BASE/conf/server.xml"• Standard-Settings für alle Anwendungen in
"$CATALINA_BASE/conf/context.xml"• Standard-Settings für alle Anwendungen eines Hosts in "$CATALINA_BASE/conf/
[enginename]/[hostname]/context.xml.default"• Standard-Settings für eine Anwendung eines Hosts in "$CATALINA_BASE/conf/[enginename]/
[hostname]/[webappname].xml"• Settings, die in die Anwendung verpackt wurden:
"$CATALINA_BASE/webapps/[webappname]/META-INF/context.xml"
26
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Allgemeine Attribute eines Contexts
Die Attribute des <Context>-Elements:• Aufrufe auf den Context für Monitorings um n Sekunden verzögern? •backgroundProcessorDelay (-1)
• Die Implementationsklasse:•className (org.apache.catalina.core.StandardContext)
• Soll der Server Session-IDs per Cookie versenden?•cookies (true)
• Darf "context.getContext( String )" einen Request-Dispatcher zu allen Anwendungen dieses Virtual-Hosts liefern?•crossContext (false)
• Pfad zu Dateien der Anwendung, relativ zur "appBase" des Virtual-Hosts:(nicht notwendig im Falle einer "META-INF/context.xml")•docBase (WAR-Ordner/-File)
• Dürfen Einstellungen des Standard-Context überschrieben werden?•override (false)
• Container-Servlets und somit seinen Class-Loader zu benutzen:•privileged (false)
• Redeployment bei Änderungen an Class- oder JAR-Files?•reloadable (false)
• Session-Cookies nur auf HTTP-Verbindungen verwenden:•useHttpOnly
27
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Weitere Attribute der Standard-Implementation
Die Attribute der Standard-Kontext-Implementation:• Erlaubt Verknüpfungen aus dem Projekt zu externen Ressourcen:*•allowLinking (false)
• Verhindert das Sperren von JARs (weniger performant):•antiJARLocking (false)
• Verhindert das Sperren von Ressourcen (weniger performant):•antiResourceLocking (false)
• Größe des Cache für statische Ressourcen in KB:•cacheMaxSize (10240)
• Maximale Größe für statische Ressourcen im Cache in KB:•cacheObjectMaxSize (512)
• Intervall zur Revalidierung der Cache-Inhalte in Millisekunden:•cacheTTL (5000)
• (De)Aktiviert das Caching statischer Ressourcen:•cachingAllowed (true)
• (De)Aktiviert die Case-Sensitivity für Dateinamen:*•caseSensitive (true)
• * Änderung verursacht Sicherheitsprobleme auf Betriebssystemen, die keine case-sensitivenDateinamen unterstützen!
28
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Weitere Attribute der Standard-Implementation
Die Attribute der Standard-Kontext-Implementation:• Sollen TLDs bei Anwendungsstart verarbeitet werden?•processTLDs (true)
• Leitet Ausgaben auf System.out / System.err an den Context-Logger:•swallowOutput (false)
• TLD-Prüfung Namespace-Aware setzen (weniger performant):•tldNamespaceAware (false)
• Sollen TLDs bei Anwendungsstart validiert werden?•tldValidation (false)
• Timeout für die Destroy-Phase von Servlets:•unloadDelay (false)
• (De)Aktiviert das Entpacken von WARs:•unpackWAR (true)
• (De)Aktiviert den lokalen JNDI-Tree der Komponente:•useNaming (true)
• Pfad zu dem temporären Arbeitsverzeichnis:•workDir ("$CATALINA_BASE/work")
29
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Typische kontextbezogene Einstellungen
Access-Logs = zeilenweise organisierter Log-File:• Kann per Valve auf Ebene von Engines, Hosts oder Contexten erzeugt werden:•<Context …> <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="localhost_access_log." suffix=".txt" pattern="common"/> </Context>
Context-Init-Parameter = Startwerte für den Servlet-Context:• Üblicherweise werden diese Werte in der "WEB-INF/web.xml" angelegt:•<context-param> <param-name>companyName</param-name> <param-value>My Company, Incorporated</param-value></context-param>
• Alternative in "META-INF/context.xml":(override erlaubt das Überschreiben gleichnamiger "web.xml"-Parameter)•<Context …> <Parameter name="companyName" value="My Company, Incorporated" override="false"/></Context>
30
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Kontexte verwenden Ressourcen
Ressourcen = technische Elemente des Servers:• Anwendungen können von Ressourcen abhängen:
(z.B. Data-Sources, JMS-Destinations, EJB-Proxies, !)
ENC = Enterprise-Naming-Context: • Virtueller Namensdienst einer Komponente:• Der ENC wird über die Context-Konfiguration aufgebaut:•<Context …> <Resource … /> <ResourceLink … /> <Ejb … /></Context>
Bibliotheken = JAR-Archive mit darin enthaltenen Java-Klassen:• Enthalten z.B. die Unterstützung für Struts, JSF, JDBC-Driver, !• Werden als Archive in "$CATALINA/lib" kopiert• Alternativ kann auch "$CATALINA/bin/setclasspath.bat" editiert werden:•set CLASSPATH=%JAVA_HOME%\lib\tools.jar;\libs\myLib.jar
31
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Typische kontextbezogene Einstellungen
JNDI-Init-Parameter = Startwerte im lokalen Komponenten-JNDI:• Üblicherweise werden diese Werte in der "WEB-INF/web.xml" angelegt:•<env-entry> <env-entry-name>maxExemptions</param-name> <env-entry-value>10</env-entry-value> <env-entry-type>java.lang.Integer</env-entry-type></env-entry>
• Alternative in "META-INF/context.xml":•<Context …> <Environment name="maxExemptions" value="10" type="java.lang.Integer" override="false"/> </Context>
Lifecycle-Listener = Objekte, die den Context beobachten:• Üblicherweise werden diese Objekte in der "WEB-INF/web.xml" angelegt:•<listener> <listener-class>mycompany.mypackage.MyListener</listener-class></listener>
• Für Tomcat muss "org.apache.catalina.LifecycleListener" implementiert werden:•<Context …> <Listener className="mycompany.mypackage.MyListener" …></Context>
32
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Allgemeines zum Thema Deployment
Deployment = Installation einer Web-Anwendung:• Tomcat akzeptiert archivförmige und "explodierte" WAR-Komponenten
Tomcat unterstützt 2 Deployment-Varianten: • Statisches Deployment " Applikation wird vor Tomcat-Start installiert• Dynamisches Deployment " Applikation wird zur Laufzeit (re-)installiert
Tools zur Durchführung des Deployments:• Kopiervorgang im OS• Tomcat-Tasks für Build-Tools wie ANT oder Maven• Tomcat-Manager Web-Application • Monitoring-Tools wie Jopr oder Hyperic-HQ
Bitte beachten Sie: • Tomcat besitzt einen dynamischen Client-Deployer (TCD) mit weiteren Features
(z.B. Kompilieren, Validieren und Packaging von Web-Anwendungen)• TCD ist nicht in Tomcat enthalten und muss separat heruntergeladen werden• Eine Kurzanleitung findet sich im Administration Guide, Kapitel 4
33
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Deployment-Einstellungen eines Hosts
Ein Deployment kopiert WAR-Dateien in den Host-"appBase":• Dieser besitzt daher eine Reihe von Deployment-Settings:•<Host appBase autoDeploy className deployOnStartup />
Wichtige Attribute des Application-Deployers im Host:• Name dieses Hosts:•name (localhost)
• Anwendungsverzeichnis dieses Hosts:•appBase ($CATALINA_BASE/webapps)
• Deployt Anwendungen beim Startup:•deployOnStartup (true)
• (De)Aktiviert das automatische Verarbeiten der "META-INF/context.xml":•deployXML (true)
• (De)Aktiviert das automatische Entpacken von WARs:•unpackWARs (true)
• Bestimmt das temporäre Arbeitsverzeichnis des Host:•workDir ($CATALINA_BASE/work)
34
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Statisches Deployment
Statisches Deployment = Installation von Anwendungen vor dem Server-Start
Statisches Deployment wird in folgender Reihenfolge abgearbeitet:• Alle Standard-Context-Descriptoren werden deployt • Explodierte Web-Applications werden deployt
(sollte ein WAR-File neueren Datums existieren, so wird es entpackt)• WAR-Files werden deployt
ACHTUNG FALLE! Bitte beachten Sie:• Sollte kein Context-Descriptor beigefügt sein, so werden Defaults genutzt• Context-Descriptoren werden nach "$CATALINA_BASE/conf/[enginename]/[hostname]/
[webappname].xml" kopiert• Das Copy-Feature funktioniert manchmal nicht
(alte [webappname].xml bleibt im conf-Ordner stehen – ärgerlich!)
35
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Dynamisches Deployment
Dynamisches Deployment =Installation von Anwendungen bei laufendem Server
Insbesondere sind folgende Aktionen erlaubt:• (Re-)Deployment von WAR-Files durch Kopieren ins "appBase"• (Re-)Deployment von explodierten Applikationen durch Kopieren ins "appBase"• (Re-)Deployment einer Applikation durch Änderung der "/WEB-INF/web.xml"
(oder Änderung jeder anderen "WatchedResource")• (Re-)Deployment einer Applikation durch Änderung der "/META-INF/context.xml"• (Re-)Deployment einer Applikation durch Hinzufügen einer "context.xml" in
"$CATALINA_BASE/conf/[enginename]/[hostname]/"• Undeployment einer Applikation, wenn ihr "docBase" gelöscht wird
Bitte beachten Sie:• Undeployments unter Windows erfordern Anti-Locking-Settings im <Context>• Das Application-Reloading kann jeweils über den <Loader> eines <Context> in der
"context.xml" konfiguriert werden
36
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
Weitere Valves
Valves wirken wie Servlet-Filterauf Engine-, Host- oder Context-Ebene:• Sie sind kein Bestandteil der Java-EE!
Tomcat besitzt einige vordefinierte Valve-Klassen:• Loggt Debug-Informationen über Requests:•org.apache.catalina.valves.RequestDumperValve
• Loggt Zugriffe von Clients in flexiblem Format:•org.apache.catalina.valves.AccessLogValve
• Loggt Zugriffe von Clients im Kurzformat für Produktivsysteme:•org.apache.catalina.valves.FastCommonAccessLogValve
• Filtert Requests auf Basis der Client-IP oder des Client-Hosts:•org.apache.catalina.valves.RemoteAddrValve
•org.apache.catalina.valves.RemoteHostValve
• Signt einen Client auf alle anderen Applikationen eines Hosts:•org.apache.catalina.authenticator.SingleSignOn
• !
37
© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"
URL-Parsing – wo konfiguriert man was?
38