Cuando se usan diseños modulares en aplicaciones ADF, es común tener varios ApplicationModules y cada uno de ellos tiene su definición de origen de datos para acceder a la base de datos.
Si la aplicación es usada solo por un cliente es posible que no se requiera cambiar el nombre del origen de datos, pero ¿Qué pasa cuando nuestra aplicación debe ser empaquetada para más de un cliente y desplegada en el mismo servidor? En ese caso, no debemos crear un origen de datos para cada cliente.
Esta entrada habla de una configuración especial de JavaEE, con la cual podemos redireccionar el origen de datos de nuestras aplicaciones. De esta manera, nuestra aplicación (ApplicationModules) va a tener configurado únicamente un origen de datos y en el descriptor de despliegue lo redireccionamos para que haga referencia al origen de datos real, configurado en el servidor de aplicaciones. Es decir, en vez de ir a modificar todos los posibles ApplicationModules que pueda tener la aplicación, modificaremos un solo archivo (el descriptor de despliegue).
Lo primero que debemos hacer es referenciar el origen de datos que está usando nuestra aplicación en el archivo WEB-INF/web.xml, este archivo tiene mucha más información, pero aquí solo mostraremos lo relacionado con el redireccionamiento de orígenes de datos. Atención, esta configuración es solo si se tiene como plataforma de despliegue Glassfish (Project Properties -> Deployment -> Edit -> Platform), porque para Weblogic, JDeveloper agrega la información automáticamente cuando se está construyendo el artefacto:
... <resource-ref> <res-ref-name>java:comp/env/jdbc/MiDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> ...
Debido a que ADF se puede desplegar tanto en Weblogic como en Glassfish, veremos el archivo descriptor de despliegue que se debe configurar para cada uno. Dichos archivos se deben ubicar en la carpeta WEB-INF de la aplicación maestra y pueden tener mucha más información, pero aquí solo mostraremos lo relacionado con el redireccionamiento de orígenes de datos:
Para Weblogic, debemos adicionar el archivo weblogic.xml
(File/New/From Gallery/General/DeploymentDescriptors/Weblogic…):
<?xml version = '1.0' encoding = 'UTF-8'?> <weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd" xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"> <resource-description> <res-ref-name>jdbc/MiDS</res-ref-name> <!-- cambiar por jdbc real en el servidor --> <jndi-name>jdbc/RealDS</jndi-name> </resource-description> </weblogic-web-app>
Para Glassfish, debemos adicionar el archivo glassfish-web.xml
(File/New/From Gallery/General/File):
<?xml version="1.0" encoding="UTF-8" ?> <glassfish-web-app> <resource-ref> <res-ref-name>java:comp/env/jdbc/MiDS</res-ref-name> <!-- cambiar jdbc real en el servidor --> <jndi-name>jdbc/RealDS</jndi-name> </resource-ref> </glassfish-web-app>
Con esta configuración, nuestros ApplicationModules van a tener configurado el origen de datos java:comp/env/jdbc/MiDS que sera rediraccionado al origen de datos configurado en el servidor de aplicaciones bajo el nombre jdbc/RealDS.