Jakarta, nebo také Apache Jakarta je projektem organizace Apache Software Foundation. Hlavní portál projektu najdeme na adrese http://jakarta.apache.org. Cílem projektu Jakarta je vytvářet kvalitní open-source řešení serverových aplikací pro Java platformu. V současné době se jedná o nejkomplexnějsí volně šiřitelné řešení pro serverové aplikace.
Jedním ze stěžejních podprojektů projektu Jakarta je projekt Jakarta Tomcat, také nazývaný jako Apache Tomcat. Tomcat je oficiální referenčňí implementace technologií Java Servlet a Java Server Pages (JSP), obojí vyvíjené pod záštitou společnosti SUN. Ve své stabilní řadě 4.1 Tomcat nabízí podporu pro Java Servlet verze 2.3 a JSP verze 1.2. Budoucí řada 5, která je nyní ve fázi alfa testování, pak nabídne podporu Java Servlet verze 2.4 a JSP verze 2.0 .
Servlety a JSP vznikly jako odpověď technologie Java na programování
serverových aplikací pomocí technologií CGI (Common Gateway Interface),
PHP (PHP: Hypertext Preprocessor).
Servlet je program napsaný v jazyce
Java, který běží na serveru, a který dokáže zpracovávat požadavky
zaslané pomocí HTTP protokolu a dokáže na ně HTTP protokolem odpovídat.
V podstatě se dá říct, že každý servlet je malý webový server. Aplikace
typu Tomcat je potom jakýsi zásobník servletů, který se stará o jejich
spouštění, běh, ukončení, komunikaci s klienty a další věci. V podstatě
by bylo možné zpracovávat i požadavky jiných druhů serverů (nejen HTTP),
ale v praxi se jiné použití, než právě pro HTTP neuchytilo, a proto
se dnes místo HTTP Servlet používá zkracené Servlet. Tady budu tedy
hovořit pouze o HTTP Servletech.
JSP je technologie umožňující směšovat statické HTML stránky
s dynamicky generovaným obsahem a je jistou analogií s technologiemi
jako jsou ASP či PHP. JSP stránky je možno používat i samostatně, ale
podstatně lepší využití je ve spolupráci JSP a Servletů. Servlet samotný
je totiž poměrně nešikovný jako nástroj pro vytváření statického HTML
kódu (out.println("<TITLE>Titulek</TITLE>");
).
JSP se proto používá ke směšování statických částí HTML stránek, které
jsou napsány v klasickém HTML kódu, s dynamickými částmi, které jsou
vytvářeny pomocí servletu.
Nezbytná ukázka servletu Hello World! :-)
Hello.java:
import javax.servlet.*;
import javax.servlet.http.*;
public class Hello extends HttpServlet
{
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
PrintWriter out;
String title = "Example Hello World! Servlet";
response.setContentType("text/html");
out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println(title);
out.println("</TITLE></HEAD><BODY>");
out.println("HELLO WORLD!");
out.println("</BODY></HTML>");
out.close();
}
}
}
A to samé pomocí JSP
Hello.jsp:
<%
String title = "Example Hello World! JSP";
%>
<HTML>
<HEAD>
<TITLE><= title %></TITLE>
</HEAD>
<BODY>
HELLO WORLD!
</BODY>
</HTML>
Možností praktického využití této technologie je mnoho. Tato technologie poslouží stejně dobře pro malé stránky s dynamickým obsahem, stejně jako pro rozsáhlé portály a informační systémy. Správná kombinace Servletů a JSP nám umožní vytvářet stránky jednoduchostí PHP a s možnostmi CGI. Přitom naše aplikace budou přenositelné a bezpečné.
Tomcat je dostupný jak v binární formě tak ve formě zdrojových kódů.
Jelikož aplikace potřebuje pro svůj běh mnoho knihoven (převážne
v jazyce Java), nebudu se zabývat překladem aplikace ze zdrojových
kódů (Postup při kompilaci nalezneme
zde).
V binárním balíku již všechny potřebné knihovny jsou obsaženy.
Postup při instalaci:
Po úspěšné instalaci můžeme přistoupit ke konfiguraci našeho serveru.
Všechny konfigurační soubory jsou v adresáři $CATALINA_HOME/conf.
Soubor catalina.policy slouží k nastavení Java Security Manageru.
Tyto práva se aplikují pouze v případě, že je Tomcat spuštěn s parametrem
"-security".
jk2.properties slouží pro nastavení modulu pro
spolupráci s web servery pomocí protokolu AJP (Apache JServ Protocol), který
zvládá nejen Apache, ale i IIS, Netscape/iPlanet nebo Domino.
Soubor server.xml obsahuje kompletní nastavení aplikace Tomcat.
V souboru tomcat-users.xml se nastavují uživatelé a přiřazují se jim práva
k jednotlivým aplikacím. Po nainstalování je zde třeba vytvořit uživatele
pro aplikaci manager (V roles musí mít manager), který pak může spravovat
servlety pomocí webového rozhraní.
V souboru web.xml se nastavují
inicializační hodnoty pro všechny webové aplikace. Servlety jsou pak
schopny tyto inicializační hodnoty číst a využít.
Možností nastavení je poměrně hodně, proto je třeba prostudovat dokumentaci, pro řádné seznámení s možnostmi aplikace a s podrobným nastavením.
Aplikace Tomcat umí vyřizovat požadavky HTTP a to nejen na servlety, ale
také na statické stránky, případně tyto požadavky přesměrovávat apod.
Dá se tedy říct, že Tomcat obsahuje webový server. Nemá však takové
možnosti nastavení, jako například Apache a není ani zdaleka tak
efektivní. Proto je vhodné používat Tomcat s nějakým webserverem, kdy
webserver uspokojuje všechny požadavky a pouze ty, určené pro Tomcat,
předává dál. Popíši tady řešení, které se používá při spolupráci se
serverem Apache.
Pro spolupráci se používa modul
mod_jk,
který stáhneme a přeložíme. Do httpd.conf pak přidáme tyto řádky:
LoadModule jk_module libexec/mod_jk.so
AddModule mod_jk.c
JkWorkersFile /etc/httpd/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info
Dúležitý je především JkWorkersFile, který ukazuje na soubor s definicí tzv. workers, kteří v podstatě zajišťují komunikaci. Jak vytvořit tento soubor se můžeme dozvědět třeba zde. Stejné nastavení pak musíme umístit do adresáře conf aplikace Tomcat.
Potom už stačí přidat do definice virtuálního webu například:
JkMount /servlets/* ajp13
JkMount *.jsp ajp13
Což zpúsobí, že všechny požadavky na soubory s příponou jsp, případně požadavky pod /servlets/, budou přesměrovány na Tomcat.
Rozchodit Apache ve spolupráci s Apache Tomcat je složitější, než třeba v případě použití PHP. Investovaný čas se však určitě vyplatí. Některá vývojová prostředí pro Javu jako například NetBeans umožňují přímý vývoj aplikací na bázi servletů a JSP a umí automaticky upravovat konfiguraci serveru Tomcat podle potřeb. Použití je pak naprosto triviální.
Související odkazy: