Conectar un Apache con un oc4j con mod_jk

Balancear con apache a un oc4j

Introducción

Mod_jk es un módulo de Apache que nos permite conectar el Apache con otros servidores (tomcat, oc4j) a través del protocolo ajp13. Aunque Oc4j tiene un modulo para Apache llamado mod_oc4j, yo no he conseguido que me funcione con un OC4J Standalone y un Apache Genérico (Sin utilizar el que traen alguans versiones de Oc4j). Para balancear contra servidores de oc4j tendremos que seguir los pasoso descritos en la guía de balancear tomcats con apache, pero en vez de hacer los pasos de configurar el tomcat, tendremos que hacer los siguientes.

Configurar el OC4J

Lo primero será configurar el Oc4j para que escuche peticiones por el protocolo ajp13.

Vamos a crear un fichero ajp-web-site.xml en el que le indicaremos que escuche en un puerto con el protocolo ajp13 y las aplicaciones que podrá servir por este protocolo. Un ejemplo de este fichero para que escuche por el puerto 3000 con el protocolo ajp13 y que sirva una aplicación de nombre MiAplicacion con un módulo de nombre MiModulo y en un contexto MiContexto sería el siguiente (podemos poner tantas líneas web-app como módulos queramos que sirva):

<web-site xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/web-site-10_0.xsd" port="3000" protocol="ajp13" display-name="OC4J 10g (10.1.3) Default Web Site" schema-major-version="10" schema-minor-version="0" >
    <default-web-app application="default" name="defaultWebApp" />
    <web-app application="MiAplicacion" name="MiModulo" load-on-startup="true" root="/MiContexto" />
</web-site>

Luego tendremos que ir a la carpeta C:\oc4j\j2ee\home\config y editar el fichero server.xml. En el tendremos que añadir la siguiente línea:

<application-servet ...>
    ...
    <web-site path="./ajp13-web-site.xml" />
    ...
</application-server>

Y por último reiniciamos el servidor.

Configurar el Apache

En nuestro archivo worker.properties tendremos que añadir la definición para el oc4j. Le indicamos el puerto, url y protocolo y lo añadimos a la lista de los workers:

worker.list=...,oracle
... 
worker.oracle.port=3000
worker.oracle.host=localhost
worker.oracle.type=ajp13

Luego tendremos que añadir al fichero de configuración del apache httpd.conf (por defecto estará en C:\Archivos de programa\Apache Software Fundation\Apache2.2\conf\) los parámetros del modulo modjk indicandole que aplicaciones queremos balancear al oc4j:

# Cargamos el módulo JK LoadModule jk_module modules/mod_jk.so
# Path to workers.properties
JkWorkersFile "C:/Archivos de programa/Apache Software Foundation/Apache2.2/conf/worker.properties"
# Path to jk logs
JkLogFile "C:/Archivos de programa/Apache Software Foundation/Apache2.2/logs/mod_jk.log"
# Jk log level debug/error/info
JkLogLevel info
# Jk log format
JkLogStampFormat "%a %b %d %H:%M:%S %Y "
# JkOptions for forwarding
#JkOptions +ForwardKeySize +ForwardURICompat -ForwardDiretories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Aplicaciones que estan en el OC4J
JkMount /MIAPLICACION* oracle