Modulo weblogic en Apache II

Una rapida y me voy con mi amigo el gaitero que hay que empezar fuerte el fin de año!!
En el anterior post ponia un ejemplo pero me parecia bien dar una buena explicacion a este modulo.

El apache estará por delante de weblogic, es decir, apache servirá el contenido estático y delegará en weblogic por debajo para el contenido dinámico. La configuración del apache debe ser la siguiente:

  • El contenido estático será servido directamente por apache (gif, html, jpg, etc)
  • El contenido dinámico será servidor por weblogic a través de apache (jsp, servlets, etc, lo que weblogic nos sirva)

En este ejemplo vamos a instalar el Apache en la misma maquina que weblogic, por lo que llamaremos al servidor “server” y a la aplicacion “appweb”. Entre medias añadiremos una URI como contexto “web”.
Por ejemplo estas dos urls deberian servir el mismo contenido:
http://server/appweb/GeneralServlet?pageOperation=LOGIN_APP

http://server:7001/appweb/GeneralServlet?pageOperation=LOGIN_APP
Descargamos Apache 2.0 (tiene que ser esta version para weblogic 8.1.5) e instalamos el paquete:

tar -xvzf httpd-2.0.63.tar.gz
cd httpd-2.0.63
./configure –prefix /home/weblogic/apache-2.0.63
make
make install

Copiamos los modulos que trae weblogic en el path de Apache:

cp /home/weblogic/bea/weblogic81/server/lib/linux/i686/mod_* /home/weblogic/apache-2.0.63/lib

Editamos el fichero httpd.conf de Apache y añadimos lo siguiente:

LoadModule weblogic_module lib/mod_wl_20.so

<Location /web>
SetHandler weblogic-handler
PathTrim /web
</Location>

<IfModule mod_weblogic.c>
WebLogicHost 192.168.0.100
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>

y reniciamos el apache para ver que no ha dado un error apache. Estaria bien mirar los logs.
Este modulo sirve para decirle al apache (puerto 80) que dependiendo de que filtrado hagamos en nuestra configuracion, sirva los contenidos de weblogic (dinamicos) o los de apache. Esto se consigue con dos metodos de “filtrado”, uno es filtrar el tipo de extension MIME y el otro es hacer una redireccion por URL a modo de proxy inverso (yo lo llamo asi, pero en realidad es una reescritura de URL). Todo esto lo he añadido al fichero de configuracion (home/weblogic/apache-2.0.63/conf/httpd.conf):

<Location /web>
SetHandler weblogic-handler
PathTrim /web
</Location>

Esto crea un contexto (web) en Apache que redirecciona (mapea) hacia el modulo de weblogic definido abajo. PathTrim? indica el string recortado para servir la URL mapeada. Por ejemplo la URL http://server/web/appweb se redireccionara a http://192.168.0.100:7001/appweb.

<IfModule mod_weblogic.c>
WebLogicHost 192.168.0.100
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>

Esto hace que todo contenido de Apache filtrando la extension “.jsp” sea Weblogic el encargado de manejarlo. Si ambas estan habilitadas, tiene preferencia la redireccion por contexto. (“if both MIME type and proxying by path are enabled, proxying by path takes precedence over proxying by MIME type”)

El ejemplo actual es: http://server/web/appweb

Prueba de Location: Funciona a modo de contexto.

<Location /prueba>
SetHandler weblogic-handler
PathTrim /prueba
</Location>

<IfModule mod_weblogic.c>
WebLogicHost 192.168.0.100
WebLogicPort 7003
</IfModule>

Con esto conseguimos que en el Apache el path “/prueba/appweb” redireccione a http://192.168.0.100:7003/appweb&#8221; del Weblogic. Por ejemplo, escribiendo:

http://server/prueba/appweb/login.jsp
redirecciona transparentemente a:

http://192.168.0.100:7003/appweb/login.jsp

Prueba de MatchExpression?: Hace un filtrado por el tipo de extension que le pases al apache. Usamos el ejemplo anterior, quitando la configuracion de Location, pero añadiendo la directiva MatchExpression?:

<IfModule mod_weblogic.c>
WebLogicHost 192.168.0.100
WebLogicPort 7003
MatchExpression *.jsp
</IfModule>

Con esto conseguimos que cualquier MIME definida en MathExpression?, la redireccione al Weblogic y sea este el encargado de servir las paginas. Nos olvidamos del contexto anterior y trataremos al apache como si fuera el propio weblogic. Por ejemplo escribiendo:
http://server/appweb/

no encuentra ninguna cadena .jsp, con lo que nos da error. Pero poniendo la pagina del login principal:

http://server/appweb/login.jsp

Nos lanza transparentemente a:

http://192.168.0.100:7003/appweb/login.jsp

Funciona!!!. Si en nuestra aplicacion tenemos otros elementos como imagenes .gif, vemos en la URL que faltan dichos elementos que no se muestran. Esto es porque son imagenes .gif y no le hemos dicho al apache que este tipo de elementos los trate tambien el weblogic, por lo tanto añadimos una linea de MatchExpression?:

<IfModule mod_weblogic.c>
WebLogicHost 192.168.0.100
WebLogicPort 7003
MatchExpression *.jsp
MatchExpression *.gif
</IfModule>

Ahora accedemos a:

http://server/appweb/login.jsp

y vemos que los gif tambien se muestran correctamente.

Prueba de cadenas con MatchExpression?

Probamos con:

<IfModule mod_weblogic.c>
WebLogicHost 192.168.0.100
WebLogicPort 7003
MatchExpression *login*
</IfModule>

Y vemos que mediante la cadena “login” hace el filtrado y nos redirecciona a la pagina de weblogic. Lo probamos accediendo a:

http://server/appweb/login (fijarse que no he puesto extension)

nos redirecciona transparentemente a:

http://192.168.0.100:7003/appweb/login.jsp

pero pasa lo mismo de antes con las imagenes gif. Por consiguiente añadiriamos la cadena:

MatchExpression? *gif (vemos que no lleva punto “.”)

Etiquetas: , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: