Weitere ähnliche Inhalte
Ähnlich wie Auszug Seminarunterlagen "Tomcat 6.x" (20)
Auszug Seminarunterlagen "Tomcat 6.x"
- 2. 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
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 25
- 3. 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"
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 26
- 4. 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
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 27
- 5. 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-sensitiven
Dateinamen unterstützen!
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 28
- 6. 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")
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 29
- 7. 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>
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 30
- 8. 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%libtools.jar;libsmyLib.jar
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 31
- 9. 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>
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 32
- 10. 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
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 33
- 11. 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)
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 34
- 12. 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!)
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 35
- 13. 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
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 36
- 14. Weitere Valves
Valves wirken wie Servlet-Filter
auf 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
•!
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 37
- 15. URL-Parsing – wo konfiguriert man was?
Präsentation "Apache Tomcat 6/7 Administration" © Oliver P. Schell 2011 www.schellsoft.de 38