Jetty
Jetty es un servidor HTTP 100% basado en Java y un contenedor de Servlets escrito en Java. Jetty se publica como un proyecto de software libre bajo la licencia Apache 2.0. Jetty es utilizado por otros proyectos, como por ejemplo los servidores de aplicación JBoss y Apache Geronimo; y por el plug-in Google Web Toolkit para Eclipse. -Wikipedia
Verifica la instalación de JAVA (JRE/JDK):
which java
,which javac
,java -version
yjavac -version
.Descarga el archivo comprimido en formato zip encontrado en http://www.eclipse.org/jetty/download.html.
En este caso se ha descargado el archivo
jetty-distribution-9.4.12.v20180830.zip
en el directorio$HOME/Downloads
.Crea el directorio
$HOME/www/jetty01
y accede a él:alumno@servidor:~$ mkdir -p $HOME/www/jetty01 alumno@servidor:~$ cd $HOME/www/jetty01
Descomprime el archivo
jetty-distribution-9.4.12.v20180830.zip
, obteniendo de él el directoriojetty-distribution-9.4.12.v20180830/
y accede a dicho directorio recien creado:alumno@servidor:~/www/jetty01$ unzip -o $HOME/Downloads/jetty-distribution-9.4.12.v20180830.zip alumno@servidor:~/www/jetty01$ cd jetty-distribution-9.4.12.v20180830
Crea el directorio
base
y accede a él:alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830$ mkdir base alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830$ cd base
Ejecuta el siguiente comando para establecer el directorio
base
como un directorio separado de los archivos ejecutables y de configuración propios de Jetty:alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830/base$ java -jar ../start.jar --create-startd --add-to-start=http,deploy MKDIR : ${jetty.base}/start.d INFO : webapp transitively enabled, ini template available with --add-to-start=webapp INFO : server transitively enabled, ini template available with --add-to-start=server INFO : security transitively enabled INFO : servlet transitively enabled INFO : http initialized in ${jetty.base}/start.d/http.ini INFO : deploy initialized in ${jetty.base}/start.d/deploy.ini MKDIR : ${jetty.base}/webapps INFO : Base directory was modified
Al terminar el directorio
$HOME/www/jetty01/jetty-distribution-9.4.12.v20180830/base
tendrá la siguiente estructura:alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830/base$ pwd && tree /home/alumno/www/jetty01/jetty-distribution-9.4.12.v20180830/base . ├── start.d │ ├── deploy.ini │ └── http.ini └── webapps 2 directories, 2 files
Crea el directorio
webapps/ROOT
que será el directorio ráiz:alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830/base$ mkdir webapps/ROOT
Ejecuta a Jetty indicando el puerto TCP a usar:
alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830/base$ java -jar ../start.jar jetty.http.port=1234 2018-01-28 12:24:29.975:INFO::main: Logging initialized @669ms to org.eclipse.jetty.util.log.StdErrLog ... ... ... 2018-01-28 12:24:30.747:INFO:oejs.Server:main: Started @1441ms
Observarás que la terminal se queda bloqueada mientras Jetty esté en ejecución.
Verifica la ejecución de Jetty, en otra terminal:
alumno@servidor:~$ netstat -plutn Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 1180/java
En este caso Jetty (el proceso java) está atendiendo (LISTEN) conexiones en todas las interfaces de red (0.0.0.0) en el puerto TCP 1234.
Para realizar una petición a Jetty haremos uso de un navegador web, simplemente visita la dirección http://127.0.0.1:1234 o bien http://localhost:1234.
Configuración de Jetty para el despliegue de contenido estático
Para exponer recursos estáticos dentro de la aplicación web ROOT en Jetty es necesario crear un descriptor de despliegue
(archivo en formato XML). Crea el archivo webapps/ROOT.xml
con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
<Set name="contextPath">/</Set>
<Set name="handler">
<New class="org.eclipse.jetty.server.handler.ResourceHandler">
<Set name="welcomeFiles">
<Array type="String">
<Item>index.html</Item>
</Array>
</Set>
<Set name="resourceBase">/home/alumno/www/jetty01/jetty-distribution-9.4.12.v20180830/base/webapps/ROOT</Set>
<Set name="directoriesListed">true</Set>
</New>
</Set>
</Configure>
Al terminar la estructura del directorio base
será:
alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830/base$ pwd && tree
/home/alumno/www/jetty01/jetty-distribution-9.4.12.v20180830/base
.
├── start.d
│ ├── deploy.ini
│ └── http.ini
└── webapps
├── ROOT
└── ROOT.xml
3 directories, 4 files
NOTAS:
- El atributo
welcomeFiles
establece el archivo por default que será buscado y entregado (en el disco duro) por Jetty a los clientes:index.html
. - El atributo
resourceBase
establece el directorio ráiz para la busqueda y entrega de recursos estáticos por parte de Jetty.
Reinicia a Jetty y podrás crear-depositar contenido estático en el directorio
base/webapps/ROOT
.
En las lecturas con respecto al protocolo HTTP encontrarás términos como GET, POST, Header o Cabecera, User-Agent, etc. Para que dichos términos tengan un sentido más práctico, mientras Jetty está en ejecución, en Firefox pulsa el juego de teclas Ctrl+Shift+Q, lo anterior te abrirá una ventana incrustada en Firefox, accede a Jetty y observa la información otorgada por Web Developer Tools en su pestaña Red o Network.
Lecturas
- Jetty - The Definitive Reference (9.4.x). Documentación oficial de Jetty para la versión 9.4.x.