Jetty Cluster com WADI
Autor: Marcio Ghiraldelli | Publicado: 2010-07-27T10:06:00-07:00

Mortbay Jetty é uma das mais leves implementações Java Servlet 2.0 existentes. A poderosa combinação Jetty + Spring fornece ao desenvolvedor suporte que não fica devendo a nenhum badalado servidor de aplicações JEE do mercado, em termos de flexibilidade e escalabilidade. Escala horizontal? Sim! Veja como utilizar o WADI Application Distribution Infrastructure, que utilizando o tribes do Tomcat, mantem o estado da sessão entre vários nós de Jetty, através de conexões TCP/IP:1) jetty-6.1.112) Baixe as libs necessárias no lib de cada jettyhttp://wadi.codehaus.org/ Download WADI 2.1.22.1.2 Release Artifacts:    * wadi-aop-2.1.2.jar    * wadi-console-2.1.2.war    * wadi-core-2.1.2.jar    * wadi-group-2.1.2.jar    * wadi-jgroups-2.1.2.jar    * wadi-tribes-2.1.2.jar    * wadi-webapp-2.1.2.warLibs adicionais:jetty-wadi-session-manager-7.0.0.jarasm-3.1.jarasm-attrs-1.5.3.jarasm-commons-3.1.jarasm-tree-3.1.jarasm-util-3.1.jarcglib-2.1_3.jaredu.emory.mathcs.backport-3.1.0.jartomcat-juli.jarcommonns-loggin-1.1.1.jartribes-6.0.28.jar3) Defina sua aplicação sob um contexto tendo como interceptador do administrador da sessão o WadiSessionManager. jetty.xml exemplo: <?xml version="1.0"  encoding="ISO-8859-1"?><!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"><!-- ==================================================================Configure and deploy the test web application in $(jetty.home)/webapps/testNote. If this file did not exist or used a context path other that /testthen the default configuration of jetty.xml would discover the testwebapplication with a WebAppDeployer.  By specifying a context in thisdirectory, additional configuration may be specified and hot deployments detected.===================================================================== -->                                                 127.0.0.1                                         <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->   <!-- Required minimal context configuration :                        -->   <!--  + contextPath                                                  -->   <!--  + war OR resourceBase                                          -->   <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->   /wadi   <!-- /webapps/test -->   /java/jetty-6.1.11/webapps/SessionTest.war   <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->   <!-- Optional context configuration                                  -->   <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->   <!--   false   false   /etc/webdefault.xml   -->     CLUSTER    http://localhost:/test                           2     24     360     true     false       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->     <!-- Uncomment these elements to enable session persistence across   -->      <!-- context or container restart.                                   -->     <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->     <!--                            jdbc:mysql://localhost:3306/TEST       wadi       wadi_pass                 SESSION_TABLE      BYTEA      true      false               -->               4) Inicie os seus nós, passando como parâmetro o nome único para cada instância, variáveis que são interpretadas no jetty.xml:java -Djetty.port=7070 -Dnode.name=orange -Djava.net.preferIPv4Stack=true -jar start.jar etc/jetty-wadi-cluster.xmljava -Djetty.port=8080 -Dnode.name=red -Djava.net.preferIPv4Stack=true -jar start.jar etc/jetty-wadi-cluster.xmljava -Djetty.port=9090 -Dnode.name=blue -Djava.net.preferIPv4Stack=true -jar start.jar etc/jetty-wadi-cluster.xml Voilá! Estando os nós em uma rede acessível por TCP/IP Multicast, os nós automaticamente se comunicarão e a sessão estará sincronizada entre eles.http://wadi.codehaus.org/http://docs.codehaus.org/display/JETTY/Jetty+Clustering+with+WADI