Apache Tomcat, často také označovaný jako Tomcat Server je open-sourcový Java Servlet kontejner, který vyvíjí Apache Software Foundation. Tomcat implementuje několik JAVA EE specifikací včetně Java servletu, JavaServer Pages (JSP), Java EL nebo WebSocket. Nabízí čistě javový http webový server, na kterém je možné spouštět kód psaný v Javě.

Tomcat je vyvíjen a udržován otevřenou komunitou vývojářů pod křídly Apache Software Foundation.

Komponenty

Tomcat má následující komponenty: Catalina jako servlet kontejner, Coyote jako http konektor a Jasper jako JSP engine.

Catalina

Catalina je Tomcatový servlet kontejner. Catalina implementuje specifikace servletu od Sun Microsystems a JavaServer Pages (JSP). V Tomcatu Realm element reprezentuje databázi uživatelských jmen, hesel a rolí (podobně jako skupiny v Unixu) přiřazené k těmto uživatelům.

Různé implementace Realmu umožňují Catalině, aby byla integrovaná do prostředí, kde takové autentifikační informace již jsou vytvořené a udržované a následně tyto informace použít k implementaci Container Managed Security, tak jak je uvedeno ve specifikaci servletu.

Coyote

Coyote je komponenta sloužící jako konektor. Podporuje http 1.1 protokol stejně jako webový server. To Catalině umožňuje, aby vystupovala zároveň jako obyčejný webový server (ne jen jako servlet nebo JSP kontejner), který nese lokální soubory ve formě http dokumentů.

Coyote čeká na příchozí spojení na server na specifickém TCP portu a předává requesty Tomcat enginu, který je následně zpracuje a posílá zpět odpověď žádajícímu klientovi. Další konektor Coyote je Coyote JK. Ten podobně čeká na příchozí spojení, ale requesty přeposílá na jiný webový server, jako například Apache, za využití JK protokolu. To často vede k vyššímu výkonu.

Jasper

Jasper je JSP engine Tomcatu. Jasper parsuje JSP soubor, aby je zkompiloval do Java kódu jako servlety, které mohou být následně zpracovány za pomoci Cataliny. Při spuštění Jasper detekuje změny JSP souborů a znovu je kompiluje.

Klustr

Tato komponenta byla přidána za účelem správy objemných aplikací. Používá se pro load balancing, kterého lze docílit za pomoci různých technik.

Vysoká dostupnost

Do Tomcatu byla přidána funkce vysoké dostupnosti, tak aby byl zjednodušen systém aktualizací bez vlivu na produkční prostředí. Toho je docíleno tak, že živý traffic je dočasně přesměrován na jiný port, zatímco se hlavní server aktualizuje na hlavním portu. To je zvláště užitečné v případě webových aplikací s vysokým trafficem.

Webové aplikace

Tomcat zároveň obsahuje rozšíření pro podporu uživatelských i systémových webových aplikací, tak aby bylo možné je doployovat napříč různými prostředími. Také zařizuje správu sessions a aplikací napříč sítí.

Výhody použití Tomcat

  • Minimalistický. I když má Tomcat JavaEE certifikaci, jedná se o velmi minimalistickou aplikaci. Nabízí jen základní funkce potřebné k běhu serveru, což znamená, že nabízí rychlé načítání a nasazení v porovnání s mnoha konkurenčními možnostmi. Minimalismus zároveň napomáhá zrychlení vývojového cyklu.
  • Flexibilita. Díky minimalismu a širokým možnostem kustomizace je Tomcat relativně flexibilní. Je možné ho spouštět téměř libovolným způsobem.
  • Stabilita. Tomcat je velmi stabilní platformou, na které je možné stavět a používat ji ke spuštění aplikací. Tomcat běží nezávisle na instalaci Apache, i když dojde k zásadnímu výpadku, zbytek serveru poběží dál.
  • Bezpečnost. Tomcat může být přidanou vrstvou zabezpečení na serveru.
  • Jednoduchá konfigurace. Konfiguraci je relativně jednoduché implementovat.
  • Dokumentace. Pro Tomcat je dostupná bohatá dokumentace.

Nevýhody použití Tomcat

  • Bohatost funkcionalit. Pokud hledáte server s množstvím funkcionalit, není Tomcat pravděpodobně vhodnou možností.
  • Rekompilace. Protože je postavený na Javě, je typicky nutné projít rekompilací v případě aktualizací. To může dramaticky prodloužit čas vývoje.