Configurar OpenXava 2.X para Postgres
En esta versión solo modificaremos los ficheros del proyecto generado en el punto 2.1 de la guía de referencia de OX.
Supondremos que la carpeta donde está instalado OpenXava es
openxava2.X.
Por tanto tendreis que cambiar cualquier referencia a la carpeta openxava2.X a vuestra carpeta real de ubicacion del OpenXava.!!!
Comprobar el funcionamiento de la BD Postgres
Hemos de comprobar que el gestor de bases de datos
Postgres esté en marcha y que sea accesible desde nuestra máquina. La mejor forma es entrar en el
pgAdmin. Si no se tiene, es muy conveniente tenerlo instalado (se obtiene de la Web de
Postgres).
Una vez abierto, se debe intentar conectar (si no nos deja entrar, ya no podemos seguir adelante).Con el botón derecho del ratón sobre el servidor seleccionamos conectar.
A continuación le damos la contraseña que hayamos dado para el usuario “
postgres”.
Una vez dentro, creamos una base de datos, por ejemplo
MIBD (en mayúsculas) y creamos un esquema por ejemplo
gestion (en minúsculas)
Por tanto vamos a trabajar en la base de datos “
MIBD” y el esquema “
gestion”
Observaciones:
NUNCA debéis poner en la base de datos Postgres los nombres de esquemas o tablas en MAYÚSCULAS. Siempre en MINÚSCULAS.! ya que postgres sobre hibernate mapea los nombres de tablas y esquemas en minúsculas.
|
Configurar la Base de datos (substitución del punto 2.2 de la guía de referencia)
Suponemos que ya hemos creado nuestro primer proyecto según las indicaciones de la guía de referencia en su punto 2.1.
En la carpeta
openxava2.x/portal/conf editamos el fichero
context.xml y añadimos la siguiente entrada
<Resource name="jdbc/MiGestionDS" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="5" maxWait="10000"
username="postgres" password="mi_password_de_postgres"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql:localhost:5432/MIBD"/>
Donde:
“mi_password_de_postgres
” es la contraseña que tengamos de acceso a Postgres.
url="jdbc:postgresql:localhost:5432/MIBD"
es donde definimos el acceso a la base de datos, siendo “localhost” la dirección IP o nombre del servidor donde resida e gestor de base de datos y MIBD es el nombre de nuestra base de datos que hayamos creado en Postgres.
||
Observaciones:
Hay que distinguir entre aquellos que trabajen arrancando el Tomcat desde fuera del Eclipse (ejecutando
start-portal desde el directorio de instalación del OpenXava) y los que arranquen el Tomcat desde el Eclipse tal como se explica en
http:www.gestion400.com/web/guest/wtp
Para los primeros el fichero context.xml está en “
portal/conf”.
Para los segundos en “openxaca2.X/
workspace/Servers/Tomcat v5.5 Server @ localhost-config”
Si el nivel os lo permite, se aconseja trabajar dentro de Eclipse, ya que se consigue una mayor velocidad y menor cambio de pantallas. Cuanto más nos centremos en lo que hacemos, y menos cambios de pantallas tengamos, reduciremos las probabilidades de tener cometer errores!
Modificar el fichero “build.xml”
Buscamos una línea que tenga tomcat-hypersonic y la cambiamos por otra que hace referencia a un nuevo fichero de configuración
tomcat-postgres que crearemos en el siguiente apartado. En este caso se ha puesto comentarios.
<!-- Comentario
<property name="configuration" value="tomcat-hypersonic"/>
-->
<property name="configuration" value="tomcat-postgres"/>
Además indicamos cual es nuestro origen de datos
<property name="datasource" value="MiGestionDS"/>
Buscamos la tarea ant //actualizarEsquema//.
• Ponemos el valor correcto para //schema.path//, en este caso **LA RUTA ABSOLUTA DONDE DEL JAR DEL JDBC DE POSTGRES** ( en mi caso particular y en Windows XP en C:/POSTGRES/postgresql-8.3dev-601.jdbc3.jar )
<!-- Comentario
<property name="schema.path" value="[PUT HERE THE PATH OF YOUR JDBC DRIVER]"/>
-->
<property name="schema.path" value="C:/POSTGRES/postgresql-8.3dev-601.jdbc3.jar"/>
Guardamos los cambios.
Dejar el driver JDBC de Postgres accesible al Tomcat
Para ello guardamos el fichero de los drivers JDBC de Postgres postgresql-8.3dev-601.jdbc3.jar
u otro mas recietne al directrorio openxava-2.X/portal/common/lib
Crear el fichero “tomcat-postgres.properties”
Copiamos el contenido del fichero tomcat-hypersonic.pr
operties en un nuevo fichero tomcat-postgres.properties
. A continuación cambiamos todo aquello que nos interesa. En este ejemplo modificaremos el separador que lo cambiaremos de “_” a “.”.
También se modificará el dialecto a PostgreSQLDialect.
separator=.
organization_es=Gestión cuatrocientos, s.l.
organization_ca=Gestió quatre-cents, s.l.
organization_en=Management four hundred, limited
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
datasource.prefix=java:comp/env/jdbc
Modificar el fichero “hibernate/hibernate-junit.cfg.xml”
Tenemos que comentar todo lo relativo a HSQLDB (que estaba etiquetado como Hypersonic) y crear nuevas definiciones para Postgres (que se ha etiquetado como Postgres), quedando:
<session-factory>
<!-- Hypersonic comentado
<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="hibernate.connection.url">jdbc:hsqldb:hsql:localhost:1666</property>
-->
<!-- Postgres-->
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.url">jdbc:postgresql:localhost:5432/MIBD</property>
Donde el servidor nuestro es
//localhost (pero vosotros teneis que indicar el nombre de la máquina donde reside el servidor Postgres o la dirección),
5432 es el puerto que normalmente está asociado el servicio de BD Postgres i
MIBD es el nombre de nuestra base de datos (pero vosotros tenéis que indicar la vuestra).
Además hay que cambiar todo lo relativo a usuarios y contraseñas. Tenemos que poner comentarios al famoso usuario “SA” sin contraseña, y meter el usuario “
postgres” (o el que sea) con su contraseña “
mi_password_de_postgres” (OJO: la que tu hayas definido o conozcas!)
Además debemos meter entre comentarios el acceso a Hypersonic que es lo que había antes e introducir el nuevo Acceso Postgres lo que hemos añadido después.
<!-- Acceso Hypersonic comentado
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.show_sql">false</property>
-->
<!-- Acceso Postgres -->
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">mi_password_de_postgres</property>
<property name="hibernate.show_sql">false</property>
Y guardamos los cambios.
Ahora ya solo nos queda
Reanudamos nuestro “primer proyecto” a partir del punto 2.3 de la guía de referencia
Ahora realizamos la parte 2.3 de la guía y del componente Almacen.xml el cual repetimos su contenido, podemos decir que:
<!DOCTYPE componente SYSTEM "dtds/componente.dtd">
<componente nombre="Almacen">
<entidad>
<propiedad nombre="codigo" tipo="String" clave="true"
longitud="5" requerido="true"/>
<propiedad nombre="nombre" tipo="String"
longitud="40" requerido="true"/>
</entidad>
<mapeo-entidad tabla="GESTION@separator@ALMACENES">
<mapeo-propiedad propiedad-modelo="codigo" columna-tabla="CODIGO"/>
<mapeo-propiedad propiedad-modelo="nombre" columna-tabla="NOMBRE"/>
</mapeo-entidad>
</componente>
“
GESTION”
es el esquema que hemos creado en la base de datos Postgres (MIBD, que no aparece por ningún lado del componente), y “ALMACENES” la tabla a crear. OJO: Cuando hibernate haga el mapeo a Postgres pasará a MINUSCULAS el esquema!
Le damos a las tareas Ant “generarCodigo
” (Nos situamos en eclipse sobre el fichero build.xml de nuestro proyecto, con el botón derecho del ratón seleccionamos “Run As” - “3 Ant build ..” y deseleccionamos “todo” y seleccionamos “generarCodigo
”.
Mas tarde nos colocamos sobre la carpeta del proyecto creado en Eclipse y le damos a la tecla F5 para que refresque los ficheros generados.
No estaría mal darle al icono para que compile nuestro proyecto cuando generamos o regeneramos código. (Y también es aconsejable ejecutar la tarea Ant “reconstruir//”)
Ejecutamos la tarea ant actualizarEsquema tal como hemos hecho en el apartado anterior
Observamos que está creando nuestra tabla ALMACENES.