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
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:
- Criar a pasta ${jetty.home}/work no diretório do Jetty;
- Configurar o parâmetro de sistema ${java.io.tmpdir} para outra pasta;
- 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:
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:
- Jetty (projeto)
- à src (source folder)
- *.java
- à web (Este diretório será utilizado na hora de rodar o Jetty)
- WEB-INF
- classes (as classes compiladas vão aqui)
- lib (jar’s necessários)
- à index.jsp
Para iniciar o Jetty, entre no menu Run = Jetty Web e adicione uma nova configuração:
- Informe o projeto Java criado;
- Selecione a pasta onde o Jetty está instalado;
- Selecione a pasta web criada no projeto. Esta página contém os jsp´s e a pasta WEB-INF/classes.
- Configure o nome do contexto de sua aplicação, por exemplo: /portal
- 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:
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
- Vagas de programação: Precisamos falar sobre isso:
Neste DevCast vamos bater um papo sobre a vagas para trabalhar como programador e como os candidatos devem se preparar para enfrentar os processos seletivos. - Android InputMask e Saripaar 2:
Acompanhe neste curso o processo de criação de um formulário para Android. - O que é Grunt?:
Aprenda neste curso o que é o Grunt e como utilizá-lo em seus projetos para automatizar tarefas comuns do desenvolvimento front-end.
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.