SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Kontexte und ihr
  Deployment
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
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
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
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
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
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
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
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
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
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
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
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
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
URL-Parsing – wo konfiguriert man was?




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

Weitere ähnliche Inhalte

Was ist angesagt?

Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Ralf Sigmund
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
AOE
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpike
os890
 
Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"
schellsoft
 
Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012
inovex GmbH
 

Was ist angesagt? (17)

Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
WildFly als Plattform moderner Enterprise-Anwendungen
WildFly als Plattform moderner Enterprise-AnwendungenWildFly als Plattform moderner Enterprise-Anwendungen
WildFly als Plattform moderner Enterprise-Anwendungen
 
Java EE 5
Java EE 5Java EE 5
Java EE 5
 
Service Orchestrierung mit Apache Mesos
Service Orchestrierung mit Apache MesosService Orchestrierung mit Apache Mesos
Service Orchestrierung mit Apache Mesos
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpike
 
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickeln
 
Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"Auszug Seminarunterlagen "Hibernate 3.x"
Auszug Seminarunterlagen "Hibernate 3.x"
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012
 
Reporting mit Jasper Reports
Reporting mit Jasper ReportsReporting mit Jasper Reports
Reporting mit Jasper Reports
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Rack-Middleware
Rack-MiddlewareRack-Middleware
Rack-Middleware
 
Ausgewählte Performance Technologien
Ausgewählte Performance TechnologienAusgewählte Performance Technologien
Ausgewählte Performance Technologien
 

Andere mochten auch

Excel wortschatzliste einheit1
Excel wortschatzliste einheit1Excel wortschatzliste einheit1
Excel wortschatzliste einheit1
mexal2000
 
Ganztagsschule von Thomas Höchst
Ganztagsschule von Thomas HöchstGanztagsschule von Thomas Höchst
Ganztagsschule von Thomas Höchst
Macht Bildung
 
PRÁCT4TP-OPERADORESMAT
PRÁCT4TP-OPERADORESMATPRÁCT4TP-OPERADORESMAT
PRÁCT4TP-OPERADORESMAT
aldomat07
 
Responsive Webdesign - Barcamp Hamburg 2012
Responsive Webdesign - Barcamp Hamburg 2012Responsive Webdesign - Barcamp Hamburg 2012
Responsive Webdesign - Barcamp Hamburg 2012
Andreas Simon
 
Netcat con bactrack
Netcat con bactrackNetcat con bactrack
Netcat con bactrack
luised139
 
Examenomi3 141008182031-conversion-gate02
Examenomi3 141008182031-conversion-gate02Examenomi3 141008182031-conversion-gate02
Examenomi3 141008182031-conversion-gate02
Yanori Perez
 
OAI Object Reuse and Exchange für OA-Netzwerk
OAI Object Reuse and Exchange für OA-NetzwerkOAI Object Reuse and Exchange für OA-Netzwerk
OAI Object Reuse and Exchange für OA-Netzwerk
JIwanowa
 

Andere mochten auch (20)

Secuencia didáctica - Biodiversidad
Secuencia didáctica - BiodiversidadSecuencia didáctica - Biodiversidad
Secuencia didáctica - Biodiversidad
 
Excel wortschatzliste einheit1
Excel wortschatzliste einheit1Excel wortschatzliste einheit1
Excel wortschatzliste einheit1
 
10 Redenen Om Onze Interim Professionals In Te Huren
10 Redenen Om Onze Interim Professionals In Te Huren10 Redenen Om Onze Interim Professionals In Te Huren
10 Redenen Om Onze Interim Professionals In Te Huren
 
Ganztagsschule von Thomas Höchst
Ganztagsschule von Thomas HöchstGanztagsschule von Thomas Höchst
Ganztagsschule von Thomas Höchst
 
Fortaleza texto (2)
Fortaleza texto (2)Fortaleza texto (2)
Fortaleza texto (2)
 
LVM Vertragsmanagement für Office365 und SharePoint
LVM Vertragsmanagement für Office365 und SharePointLVM Vertragsmanagement für Office365 und SharePoint
LVM Vertragsmanagement für Office365 und SharePoint
 
PRÁCT4TP-OPERADORESMAT
PRÁCT4TP-OPERADORESMATPRÁCT4TP-OPERADORESMAT
PRÁCT4TP-OPERADORESMAT
 
Refugio
RefugioRefugio
Refugio
 
Responsive Webdesign - Barcamp Hamburg 2012
Responsive Webdesign - Barcamp Hamburg 2012Responsive Webdesign - Barcamp Hamburg 2012
Responsive Webdesign - Barcamp Hamburg 2012
 
Netcat con bactrack
Netcat con bactrackNetcat con bactrack
Netcat con bactrack
 
4
44
4
 
Veneconomía s03124s
Veneconomía s03124sVeneconomía s03124s
Veneconomía s03124s
 
Configuraciones
ConfiguracionesConfiguraciones
Configuraciones
 
Ben 10
Ben 10Ben 10
Ben 10
 
Examenomi3 141008182031-conversion-gate02
Examenomi3 141008182031-conversion-gate02Examenomi3 141008182031-conversion-gate02
Examenomi3 141008182031-conversion-gate02
 
Paisajes de ubrique
Paisajes de ubriquePaisajes de ubrique
Paisajes de ubrique
 
OAI Object Reuse and Exchange für OA-Netzwerk
OAI Object Reuse and Exchange für OA-NetzwerkOAI Object Reuse and Exchange für OA-Netzwerk
OAI Object Reuse and Exchange für OA-Netzwerk
 
Catalogo 1.1
Catalogo 1.1Catalogo 1.1
Catalogo 1.1
 
Power
PowerPower
Power
 
Documentación
DocumentaciónDocumentación
Documentación
 

Ähnlich wie Auszug Seminarunterlagen "Tomcat 6.x"

Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
Samuel Zürcher
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
Florian Holzhauer
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
Creasoft AG
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 

Ähnlich wie Auszug Seminarunterlagen "Tomcat 6.x" (20)

Sesam (APEX) Öffne Dich
Sesam (APEX) Öffne DichSesam (APEX) Öffne Dich
Sesam (APEX) Öffne Dich
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
Node.js
Node.jsNode.js
Node.js
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - Hochverfügbarkeit
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
MT AG: Sesam oeffne Dich
MT AG: Sesam oeffne DichMT AG: Sesam oeffne Dich
MT AG: Sesam oeffne Dich
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Caching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesCaching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best Practices
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 

Auszug Seminarunterlagen "Tomcat 6.x"

  • 1. Kontexte und ihr Deployment
  • 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