Embutindo o Jetty em sua aplicação Web Java.

Comecei estudar o servidor Jetty atraido pela característica de se poder imbutí-lo em uma aplicação Web. Habitualmente por mim para aplicações desenvolvidas em java Web, empacoto-á em um arquivo de extensão *.war e o mesmo é implantado (deployed) em uma determinada pasta de um servidor/container , como exemplo, no TOMCAT este arquivo é implantado na pasta $TOMCAT_HOME\webapps. O container (Tomcat) tratará de desempacotar a aplicação Web e serví-la para a intranet ou internet.

(entenda servidor e container a mesma coisa para este post)

Como já disse, o que achei interessante do Jetty é poder fazer o contrário dos procedimentos tradicionais acima descritos, ou seja, inserir o container (Jetty) na minha aplicação.

Qual a vantagem de se fazer isso ?

Bom, a vantagem que eu vislumbro é poder distribuir uma aplicação WEB para o seu usuário sem que o mesmo tenha que ficar colocando-á em um diretório específico de um programa (container)  que ele não faz a mínima idéia do que seja, ou seja, entregar a solução absolutamente pronta para o seu usuário final.

Pretendo, neste post, explicar o passo a passo que realizei para embutir o servidor Jetty em algumas aplicações web de exemplo. Vou fazer isso maneira bastante resumida deixando a trilha que percorri para conseguir realizar esta tarefa, mesmo por quê, não me considero nenhum profundo conhecedor deste container (Jetty). Deixarei também, os projetos que realizei na IDE Eclipse disponíveis para download (mais abaixo).

O primeiro passo que dei, foi criar uma aplicação no IDE Eclipse e colocar em seu classpath a biblioteca de código referente à Servlets. Como já tinha o container Tomcat instalado em minha máquina, simplesmente copiei a biblioteca (servlet-api.jar) para dentro do meu projeto oriúnda do Tomcat na pasta $TOMCAT_HOME/lib. Esta biblioteca de código é importante pois teremos que programar Servlets, e sem ela, o programa não compilará.

Bibliotecas de código. Em destaque servlet-api.jar

Bibliotecas de código. Em destaque servlet-api.jar

Baseado na documentação do Jetty (capítulo Embedded Jetty) também fiz o download do jetty-all-9.0.3v20130506.jar (destacada na imagem abaixo) simplesmente copiando a url em meu navegador. Destaquei a url da servlet-api.jar mencionada na imagem abaixo. Clicando na imagem você navegará para a página que contém essas instruções.

download das bibliotecas necessárias

download das bibliotecas necessárias

O arquivo jetty-all.jar  contém todas as classes do servidor jetty em um único jar conforme descrito nesta página, porém, logo em seguida, iremos ver que apenas este jar não me foi suficiênte para compilar as JSPs.

Após realizado estes passos e feito alguns exemplos, pude perceber que, apesar de funcionando, o meu servidor Jetty não estava compilando e servindo arquivos JSP. Através desta página (Jetty/Howto/Configure JSP – eclipsepedia) pude perceber que me faltavam alguns arquivos jars para serem configurados no meu classpath. Conforme orientação contida na seção Compiling JSP  da página supra-mencionada, realizei o download do servidor Jetty para poder baixar os arquivos.

Download do servidor Jetty

Página de download do servidor Jetty

Então, ainda conforme orientações da mesma seção (Compiling JSP), percorri o caminho $JETTY_HOME/lib/jsp  e copiei todos os jars para dentro do classpath do meu programa de testes conforme ilustração abaixo:

Outros jars necessários para Jetty compilar JSP

Outros jars necessários para Jetty compilar JSP

Faça o DOWNLOAD dos 5 projetos eclipse clicando aqui.

Faça, também, o download do projeto TesteJetty5 exportado em um arquivo jar. Para iniciá-lo clique no arquivo init.bat e navegue para o endereço http://localhost:8080 em seu navegador.

Explicação sobre os projetos:

O primeiro projeto, TesteJetty, contém vários pequenos estudos sobre como embutir o servidor Jetty em sua aplicação. Pode se dizer que cada pacote dentro do programa contém um exemplo independente do outro. Os demais projetos, TesteJetty2, 3, 4 e 5 são pequenas aplicações web independentes uma das outras. Procurei ilustrar como seria embutir o servidor Jetty em uma aplicação que estava sendo preparada para ser distribuída em um servidor Tomcat, ou seja, a mesma possui o Deployment Descriptor (web.xml), arquivos JSP e etc.

No projeto 4 (TesteJetty4) foi necessário se definir o Deployment Descriptor (web.xml) conforme orientações contidas neste link (também citado abaixo) pois o Jetty não estava interpretando as Expressions Languages contidas nas JSP.

Your web.xml should contain reference to web-app_2_4.xsd schema, like

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      version="2.4">

Se você teve problemas ao utilizar o servidor Jetty em uma máquina que não possuía a JDK instalada mas apenas a JRE, veja então:
Embutindo o Jetty em sua aplicação Web Java – páginas JSP pré compiladas.

 

Links interessantes:

– http://www.eclipse.org/jetty/

– http://www.eclipse.org/jetty/documentation/current/

– http://download.eclipse.org/jetty/stable-9/dist/

– http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty

– http://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld

– http://wiki.eclipse.org/Jetty/Howto/Configure_JSP

Anúncios
Esta entrada foi publicada em Java, Servlet & JSP, Web com as etiquetas , , , , . ligação permanente.

Uma resposta a Embutindo o Jetty em sua aplicação Web Java.

  1. Pingback: Embutindo o Jetty em sua aplicação Web Java – páginas JSP pré compiladas. | Pedro Abs

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s