Para configurar segui o post do Jean-Francois Arcand's e da Amy Roh's.
Então vamos lá!
Primeiro no Apache, instalar o mod_jk:
apt-get install libapache2-mod-jk
Configurar o conteúdo do arquivo /etc/apache2/mods-available/jk.load:
# Modulo do mod_jk
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
# Arquivo de configuração
JkWorkersFile /etc/apache2/mod_jk_worker.properties
# Arquivo de log
JkLogFile /var/log/apache2/mod_jk.log
# Nível de detalhe dos logs [debug/error/info]
JkLogLevel debug
# Formato das mensagens de log
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indica para enviar SSL KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat define o formato dos requests no Log
JkRequestLogFormat "%w %V %T"
# Envia todos jsp para o GlassFish
JkMount /*.jsp worker1
# Envia todos os acessos ao meu projeto web para o GlassFish
JkMount /WebApplication/* worker1
Na última linha, o WebApplication se refere ao nome do nosso projeto no GlassFish, coloque aqui o nome do teu projeto no GlassFish.
Agora falta configurar o /etc/apache2/mod_jk_worker.properties, com este conteúdo:
# Define 1 worker usando ajp13
worker.list=worker1
# Define as propriedades do worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
Agora vamos ao GlassFish...
No Glassfish configurar as seguintes opções da JVM:
$GLASSFISH_HOME/bin/asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009
E também:
$GLASSFISH_HOME/bin/asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK.propertyFile=/etc/apache2/mod_jk_worker.properties
Para confirmar se ficou bem configurado, verifique o arquivo:
$GLASSFISH_HOME/domains/domain1/config/domain.xml
Procurar neste arquivo por:
<jvm-options>-Dcom.sun.enterprise.web.connector.enableJK=8009</jvm-options>
<jvm-options>-Dcom.sun.enterprise.web.connector.enableJK.propertyFile=/etc/apache2/mod_jk_worker.properties</jvm-options>
Fazer o download do apache-tomcat-5.5.16.zip, e pegar o tomcat-ajp.jar, só serve o jar desta versão, os das versões superiores não funcionam, provocam o seguinte erro no GlassFish:
Caused by: java.lang.NoSuchMethodError: org.apache.coyote.Response.getContentLengthLong()J
Depois do download, procurar o tomcat-ajp.jar dentro do zip:
apache-tomcat-5.5.16/server/lib/tomcat-ajp.jar
E copiar este jar para dentro do GlassFish:
$GLASSFISH_HOME/lib/
Também são precisos os jars commons-modeler e commons-logging, que podem ser adquiridos aqui:
http://commons.apache.org/downloads/index.html
Modeler:
http://commons.apache.org/downloads/download_modeler.cgi
Logging:
http://commons.apache.org/downloads/download_logging.cgi
Copiar estes dois jars também para dentro do:
$GLASSFISH_HOME/lib/
Feito isto, é preciso reiniciar o Apache e o GlassFish, e agora deverá estar funcionando através do Apache:
http://localhost/WebApplication
Assim através do Apache da para acessar os projetos publicados no GlassFish!
O porto 8009 que configuramos para o JK não tem nada haver com o porto web do GlassFish, o mod JK usa um protocolo próprio para comunicar com o Tomcat/AJP, e o GlassFish o que faz é inicia um novo porto usando o JK do Tomcat para poder comunicar com o mod_jk no Apache, e para testar se este porto esta funcionando pode-se usar o telnet e ver se conecta:
telnet localhost 8009
Futuramente pretendo investigar sobre Load Balancing usando o Apache e Glassfish e espero falar sobre isto.
No comments:
Post a Comment