Jetty Howto

Se voce esta procurando uma forma fácil e rápida de colocar uma servlet em produção a minha sugestão ‘e use o container web Jetty.

Vou mostrar abaixo como eu prefiro organizar os arquivos do container web, servlet, ajustes em configuração etc…

Vamos usar um pacote do site http://dist.codehaus.org/jetty

wget http://dist.codehaus.org/jetty/jetty-hightide-7.4.3/jetty-hightide-7.4.3.v20110701.zip

Minha sugestão de path para descomprimir /usr/local,  o ideal ‘e adotar um padrão :)  assim o ambiente de producao tende a fica homogêneo.

unzip jetty-hightide-7.4.3.v20110701.zip;mv  jetty-hightide-7.4.3.v20110701   /usr/local/jetty-7.4.3

No pacote padrão vem habilitado o uso de configs que nao pretendo usar🙂, pois e default, para desativar  deve-se comentar todas as entradas do arquivo start.ini

/usr/local/jetty-7.4.3/start.ini

Pronto o jetty esta instalado e com os arquivos de conf default estão desativados, também e possível retirar do jetty os recursos que você nao ira usar em sua servlet mas nao e escopo deste howto. Veja documentação completa em http://wiki.eclipse.org/Jetty

Nas empresas por onde passei na maioria dos casos usávamos SO Linux CentOS, Suse ou RedHat e para facilitar a implantação dos sistemas usávamos repositório de pacotes rpm interno, eu prefiro gerar o pacote do jetty pois os pacotes disponíveis no repo do projeto nao sao muito flexíveis…. veja link abaixo para baixar SPEC para gerar um pacote😉.

Para a instalação da servlet vamos precisar basicamente de dois arquivos🙂, o <servlet>.war e <servlet>.xml, onde o path padrão de instalação de todas as servlets seram /opt/webapps/<N…. servlets>

O arquivo <servlet>.xml contem as informações para iniciar a servlet como este abaixo.

<?xml version=”1.0″?>
<!DOCTYPE Configure PUBLIC “-//Mort Bay Consulting//DTD Configure//EN” “http://jetty.mortbay.org/configure.dtd”&gt;
<!–
JETTY_HOME=”/usr/local/jetty-7.4.3″
JAVA_HOME=”/usr/java/jre1.6.0_24″
JETTY_CONSOLE=”/var/log/servlet/”
JETTY_USER=”servletuser”
JAVA_OPTIONS=”-server -Xms512m -Xmx512m -Dfile.encoding=UTF-8 -Dorg.mortbay.xml.XmlParser.NotValidating=true -Dsun.net.inetaddr.ttl=60″
–>
<Configure>
<Set name=”ThreadPool”>
<New>
<Set name=”minThreads”>10</Set>
<Set name=”maxThreads”>20</Set>
<Set name=”detailedDump”>false</Set>
</New>
</Set>
<Call name=”addConnector”>
<Arg>
<New>
<Set name=”host”><SystemProperty name=”jetty.host” default=”servletip.network” /></Set>
<Set name=”port”><SystemProperty name=”jetty.port” default=”666″/></Set>
<Set name=”forwarded”>true</Set>
<!– Set name=”maxIdleTime”>30000</Set–>
<Set name=”Acceptors”>2</Set>
<Set name=”statsOn”>false</Set>
<!– Set name=”confidentialPort”>8443</Set–>
<Set name=”lowResourcesConnections”>5000</Set>
<Set name=”lowResourcesMaxIdleTime”>5000</Set>
<Set name=”responseBufferSize”>65536</Set>
<Set name=”headerBufferSize”>32768</Set>
</New>
</Arg>
</Call>
<Set name=”handler”>
<New>
<Set name=”contextPath”>/</Set>
<Set name=”war”>/opt/webapps/servlet/servlet.war</Set>
</New>
</Set>
</Configure>

Existem varias formas de criar o arquivo de start do jetty este que passei ‘e apenas um exemplo mas atende perfeitamente a maioria dos casos. Saiba mais em http://wiki.eclipse.org/Jetty

Por experiências anteriores ‘e essencial usar script único de apoio, que leia o servlet.xml para iniciar a servlet, facilite a vida de quem ira cuidar da produção😉.

Anexo1 Jetty

Os parâmetros a serem usados no servlet.xml podem mudar de versão para versão, se algo der errado leia a documentação.

Anexo2 Servlet

Arquivos de config devem ser lidos a partir do contexto, procure evitar path fixo isto dificulta a manipulação da servlet no dia a dia, este recurso pode evitar um build de ultima hora😉.

Se você nao ‘e programador procure conversar com o time que desenvolve para combinar a organização dos arquivos da servlet.

* Arquivos de config que porem ser alterados com certa freqüência devem ficar fora do .war (config de conexão com banco de dados, log4j, parâmetros de ativação de funcionalidade).

* Evite ter que fazer restart da servlet combine a criação de recursos para reler as configurações caso um arquivo seja modificado.

Arquivos disponíveis em https://github.com/hbombonato/sysadmin_tools/tree/master/SPEC/jetty

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s