Top Banner
Kontexte und ihr Deployment
15

Auszug Seminarunterlagen "Tomcat 6.x"

Jul 04, 2015

Download

Documents

schellsoft
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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