Advanced Services | Jetty |
Jetty ist ein kleiner, aber leistungsfähiger Webserver, der vollständig in Java geschrieben ist. Ursprünglich entwickelt von Codehaus (jetty.codehaus.org/jetty/) hat mittlerweile Eclipse (www.eclipse.org/jetty/) die weitere Entwicklung übernommen. Wie Tomcat verfügt Jetty über einen Servletcontainer. Eine ganze Reihe von Firmen setzen Jetty professionell ein. Auf docs.codehaus.org/display/JETTY/Jetty+Powered findet man eine Übersicht über Firmen die Jetty verwenden.
Der Link www.eclipse.org/jetty/downloads.php führt zur Übersichtsseite. Von hier aus führt Jetty Downloads direkt zu den Dateien. Zur Zeit (Januar 2013) ist Jetty 8 (jetty-distribution-8.1.8.v20121106.tar.gz) die aktuelle Version, Jetty 9 befindet sich aber bereits im Stadium M3.
Die folgenden Angaben beziehen sich auf folgende Umgebung: Windows XP (alle Updates), Jetty 8, Java 7 (JDK und JRE).
Installation heißt hier nur Entpacken. Welches Verzeichnis man dabei wählt ist egal, hier hat man die freie Wahl.
$JETTY_HOME/start.ini (Startparameter eintragen)
$JETTY_HOME/etc/webdefault.xml (JSP Servlet konfigurieren)
$JETTY_HOME/etc/jetty.xml (Server konfigurieren)
Wie Tomcat, Glassfish und JBoss belegt auch Jetty den Port 8080. Hat man mehrere Webserver zu Testzwecken installiert, so muß man den Port ändern. Dazu öffnet man die Datei jetty.xml in $JETTY_HOME/etc/ und ändert im folgenden Abschnitt die rote Zeile entsprechend ab. Da als https-Port gerne 8443 gewählt wird empfiehlt es sich, auch diesen Port zu ändern.
<!-- =========================================================== --> <!-- Set connectors --> <!-- =========================================================== --> <Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> <Set name="host"><Property name="jetty.host" /></Set> <Set name="port"><Property name="jetty.port" default="8080"/></Set> <Set name="maxIdleTime">300000</Set> <Set name="Acceptors">2</Set> <Set name="statsOn">false</Set> <Set name="confidentialPort">8443</Set> <Set name="lowResourcesConnections">20000</Set> <Set name="lowResourcesMaxIdleTime">5000</Set> </New> </Arg> </Call>
Im Verzeichnis $JETTY_HOME/ befindet sich die Datei start.jar. Öffnet man ein Konsolfenster und wechselt in das Verzeichnis und gibt java -jar start.jar ein, so startet Jetty. das Konsolfenster bleibt nach dem Start geöffnet und wartet auf weitere Eingaben. Durch Eingabe von Ctrl c kann man Jetty wieder beenden.
Beim Starten der mitgelieferten Java Server Pages
kann es zu folgender Fehlermeldung kommen.
PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
Diese Fehlermeldung ist irreführend. Es reicht auch wenn $JAVAHOME auf eine JRE zeigt.
Lösung:
Im Rootverzeichnis von Jetty in der Datei start.ini die folgende Zeile ergänzen.
-Dorg.apache.jasper.compiler.disablejsr199=true
JSR 199 realisiert eine "service provider API that allows a Java program to select and invoke a Java Language Compiler programmatically". Diese Option ist per default eingeschaltet, aber der zugehörige Java Compiler wird nicht gefunden. Deaktiviert man diese Option so wird der Compiler des installierten JDK problemlos gefunden und die JSP's können übersetzt werden (auch mit Java 7 !).
Siehe: wiki.eclipse.org/Jetty/Howto/Configure_JSP
Man legt eine war-Datei einfach ins Verzeichnis $JettyHome/webapps. Jetty erkennt das neue war-File. Ein Servlet ist dann unter dem Namen des war-Files und dem in der web.xml angegebenen Urlpattern erreichbar.