Configurar tu aplicación OpenXava
6.0 (o anterior) para ir contra la DB2 de un AS/400 es muy simple,
básicamente has de instalar tu controlador JDBC para AS/400 y definir
correctamente la fuente de datos. No necesitas tocar nada de código de tu
aplicación.
Descargar el controlador JDBC para AS/400
Descarga el controlador para AS/400 desde aquí: https://sourceforge.net/projects/jt400/files/
Descargarás un archivo como este:
jtopen_9_8.zip (el número de
versión puede cambiar). Descomprímelo para buscar dentro un archivo
llamado
jt400.jar (o parecido), este último archivo, el .jar, es
el controlador JDBC que vamos a usar.
Crear una variable de classpath en Eclipse
Para poder conectar a AS/400 desde Eclipse vamos a declarar una variable
de classpath que apunte al controlador JDBC de AS/400, así lo podrás usar
en cualquier proyecto que lo necesites con facilidad. Para ello, en
Eclipse ve a Window > Preferences > Java > Build Path >
Classpath Variables donde puedes añadir la nueva variable:
Puedes llamar a la variable
AS400_DRIVER o CONTROLADOR_AS400 en lugar de DB_DRIVER si lo prefieres. Path
sería la ruta del controlador JDBC, en nuestro caso la ruta del jt400.jar
que acabamos de descargar.
Añadir la variable DB_DRIVER al proyecto Eclipse
En el proyecto en que vayas a usar AS/400 has de añadir la variable que
acabas de declarar. Pulsa con el botón derecho del ratón en tu proyecto y
selecciona
Build Path > Configure Build Path:
Después selecciona la pestaña Libraries:
Con esto tenemos el controlador
disponible en el entorno de desarrollo.
Añadir el controlador JDBC al Tomcat de producción
Añadir
el controlador en producción es mucho más fácil. Copia jt400.jar
a la carpeta lib de tu Tomcat. Nada más.
Ajustar la definición de la base de datos
Para desarrollo edita web/META-INF/context.xml de tu proyecto
Eclipse y para producción edita conf/context.xml de tu Tomcat,
para ajustar la fuente de datos para que apunte a AS/400, algo como esto:
<Resource name="jdbc/MiAplicacionDS" auth="Container"
type="javax.sql.DataSource"
maxTotal="100" maxIdle="20" maxWaitMillis="10000"
username="root" password="ao49fmsk"
driverClassName="com.ibm.as400.access.AS400JDBCDriver"
url="jdbc:as400:192.168.1.8"/>
Las diferencias están en el driverClassName
y la url. Obviamente, en lugar de 192.168.1.8 deberías poner la
dirección del AS/400, y también poner los valores correctos para username
y password.
Actualizar persistence.xml
No necesitas tocar la unidad de persistencia default de persistence.xml
(en persistence/META-INF), a no ser que uses la propiedad hibernate.dialect
en cuyo caso lo más fácil es quitar la propiedad hibernate.dialect.
Además, deberías especificar la propiedad hibernate.default_schema
para todas las unidades de persistencia, para indicar en que biblioteca de
tu AS/400 están las tablas de tu aplicación (a no ser que uses @Table(schema=)
en cada entidad).
Por otra parte, sí que has de
modificar la unidad de persistencia
junit para que apunte a
AS/400:
<!-- JUnit AS/400 -->
<persistence-unit name="junit">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>org.openxava.web.editors.DiscussionComment</class>
<properties>
<property name="hibernate.default_schema" value="MILIB"/>
<property name="hibernate.connection.driver_class" value="com.ibm.as400.access.AS400JDBCDriver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="ao49fmsk"/>
<property name="hibernate.connection.url" value="jdbc:as400:192.168.1.8"/>
</properties>
</persistence-unit>
Adapta username, password
y url a la configuración de tu AS/400. Para el default_schema
en lugar de MYLIB pon la librería del AS/400 donde están tus tablas.
Arrancar el diario
Para que tu aplicación OpenXava funcione con AS/400 tus tablas tienen
que soportar transacciones. La forma más fácil de conseguirlo es creando
la biblioteca para tus tablas desde SQL usando "CREATE COLLECTION
MILIB". Desafortunadamente, la mayoría de las veces que trabajas con
AS/400 has de hacerlo con tablas preexistentes. En este caso has de
crear un diario (journal) para tu biblioteca, de esta manera:
CRTJRNRCV JRNRCV(MILIB/MIRCV) THRESHOLD(5000)
CRTJRN JRN(MILIB/MIJRN) JRNRCV(MILIB/MIRCV) MNGRCV(*SYSTEM)
CHGJRN JRN(MILIB/MIJRN) JRNRCV(*GEN) DLTRCV(*YES)
En vez de MILIB usa el nombre de tu biblioteca. Después, tienes que
registrar todas las tabla por diario, así:
STRJRNPF FILE(MILIB/*ALL) JRN(MILIB/MIJRN) IMAGES(*BOTH) OMTJRNE(*OPNCLO)
Cuando en el futuro crees una nueva tabla para ser usada desde OpenXava
has de registrarla por diario:
STRJRNPF FILE(MILIB/MITABLA) JRN(MILIB/MIJRN)
Si no estás familiarizado con la interfaz del AS/400 busca ayuda de
algún gurú del AS/400 de tu empresa para esta tarea.