Tomcat

Uit DeVliegendeWiki

Ga naar: navigatie, zoeken

Dit artikel bevat achtergrondinformatie over Tomcat. Voor een practische handleiding voor de installatie van Tomcat als onderdeel van de technology stack van Openbravo, zie Openbravo - Installatie.

Inhoud

Algemeen

Tomcat is de Apache servlet container, en het implementeert Sun's Java Servlet en JavaServer Pages (JSP) specificaties. Actuele versies zijn 4.x, 5.x en 6.x. Tomcat functioneert als stand-alone web server, en heeft Apache niet nodig. Desalniettemin kun je Tomcat tevens gebruiken als Apache plugin. Tomcat is 100% in Java geschreven, en bestaat uit een drietal componenten:

  • Catalina: de eigenlijke webserver
  • Coyote: HTTP connector
  • Jasper: de Java Server Pages (JSP) engine.

Dit artikel behandelt Tomcat slechts in zoverre van belang voor gebruik in combinatie met OpenBravo.

  • Servlet container: Tomcat is een servlet container, ook wel web container of web engine genoemd. Dat betekent dat Tomcat functioneert als een webserver die server-sided Java-code executeert. Een servlet container executeert individuele servlets. Daarnaast biedt de servlet container doorgaans allerlei handige functionaliteiten, zoals de mogelijkheid om specifieke URLs direct te vertalen naar specifieke servlets. Tomcat is niet de enige servlet container: Er bestaan er meer. Een servlet container moet toegang hebben tot een Java Runtime environment, om de betreffende Java-code te kunnen executeren.
  • Servlets zijn server-sided java-programma'tjes die aangeroepen worden door een servlet container. Ze zijn vergelijkbaar met PHP- of ASP-programma'tjes. Een servlet is een object dat een verzoek ontvangt, en daarop met een bepaalde response komt. Servlets worden vaak verpakt als een web-applicatie in een WAR-bestand.
  • WAR-Bestand: WAR staat voor web application archive, en WAR-bestanden zijn vergelijkbaar met JAR-bestanden. WAR-Bestanden bevatten alle objecten die deel uitmaken van de betreffende web-applicatie, bv. JavaServer Pages, servlets, Java classes, XML-bestanden, tag libraries en statische web-pagina's.
  • JavaServer Pages (JSP)is een techniek om dynamische HTML-, XML-, of andere code te genereren op verzoek van web clients. De JSP-syntaxis voegt specifieke XML-tags toe, JSP actions genaamd, die gebruikt wordt om ingebouwde functionaliteiten aan te roepen. Daarnaast kun je met JSP zogenaamde JSP tag libraries aanmaken die kunnen functioneren als extenties van HTML of XML tags. JSP's kun je compileren tot Java Servlets met de hulp van een JSP compiler. De resulterende Java servlets kan met behulp van een Java-compiler gecompileerd worden, of rechtstreeks als byte-code gebruikt worden. Daarnaast kunnen ze direct geintrerpreteerd worden.
  • Jakarta is de naam van een overkoepelend project met daaronder een stuk of twintig subprojecten, ingedeeld in drie categorieen: (1) Bibliotheken, gereedschappen en API's, (2) frameworks en engines, en (3) server toepassingen. Tomcat behoort tot deze laatste categorie.
  • Reference Implementation (RI): Comtact is de RI van Sun's servlet en JSP-specificaties. Dat is in het bijzonder handig, als je geavanceerde zaken wil uitproberen.
  • Catalina is de codenaam van Tomcat 4.0, uitgekomen in 2001. Tomcat 4.x is de RI van de Servlet 2.3- en JSP 1.2-specificaties.
  • Java 2 Enterprise Edition (J2EE): J2EE defineert een aantal Java-gebaseerde API's die tezamen in het bijzonder geschikt zijn voor het ontwikkelen van webapplicaties voor grote ondernemingen. J2EE is een uitbreiding op Java 2 Standard Edition (J2SE). Deze laatste bevat de Java binaries zoals de Java Virtual Machine (JVM), de bytecode compiler, core Java code libraries en de JDK. Vaak worden de termen JDK en Java platform door elkaar gebruikt. Zowel J2SE als J2EE worden platformen genoemd, omdat ze als zodanig dienen voor het ontwikkelen van applicaties. Tezamen vormen J2SE en J2EE een software-ontwikkelplatform dat zijn weerga niet kent. Microsoft hoopt met .NET een vergelijkaar platform te creeren, maar is daar nog lang niet.
  • JDK
  • Tomcat, Apache & HTTP Connector: Tomcat is primair een Java Servlet/JSP-web server, maar kan daarnaast ook heel aardig statische HTML-pagina's serveren, maar niet zo aardig als Apache. Al is het maar omdat Apache in C geschreven is, en al behoorlijk lang bestaat. Daarom kan het interessant zijn om Apache en Tomcat tezamen te gebruiken, waarbij Apache primair inkomende aanvragen beantwoord. Aanvragen die betrekking hebben op servlets of JSP's, worden dan doorgestuurd naar Tomcat. Deze interactie tussen Tomcat en Apache vind plaats via Tomcat's HTTP Connector.
  • 'Port 8080: Tomcat luistert standaard op port 8080 (8180 op bepaalde OS'en, lijkt het). Dit is om onderscheid te maken in port-nummer voor servlet-/JSP-verzoeken en voor gewone HTTP-verzoeken. Op die manier kun je makkelijk twee webservers naast elkaar gebruiken op 1 machine.

Omgevingsvariabelen

Variabele Betekenins
CATALINA_HOME Locatie van de Tomcat-installatie. Bv. in CATALINA_HOME/bin vind je de binaries
JAVA_HOME Waarschijnlijk hoort deze variabele bij de JDK

Installatie

  • JVM: Zoals elk Java-programma, heeft Tomcat een JVM nodig. De standaard JVM-versie voor Linux is bedoeld voor Red Hat Linux, maar is doorgaans op elk platform aan de praat te krijgen. Daarnaast moeten een handjevol omgevingsvariabelen gespecificeerd worden. Je kunt de JVM testen met het shell-commando javac'.
  • Tomcat binaries: Als je Tomcat installeert, installeer je de bijbehorende binaries. Ik weet niet of die in byte-code zijn geschreven, of helemaal gecompileerd zijn naar een of andere machinetaal. Zal wel byte-code zijn. Een standaard-plek om Tomcat binaries te plaatsen, is /usr/java/jakarta-tomcat-5.
  • 'CATALINA_HOME: Deze omgevingsvariabele geeft de locatie van de binaries aan. Deze kun je als volgt exporteren:
# CATALINA_HOME=/usr/java/jakarta-tomcat-5
# export CATALINA_HOME
  • /etc/profile.d: In plaats van bovengenoemde code te gebruiken, kun je deze code ook toevoegen aan /etc/profile.d.
  • Tomcat Configuration File: Het te gebruiken port-nummer is gespecificeerd in $CATALINA_HOME/conf
  • Directory-structuur: Tomcat gebruikt de volgende directory-structuur:
$CATALINA_HOME/
  bin/
  common/
    classes/
    endorsed/
    lib/
  conf/
  logs/
  server/
    classes/
    lib/
    webapps/
   shared/
    classes/
    lib/
   temp/
   webapps/ (Hier staat de testpagina, en hier belandt je eigen code)
   work/
  • Firewalls & SELinux: Het lijkt erop dat de firewall en/of SELinux Tomcat dwars kan zitten.

Test de server

  • Tomcat starten: Er lijken verschillende manieren te zijn om Tomcat te starten, afhankelijk van de specifieke installatie:
    • install_dir/bin/startup.sh
    • /etc/init.d/tomcat5 start
    • Via het S-bestand in /etc/init.d
    • Via tomcat5d start (dat kwam ik ergens tegen)
  • Tomcat welcome page: De standaard-port van Tomcat is 8080, en dat je Tomcat inderdaad kunt testen met \\localhost:8080. Er schijnt een welkomstpagina te zijn, dus er zou meer moeten zijn dan alleen een leeg scherm. Volgens de OpenBravo-Wiki hangt het standaard-port-nummer af van je OS:
  • Port-scan: nmap localhost -p 8080 (vervang 8080 evt. door ander portnummer, indien relevant).
  • Executeer test-code Zie 4 voor voorbeelden.
Persoonlijke instellingen