O que é o Jetty

O Jetty é um servidor HTTP e Servlet Container 100% escrito em Java. É o grande concorrente do Tomcat e ficou famoso por ser utilizado como o servlet container do JBoss. Neste artigo será mostrado como utilizar o Jetty, e configurar um plugin no Eclipse para auxiliar no desenvolvimento de aplicações web.

A grande vantagem do Jetty com relação ao Tomcat é a sua fácil configuração, e junto com o Eclipse, é possível desenvolver aplicações de forma mais produtiva, alterando o código fonte das classes Java, sem ser necessário reiniciar a aplicação.

Fazendo o download do Jetty

Faça o download aqui.

Para instalar o Jetty, basta descompactar o arquivo.

Iniciando o Jetty

Para iniciar o Jetty é muito simples. Basta executar o jar start.jar e em poucos segundos o servidor estará no ar. A porta default é 8080.

java -jar start.jar

Para alterar a porta, basta passar o parâmetro de sistema ${jetty.port}:

java -jar -Djetty.port=80 start.jar
A pasta /${jetty.home}/webapps é onde ficam as aplicações (default). Caso você possua um arquivo *.war, basta copiá-lo para esta pasta para fazer o deploy.

Compilação dos JSP’s

Quando o Jetty compilar os jsp´s, os arquivos serão salvos em uma pasta temporária, especificada pelo parâmetro de sistema ${java.io.tmpdir}. Porém por padrão esta pasta é excluída toda vez que o Jetty é iniciado. Desta forma, toda vez que a aplicação for reiniciada, os jsp´s serão compilados novamente, afetando a performance do sistema ou do seu ambiente de testes.

Sendo assim, é possível configurar o Jetty para compilar os jsp´s em outro diretório, onde estes não sejam excluídos ao reiniciar a aplicação. Para isso, basta seguir uma das alternativas abaixo:

  1. Criar a pasta ${jetty.home}/work no diretório do Jetty;
  2. Configurar o parâmetro de sistema ${java.io.tmpdir} para outra pasta;
  3. Criar a pasta WEB-INF/work na sua aplicação;

Abaixo, um exemplo de como iniciar o Jetty e fazer com que os jsp´s compilados sejam salvos na pasta “c:/tmp/work”:

java -Djetty.port=80 -Djava.io.tmpdir=c:/tmp/work -jar start.jar

Iniciando o Jetty pela API

Com a API do Jetty, é possível iniciar um servidor HTTP com poucas linhas de código Java. Ao executar o código abaixo, um servidor HTTP na porta 80 será iniciado em segundos, sendo possível acessar a página (index.jsp) no seguinte endereço:

http://localhost/portal/

Server server = new Server();
    SocketListener listener = new SocketListener();
    listener.setPort(80);
    server.addListener(listener);
    server.addWebApplication("/portal", "c:/temp/portal/");
    server.start();

Para testar o exemplo, crie uma pasta c:/temp/portal/ e coloque um arquivo index.jsp na raiz. Para compilar e rodar o código, os seguintes jar´s precisam estar no classpath:

Ø $ {
        jetty_home
    }
    /lib/org.mortbay.jetty.jar
    Ø $ {
        jetty_home
    }
    /lib/javax.servlet.jar
    Ø $ {
        jetty_home
    }
    /ext/jasper - compiler.jar
    Ø $ {
        jetty_home
    }
    /ext/jasper - runtime.jar
    Ø $ {
        jetty_home
    }
    /ext/ant.jar

Iniciando o Jetty com um arquivo XML

Continuando com a flexibilidade do Jetty, ainda é possível iniciá-lo através de um arquivo de configuração em XML. Esta é a prática mais abordada, devido a sua fácil utilização.

Crie um arquivo portal.xml na pasta onde o Jetty está instalado e execute o comando abaixo:

java -jar start.jar  portal.xml

Arquivo portal.xml:

portal.xml

Agora você pode novamente acessar a aplicação:

http://localhost/portal/

Note que o arquivo de configuração em XML é um espelho da API do Jetty. O exemplo que foi utilizado para iniciar o Jetty pela API ou XML é o mesmo. No arquivo XML, foi declarado a classe Server, e os métodos addListener e addWebApplication foram chamados, de forma semelhante ao programa Java mostrado anteriormente.

Utilizando o Jetty com o Eclipse

Para facilitar ainda mais a utilização do Jetty, existe um plugin para o Eclipse chamado Jetty Launcher (Figura 01).

O Jetty Launcher foi descontinuado.

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

O plugin pode ser instalado pelo Update Manager. Isto pode ser feito pelo menu Help = Software Updates = Find and Install. Instalar o plugin e reiniciar o Eclipse.

Com o Jetty Launcher é possível rodar o Jetty de uma forma rápida e simples, e ainda utilizar o debug do Eclipse. Para gerenciar o classpath do Jetty, basta adicionar os jar’s necessários ao classpath do Projeto (“build path”), e todos os jar’s utilizados serão automaticamente incluídos no classpath, mesmo aqueles que não estão na pasta WEB-INF/lib.

Os familiares com o Tomcat poderão perceber uma ligeira diferença de performance com relação ao tempo que o Jetty leva para iniciar a aplicação. Mas com certeza a principal vantagem é quando o Jetty é iniciado em modo Debug, sendo possível alterar o código fonte das classes e salvá-las pelo Eclipse, de forma que as alterações serão refletidas automaticamente quando um “refresh” for feito no browser.

Utilizando o Jetty Launcher

É possível iniciar o Jetty para qualquer projeto Java dentro do Eclipse. Para isso, basta que o projeto tenha a seguinte estrutura de diretórios, comum a todas as aplicações web:

  1. Jetty (projeto)
  2. à src (source folder)
  3. *.java
  4. à web (Este diretório será utilizado na hora de rodar o Jetty)
  5. WEB-INF
  6. classes (as classes compiladas vão aqui)
  7. lib (jar’s necessários)
  8. à index.jsp

Para iniciar o Jetty, entre no menu Run = Jetty Web e adicione uma nova configuração:

  1. Informe o projeto Java criado;
  2. Selecione a pasta onde o Jetty está instalado;
  3. Selecione a pasta web criada no projeto. Esta página contém os jsp´s e a pasta WEB-INF/classes.
  4. Configure o nome do contexto de sua aplicação, por exemplo: /portal
  5. Configure a Porta, por exemplo: 80

Outra opção é utilizar um arquivo XML para iniciar o Jetty. Para isto selecione a opção “Use a Jetty XML configuration file”, e selecione o arquivo criado anteriormente. Esta abordagem pode ser útil quando mais de um contexto precisar ser iniciado ao mesmo tempo, uma vez que no arquivo XML pode ser adicionada várias aplicações web, conforme visualizado abaixo:

“Use a Jetty XML configuration file
Imagem do Jetty
Figura 01. Imagem do Jetty.

Ao clicar em “Run ou Debug” o Jetty será iniciado e é possível acessar a aplicação através da seguinte url:

http://localhost/portal/

Para fazer o debug dos Servlets, sempre utilize o menu “Debug” para iniciar o Jetty. Outra vantagem de iniciar em modo debug, é que as alterações feitas no corpo dos métodos poderão ser visualizadas sem a necessidade de reiniciar o Jetty, basta fazer um refresh no browser. Isto pode ser útil para aplicações que levam muito tempo para iniciar ou se simplesmente você não pode perder a sessão do usuário.

Este tutorial apresentou o Jetty, um consagrado servlet container que vem sendo utilizado de forma eficiente em muitos projetos, como por exemplo: JBoss e Geronimo.

Links Úteis

Saiba mais sobre Java ;)

  • Carreira Programador Java:
    Nesse Guia de Referência você encontrará o conteúdo que precisa para iniciar seus estudos sobre a tecnologia Java, base para o desenvolvimento de aplicações desktop, web e mobile/embarcadas.
  • O que é Java?:
    Neste curso você aprenderá o que é o Java, tecnologia para desenvolvimento de software mais utilizada pelos programadores em todo o mundo.
  • Java: Declaração e utilização de classes:
    Nesta documentação você aprenderá a declarar e utilizar classes na linguagem de programação Java.