lunes, 11 de febrero de 2008

Configurando Jboss portal para postgresql

Hola, en la actualidad y desde hace un tiempo las empresas implementan portales para dar soluciones de escala empresarial a sus clientes, uno de los portales que mas se utilizan es jboos portal, debido a que es open source y altamente robusto.
Un portal empresarial como jboos portal cumple con varias caracteristicas que nos aseguran una buena gestión y administración de portales para nuestros clientes, las caracteristicas tecnicas mas importantes son:

En tecnología y Arquitectura:
JEMS: Se apoya el poder de JBoss Enterprise Middleware JBoss Application Server, JBoss
Cache, JGroups, y Hibernate.
• PP Agnóstico: ¿funcionan con cualquier RDBMS apoyo de Hibernate
• SSO / LDAP: Se apoya Tomcat y JBoss de inicio de sesión único (SSO) de las soluciones.
• JAAS Autenticación: Custom autenticación a través de módulos JAAS login.
• Cacheing: Utiliza emitir opinión-caché para mejorar el rendimiento.
• Clusterable: Grupo de apoyo para el portal estatal permite que se agrupen portales para todos los casos.
• Hot-Despliegue: Se apoya JBoss dinámico para despliegue automático de características.

Soporte a Estandares:
• Especificación y Portlet API 1.0 (JSR-168)
• Content Repository for Java Technology API (JSR-170)
• Java Server Faces 1.2 (JSR-252)
• Java Management Extension (JMX) 1,2
• Completo J2EE 1,4 cumplimiento cuando se utiliza con JBoss AS

Portal y Portlet Container:
• Múltiples instancias del portal: La capacidad de tener múltiples instancias en funcionamiento dentro del portal de un portal de contenedores.
• IPC ™ Interamericano de Comunicación Portlet API permite a los portlets para crear enlaces con otros objetos, como una página, portal o ventana.
• Dynamicity ™ La capacidad de los administradores y los usuarios a crear y destruir objetos, como los portlets, páginas, Portales, temas, y diseños en tiempo de ejecución.
• Internacionalización: Capacidad para utilizar la internacionalización de archivos de recursos para cada portlet.
• Pluggable servicios: autenticación realizada por el contenedor servlet y JAAS que hacen posible el intercambio de Esquemas de autenticación.
• Página basada en la arquitectura: Permite la agrupación y división de los portlets en una página por cada base.
• Marco de apoyo existentes: Portlets utilizando Struts, Spring MVC, Sun JSF-RI, AJAX, o que cuenten con el apoyo de MyFaces Portado.

Temas y Diseños:
• Fácilmente intercambiables temas / diseños: Nuevos temas y diseños que contengan imágenes se pueden desplegar en un WAR
• Flexible API: Tema y diseño de la API están diseñados para separar la capa de negocio de la capa de presentación.

Funcionalidad de usuario y de grupo:
• Registro de usuario / validación: registro de los parámetros configurables para permitir que los usuarios de correo electrónico de validación antes de su activación.
• Login: Hace uso de contenedor servlet de autenticación.
• Crear o modificar usuarios: Capacidad para que los administradores de crear/editar perfiles de usuario.
• Crear o modificar Roles: La habilidad para los administradores de crear/editar los papeles.
• Asignación de Papel: La habilidad para los administradores asignar funciones a los usuarios.

Gestión de permisos:
• Permisos ampliables con la API: Permisos basados en la definición de papeles.
• Administraión de la interfaz: Permite a las cesiones de los permisos de funciones en cualquier momento por cualquier despliegue de portlet, Página, o portal de ejemplo.

Sistema de Gestión de Contenidos (CMS):
• JCR conformes: El CMS se alimenta a través de Apache Jackrabbit, una aplicación de código abierto de Java
• PP o almacenar el apoyo del sistema de archivos: Configurable para almacenar el contenido del sistema de archivos o bien un RDBMS.
• Factores externos Blob Soporte: Contenido configurable que permite almacenar grandes nodos de referencias y propiedades al residir en una RDBMS.
• versionado de apoyo: Todo el contenido editado o creado es autoversionedo con una historia de ediciones que se pueden ver en cualquier momento.
• equipado con un editor HTML: HTML de modo WYSIWYG, la funcionalidad de vista preliminar, y HTML .

El listado anterior son las caracteristicas mas importantes de este Open-Source. ahora que ya tenemos una mejor noción de lo que es un portal de fuente abierta podremos continuar con el articulo. Por defecto jboss portal viene con una base de datos, la HSQL o Hipersonic, ahora generaremos la configuración para PostgreSQL, de esta manera se nos facilita un poco la administración de la base del portal, si es que tenemos webmin.

Entonces lo primero que haremos sera descargarnos jboos portal de la siguiente url, para este ejemplo practico, ocupo jboss portal 2.4 bundled, postgresql 8.2, linux debian y la jdk1.5.0_12:

1.- Descargamos jboss-portal-2.4.1-bundled.zip de la siguiente url:

http://labs.jboss.com/jbossportal/download/index.html

2.- Lo descomprimimos en un directorio y nos aseguramos de tener los permisos para levantar en servicio:

slack@debian:~/portals$ unzip jboss-portal-2.4.1-bundled.zip

este comando anterior descomprime el zip en el directorio donde nos encontramos, luego vamos al directorio bin de la raiz del jboss.

slack@debian:~/portals$ cd jboss-portal-2.4.1/bin/
slack@debian:~/portals/jboss-portal-2.4.1/bin$ ls -la
total 180
drwxr-xr-x 2 slack slack 4096 2006-12-20 17:26 .
drwxr-xr-x 8 slack slack 4096 2006-12-20 17:27 ..
-rw-r--r-- 1 slack slack 3539 2006-12-20 17:26 classpath.sh
-rw-r--r-- 1 slack slack 3479 2006-12-20 17:26 jboss_init_hpux.sh
-rw-r--r-- 1 slack slack 2463 2006-12-20 17:26 jboss_init_redhat.sh
-rw-r--r-- 1 slack slack 3750 2006-12-20 17:26 jboss_init_suse.sh
-rw-r--r-- 1 slack slack 535 2006-12-20 17:26 probe.bat
-rw-r--r-- 1 slack slack 918 2006-12-20 17:26 probe.sh
-rw-r--r-- 1 slack slack 3221 2006-12-20 17:26 run.bat
-rw-r--r-- 1 slack slack 1572 2006-12-20 17:26 run.conf
-rw-r--r-- 1 slack slack 38163 2006-12-20 17:26 run.jar
-rw-r--r-- 1 slack slack 4672 2006-12-20 17:26 run.sh
-rw-r--r-- 1 slack slack 1813 2006-12-20 17:26 shutdown.bat
-rw-r--r-- 1 slack slack 17296 2006-12-20 17:26 shutdown.jar
-rw-r--r-- 1 slack slack 2061 2006-12-20 17:26 shutdown.sh
-rw-r--r-- 1 slack slack 2137 2006-12-20 17:26 twiddle.bat
-rw-r--r-- 1 slack slack 47481 2006-12-20 17:26 twiddle.jar
-rw-r--r-- 1 slack slack 2414 2006-12-20 17:26 twiddle.sh
-rw-r--r-- 1 slack slack 2037 2006-12-20 17:26 wstools.bat
-rw-r--r-- 1 slack slack 2776 2006-12-20 17:26 wstools.sh

tendremos que dar permiso al run.sh para levantar el servidor jboss, con el siguiente comando:

slack@debian:~/portals/jboss-portal-2.4.1/bin$ chmod +x run.sh

IMPORTANTE: no correr run.sh hasta terminar la configuración

Ya tenemos listo jboss para arrancarlo, ahora veremos el tema de la configuración de la base de datos, aqui lo setearemos para postgresql.

Primero vamos al webmin o algún gestor de bases de datos Postgre, creamos una base de datos para el portal (jbossportal), ademas nos creamos un usuario (portaluser) y le asignamos una clave (quaker77) para esta base de datos, con permisos para crear tablas.
Una vez creada correctamente la base de datos, verificamos que podamos conectarnos, para esto podemos ocupar un database explorer de bases de datos, del mismo ide Eclipse, Netbeans, u otro, ya conectados seguimos adelante con la configuracion de los archivos de jboss para postgresql.

Tendremos que editar 2 archivos de configuración, estos son:

postgres-ds.xml
portal-postgresql-ds.xml

y la ubicación donde deben ir el el portal es:

slack@debian:~/portals/jboss-portal-2.4.1/server/default/deploy

Sin embargo la primera vez estos archivos no se encuentran el este directorio, ya que la configuración por default es con HSQL. si listamos los archivos vemos los archivos de configuración para HSQL

slack@debian:~/portals/jboss-portal-2.4.1/server/default/deploy$ ls
bsh-deployer.xml http-invoker.sar jboss-local-jdbc.rar
jmx-console.war monitoring-service.xml uuid-key-generator.sar
cache-invalidation-service.xml jboss-aop.deployer jboss-portal.sar jmx-invoker-service.xml portal-hsqldb-ds.xml client-deployer-service.xml jboss-bean.deployer jbossweb-tomcat55.sar jsr88-service.xml properties-service.xml
ear-deployer.xml jboss-ha-local-jdbc.rar jbossws14.sar mail-ra.rar schedule-manager-service.xml ejb-deployer.xml jboss-ha-xa-jdbc.rar jboss-xa-jdbc.rar mail-service.xml scheduler-service.xml
hsqldb-ds.xml jbossjca-service.xml jms management sqlexception-service.xml

Pero como nosostros queremos levantar el portal jboss con PostgreSQL, debemos reemplazar estos archivos por los que corresponden para PostgreSQL, el archivo portal-postgresql-ds.xml, se encuantra en el directorio Setup de la raiz del jboss, vamos allá entonces y procedemos a editarlo para nuestra base de datos

slack@debian:~/portals/jboss-portal-2.4.1/setup$ nano portal-postgresql-ds.xml

esto es lo importante:



PortalDS
jdbc:postgresql:jbossportal
org.postgresql.Driver
portaluser
quaker77



Guardamos el archivo en:

slack@debian:~/portals/jboss-portal-2.4.1/server/default/deploy

y eliminamos el archivo que correspondia a HSQL, portal-hsqldb-ds.xml

posteriormente hacemos lo mismo para postgres-ds.xml

Este archivo se encuentra en:

slack@debian:~/portals/jboss-portal-2.4.1/docs/examples/jca$ ls
asapxcess-jb3.2-ds.xml facets-ds.xml hsqldb-encrypted-ds.xml jms-ds.xml mssql-ds.xml pointbase-xa-ds.xml sybase-ds.xml
cicsr9s-ds.xml fastobjects-jboss32-ds.xml informix-ds.xml jsql-ds.xml mssql-xa-ds.xml postgres-ds.xml
db2-400-ds.xml firebird-ds.xml informix-xa-ds.xml lido-versant-service.xml mysql-ds.xml progress-ds.xml
db2-ds.xml generic-ds.xml jboss-ha-local-jdbc.rar mimer-ds.xml oracle-ds.xml sapdb-ds.xml
db2-xa-ds.xml hajndi-jms-ds.xml jboss-ha-xa-jdbc.rar mimer-xa-ds.xml oracle-xa-ds.xml sapr3-ds.xml
derby-ds.xml hsqldb-ds.xml jdatastore-ds.xml msaccess-ds.xml pointbase-ds.xml solid-ds.xml

Procedemos a editarlo de la misma manera:

slack@debian:~/portals/jboss-portal-2.4.1/docs/examples/jca$ nano postgres-ds.xml

de dejamos como se ve:



PostgresDS
jdbc:postgresql://[servername]:[port]/[database name]
org.postgresql.Driver
portaluser
quaker77

select 1


select 1







Lo guardamos y copiamos al directorio:

slack@debian:~/portals/jboss-portal-2.4.1/server/default/deploy

y eliminamos el archivo que correspondia a HSQL, hsqldb-ds.xml


Ahora buscamos el driver para conectarnos a postgre, yo tengo, postgresql-jdbc3-8.1-405.jar

lo copiamos a:

slack@debian:~/portals/jboss-portal-2.4.1/server/default/lib$ ls
activation.jar commons-collections.jar jboss-backport-concurrent.jar jboss-management.jar jbosssx.jar postgresql-jdbc3-8.1-405.jar
antlr-2.7.6.jar commons-httpclient.jar jboss-common-jdbc-wrapper.jar jboss-monitoring.jar jboss-transaction.jar properties-plugin.jar
autonumber-plugin.jar commons-logging.jar jboss-hibernate.jar jbossmq.jar jmx-adaptor-plugin.jar scheduler-plugin-example.jar
bcel.jar hibernate3.jar jboss-j2ee.jar jboss-remoting-int.jar jnpserver.jar scheduler-plugin.jar
bindingservice-plugin.jar hsqldb.jar jboss.jar jboss-remoting.jar jpl-pattern.jar snmp-support.jar
bsf.jar hsqldb-plugin.jar jboss-jaxrpc.jar jbossretro-rt.jar jpl-util.jar wsdl4j.jar
bsh-1.3.0.jar javassist.jar jboss-jca.jar jboss-saaj.jar log4j.jar xmlentitymgr.jar
bsh-deployer.jar javax.servlet.jar jboss-jsr77.jar jboss-serialization.jar mail.jar
cglib.jar javax.servlet.jsp.jar jboss-jsr88.jar jboss-srp.jar mail-plugin.jar

Una vez todo listo, vemos la configuración que se despliega cuando arrancamos el portal:

slack@debian:~/portals/jboss-portal-2.4.1/bin$ ./run.sh

=========================================================================

JBoss Bootstrap Environment

JBOSS_HOME: /home/slack/portals/jboss-portal-2.4.1

JAVA: /usr/lib/jvm/jdk1.5.0_12/bin/java

JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh

CLASSPATH: /home/slack/portals/jboss-portal-2.4.1/bin/run.jar:/usr/lib/jvm/jdk1.5.0_12/lib/tools.jar

=========================================================================

13:56:48,594 INFO [Server] Starting JBoss (MX MicroKernel)...
13:56:48,595 INFO [Server] Release ID: JBoss [Zion] 4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)
13:56:48,597 INFO [Server] Home Dir: /home/slack/portals/jboss-portal-2.4.1
13:56:48,597 INFO [Server] Home URL: file:/home/slack/portals/jboss-portal-2.4.1/
13:56:48,598 INFO [Server] Patch URL: null
13:56:48,598 INFO [Server] Server Name: default
13:56:48,598 INFO [Server] Server Home Dir: /home/slack/portals/jboss-portal-2.4.1/server/default
13:56:48,598 INFO [Server] Server Home URL: file:/home/slack/portals/jboss-portal-2.4.1/server/default/
13:56:48,598 INFO [Server] Server Log Dir: /home/slack/portals/jboss-portal-2.4.1/server/default/log
13:56:48,599 INFO [Server] Server Temp Dir: /home/slack/portals/jboss-portal-2.4.1/server/default/tmp
13:56:48,599 INFO [Server] Root Deployment Filename: jboss-service.xml
13:56:48,908 INFO [ServerInfo] Java version: 1.5.0_12,Sun Microsystems Inc.
13:56:48,908 INFO [ServerInfo] Java VM: Java HotSpot(TM) Server VM 1.5.0_12-b04,Sun Microsystems Inc.
13:56:48,909 INFO [ServerInfo] OS-System: Linux 2.6.18-5-686,i386
13:56:49,368 INFO [Server] Core system initialized
.
.
.
.
.
13:57:39,104 INFO [Dialect] Using dialect: org.hibernate.dialect.PostgreSQLDialect
13:57:44,420 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=PostgresDS' to J NDI name 'java:PostgresDS'
13:57:44,747 INFO [Http11BaseProtocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080
13:57:44,839 INFO [ChannelSocket] JK: ajp13 listening on /0.0.0.0:8009
13:57:44,849 INFO [JkMain] Jk running ID=0 time=0/38 config=null
13:57:44,860 INFO [Server] JBoss (MX MicroKernel) [4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 56s:259ms

Vemos que en algunas lineas del log en el arranque esta configurada la nueva conexión de base de datos para el portal jboss, para confirmar esto abrimos el browser y efectuamos el inicio de sesion:

http://localhost:8080/portal/auth/portal/default/Admin

OJO: por defecto jboss ocupa el puerto 8080, sin embargo a veces ocupamos ese mismo puerto para tomcat, lo podemos solucionar editando el archivo server.xml que se encuentra en:

slack@debian:~/portals/jboss-portal-2.4.1/server/default/deploy/jbossweb-tomcat55.sar$ ls
catalina.jar commons-el.jar context.xml jasper-runtime.jar naming-resources.jar servlets-default.jar tomcat55-service.jar tomcat-coyote.jar
catalina-manager.jar commons-modeler.jar jasper-compiler.jar jsf-libs ROOT.war servlets-invoker.jar tomcat-ajp.jar tomcat-http.jar
catalina-optional.jar conf jasper-compiler-jdt.jar META-INF server.xml servlets-webdav.jar tomcat-apr.jar tomcat-util.jar

modificando el puerto 8080 al 8082 por ejemplo.

bueno, ingresamos entonces al portal como admin admin, y creamos un usuario, quaker por ejemplo. luego vamos al webmin o hacemos una query a la tabla jbp_users y vemos que tenemos este usuario en esa tabla en nuestro PostgreSQL.

Saludos y suerte !!






2 comentarios:

Edixon Idrogo dijo...

Excelente publicación. En verdad me costo mucho encontrar una información tan específica como la tuya y en españolito de paso. Tengo algo de conocimiento de jboss, pero este material me aclara más las cosas.

Agradeceria en gran manera tu ayuda te estaré escribiendo para que explicarte en que consiste, en realidad es algo simple solo para aclarar lagunas.

Hermano soy de Venezuela mi nombre es Edixon Idrogo estudiante de Educación Informática de la UNEFM en Coro Estado Falcón.Continue así.

Anónimo dijo...

q buena bro, hace tiempo que buscaba como inslatalr y configurar jboss en pocos pasos en postgreSQL, felicitaciones.