15
Kontexte und ihr Deployment

Auszug Seminarunterlagen "Tomcat 6.x"

Embed Size (px)

Citation preview

Page 1: Auszug Seminarunterlagen "Tomcat 6.x"

Kontexte und ihr Deployment

Page 2: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 3: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 4: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 5: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 6: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 7: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 8: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 9: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 10: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 11: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 12: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 13: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 14: Auszug Seminarunterlagen "Tomcat 6.x"

© 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

Page 15: Auszug Seminarunterlagen "Tomcat 6.x"

© Oliver P. Schell 2011 www.schellsoft.dePräsentation "Apache Tomcat 6/7 Administration"

URL-Parsing – wo konfiguriert man was?

38