lunes, 30 de marzo de 2009

Como instalar Jboss ESB con Postgresql

De antemano disculpa sino soy lo suficiente claro en lo que publicare como una guia de instalar jboss esb. Las instrucciones a continuación me han funcionado en mi instalación y no me puedo comprometer a que funcione a quien trate de seguir estas mismas.

A lo que vinimos
Instalare con las siguientes versiones:
  • jboss 4.2.2 GA
  • Jboss Messaging 1.4.2.GA-SP1
  • Jboss ESB 4.5.GA
  • Postgresql 8.1.11
Previamente instalado un jdk 1.5 y apache ant 1.7 con sus respectivas variables de ambiente e incluido en el PATH. No voy a explicar como hacer esto :(
Asumo que:
  • Se ha bajado los archivos de instalacion y descomprimidos en algun directorio de la maquina
  • El directorio en donde quedo instalado Jboss esta en $JBOSS_HOME
  • El directorio en donde quedo JBM (Jboss Messaging) es $JBM_HOME
  • El directorio en donde quedo JBoss ESB esta en $JBOSS_ESB_HOME
  • Postgresql está previamente instalado y se ha creado una base de datos llamada esb fue creada como UTF-8. Un usuario jboss con password jboss ha sido creado y es el dueño de la base de datos esb.
Ir a $JBM_HOME/util
cd $JBM_HOME/util
ant -f release-admin.xml -Dmessaging.config.source=default.ori -Dmessaging.config.name=esb


Con lo anterior creamos una nueva configuración de servidor jboss a partir de la configuración "default" con el nombre de "esb" con lo cual tendremos el directorion $JBOSS_HOME/server/esb.

Es necesario afinar un poco la nueva configuración de JBM por lo cual debe seguirse lo indicado en este link en la parte bajo el titulo "
4.1.3. Extra steps to complete your installation", $JBOSS_CONFIG se refiere a $JBOSS_HOME/server/esb
Las instrucciones allí son bastante claras así que no complicare esto explicando lo que ahi dice.

Todabia no suba jboss.

Ahora vamos con el ESB:
Ir al directorio install dentro del directorio donde descomprimio el jboss esb.
cd $JBOSS_ESB_HOME/install
editar archivo deployment.properties
basicamente modifique las lineas que tienen:
org.jboss.esb.server.home=/usr/local/jboss
org.jboss.esb.server.config=esb

esb = $JBOSS_HOME/server/esb
En este momento instalar los archivos de esb en Jboss con el comando ant:
ant

Ahora para que el JBossESB use postgresql como base de datos subyacente en vez de hsql debe seguir los pasos dados en esta pagina.
Rapidamente seria:

rm $JBOSS_HOME/server/esb/deploy/jboss-messaging.sar/hsqldb-persistence-service.xml
cp $JBOSS_ESB_HOME/examples/config/postgresql-persistence-service.xml $JBOSS_HOME/server/esb/deploy/jboss-messaging.sar/


Crear archivo postgres-ds.xml con:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>DefaultDS</jndi-name>
<connection-url>jdbc:postgresql://localhost:5432/esb</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>jboss</user-name>
<password>gt;jboss</password>
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
<check-valid-connection-sql>select count(*) from jbm_user</check-valid-connection-sql>
</local-tx-datasource>
</datasources>
Sobrescribir archivo $JBOSS_HOME/server/deploy/jbossesb.sar/juddi-ds.xml con:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>juddiDB</jndi-name>
<connection-url>jdbc:postgresql://localhost:5432/esb</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>jboss</user-name>
<password>jboss</password>
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
<check-valid-connectionsql>select count(*) from jbm_user</check-valid-
connectionsql>
</local-tx-datasource>
</datasources>
Remplazar archivo $JBOSS_HOME/server/deploy/jbossesb.sar/message-store-ds.xml con:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>JBossESBDS</jndi-name>
<connection-url>jdbc:postgresql://localhost:5432/esb</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>jboss</user-name>
<password>jboss</password>
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
<check-valid-connectionsql>select count(*) from jbm_user</check-valid-connectionsql>
</local-tx-datasource>
</datasources>
Remplazar contenido de $JBOSS_HOME/server/deploy/jbossesb.esg/jbossesb-service.xml con:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.internal.soa.esb.dependencies.DatabaseInitializer"
name="jboss.esb:service=MessageStoreDatabaseInitializer">
<attribute name="Datasource">java:/JBossESBDS</attribute>
<attribute name="ExistsSql">select * from message</attribute>
<attribute name="SqlFiles">
message-store-sql/postgres/create_database.sql
</attribute>
<depends>jboss.jca:service=DataSourceBinding,name=JBossESBDS</depends>
</mbean>
</server>
En el archivo $JBOSS_HOME/server/deploy/jbossesb.sar/esb.uddi.xml, buscar la linea que tenga "juddi.sqlFiles" y remplazarla por:
<entry key="juddi.sqlFiles">juddi-sql/postgresql/create_database.sql,juddi-sql/postgresql/import.sql</entry>
Por ultimo poner el jar jdbc de postgresql en $JBOSS_HOME/server/esb/lib.

Luego para arrancar jboss:
cd $JBOSS_HOME/bin
./run.sh -c esb

Se veran algunos errores que tienen que ver con la creacion de tablas en la base de datos. La segunda vez que se corra jboss se verá mas limpio.

Ojala les sirva para algo

No hay comentarios:

Publicar un comentario