openxava / documentación / Configuración para AS/400

Configurar tu aplicación OpenXava 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 Properties > Java Build Path > 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.