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”>
<!–
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
-23.569894
-46.691472