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 -versionyjavac -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.zipen el directorio$HOME/Downloads.Crea el directorio
$HOME/www/jetty01y accede a él:alumno@servidor:~$ mkdir -p $HOME/www/jetty01 alumno@servidor:~$ cd $HOME/www/jetty01Descomprime 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.v20180830Crea el directorio
basey 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 baseEjecuta el siguiente comando para establecer el directorio
basecomo 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 modifiedAl terminar el directorio
$HOME/www/jetty01/jetty-distribution-9.4.12.v20180830/basetendrá 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 filesCrea el directorio
webapps/ROOTque será el directorio ráiz:alumno@servidor:~/www/jetty01/jetty-distribution-9.4.12.v20180830/base$ mkdir webapps/ROOTEjecuta 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 @1441msObservará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/javaEn 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
welcomeFilesestablece el archivo por default que será buscado y entregado (en el disco duro) por Jetty a los clientes:index.html. - El atributo
resourceBaseestablece 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.