WebSphere Extended Deployment, Version 6.0.x     Sistemas operativos: AIX, HP-UX, Linux, Solaris, Windows

API

La principal API del soporte de origen de datos del proxy es WSProxyDataSourceHelper. A continuación se muestra la interfaz de WSProxyDataSourceHelper:

package com.ibm.websphere.proxyds;

/**
* 

La interfaz de WSDataSourceHelper es aquélla que se utiliza para el soporte
* de varios orígenes de datos CMP (también se llama origen de datos del proxy).
* Los usuarios pueden buscar instancias de WSProxyDataSourceHelper en el espacio
* de nombres JNDI con el nombre JNDI WSProxyDataSourceHelper.JNDI_NAME.
* 
* Se utiliza esta interfaz para dar soporte al modelo de origen de datos del proxy. La
* interfaz WSDataSourceHelper que admite el modelo V5 Proxy DataSource
* se desecha. Se recomienda encarecidamente a los usuarios que utilicen esta interfaz para
* aprovechar las ventajas del modelo de origen de datos del proxy.


* 
* 

Hay dos métodos helper (de ayuda) en esta interfaz.



* 

		* resolveDataSourceReference(String):
* Este método helper se utiliza para resolver el nombre JNDI global del origen
* de datos asociado con una referencia de recursos. Por ejemplo, si se correlaciona
* una referencia de recursos "jdbc/myDS1" con un origen de datos con un nombre JNDI
* global "jdbc/Bank1", la llamada al método resolveDataSourceReference("jdbc/myDS1")
* resolveDataSourceReference("jdbc/myDS1") devolverá "jdbc/Bank1".
			* 
			* 
		* setCurrentDataSourceJndiName(String, String):
   * Este método permite establecer el nombre JNDI (no el nombre de la referencia de recurso) del
			* origen de datos de delegación de un origen de datos del proxy concreto al que accederá la transacción
			* actual. El nombre JNDI del origen de datos se puede adquirir utilizando el
			* método resolveDataSourceReference(String).
* 
* 

* A continuación figura un ejemplo: 

* 
* 



Una aplicación tiene un EJB CMP "Account". Los datos de Account se distribuyen entre
* dos servidores de base de datos DB2 distintos, uno en la costa oeste y el otro
* en la costa este. Para que el EJB CMP Account pueda acceder a las dos bases de datos,
* se utiliza el modelo de origen de datos del proxy.
* 
* 

El EJB CMP Account se configura con la fábrica de conexiones CMP "jdbc/ProxyDS".
* El bean de sesión AccountTransaction, que sirve de
* fachada de sesión para el EJB CMP Account, se configura con tres
* referencias de recurso: "jdbc/myDS1", "jdbc/myDS2" y "jdbc/proxy".


* 
* 

En el espacio de administración, el administrador crea dos orígenes de datos DB2:
* "jdbc/Account1" y "jdbc/Account2", uno para la base de datos de la costa oeste y el
* otro para la base de datos de la costa este. El administrador también crea un
* origen de datos del proxy "jdbc/Accountroxy".
* Los jndiNames de propiedad personalizada de este origen de datos del proxy se establecen en
* "jdbc/Account1;jdbc/Account2"
* 
* 


Durante el despliegue, las referencias de origen de datos "jdbc/myDS1" y "jdbc/myDS2"
* se correlacionan con los orígenes de datos físicos "jdbc/Account1" y "jdbc/Acocunt2".
* La referencia de origen de datos "jdbc/proxy" se correlaciona
* con el origen de datos del proxy físico "jdbc/AccountProxy". La fábrica de conexiones CMP
* "jdbc/ProxyDS" también se correlaciona con el mismo origen de datos del proxy físico "jdbc/AccountProxy".
* 
* 

Durante el desarrollo, la aplicación no detecta con qué orígenes
* de datos físicos se correlacionan estas referencias de
* recurso. Para obtener el nombre JNDI de los orígenes de datos físicos, la
* aplicación puede resolver los orígenes de datos del método setSessionContext
* utilizando este código:
* 
*


// Buscar WSProxyDataSourceHelper
* dsHelper = (WSProxyDataSourceHelper) ic.lookup(WSProxyDataSourceHelper.JNDI_NAME);
* ...
* ds1JndiName = dsHelper.resolveDataSourceReference("jdbc/myDS1"); 
* ds2JndiName = dsHelper.resolveDataSourceReference("jdbc/myDS2");
* proxyJndiName = dsHelper.resolveDataSourceReference("jdbc/proxy");



* 
* 
* 

Antes de llamar a los EJB CMP, el bean de sesión puede utilizar
* el método setCurrentDataSourceJndiName(String, String) para indicar qué
* origen de datos de delegación utilizará este EJB CMP. En nuestro ejemplo, si el código de cuenta (accountId)
* comienza con "W", lo que significa que los datos residen en la base de datos de la costa oeste,
* se utilizará el primer origen de datos de delegación. Por ejemplo:

* public String createAccount(String accountId, float balance) {
		// Establecer el origen de datos al que
accederá esta transacción.

// Si el código de cuenta comienza por "W", el CMP accederá al primer origen de datos;
// De lo contrario, se utilizará el segundo origen de datos.
if (accountId.startsWith("W")) {
dsHelper.setCurrentDataSourceJndiName(proxyJndiName, ds1JndiName);
}
else {
dsHelper.setCurrentDataSourceJndiName(proxyJndiName, ds2JndiName);
}


AccountLocal account = null;
try {
account = accountHome.create(accountId);
account.setCreationDate(new Timestamp(System.currentTimeMillis()));
account.setOpenBalance(balance);
account.setBalance(balance);
}
catch (CreateException ce) {
throw new EJBException(ce);
}
......

* 
* * 
* @ibm-api
*/
public interface WSProxyDataSourceHelper {

/** El nombre JNDI para que el usuario busque una instancia de WSProxyDataSourceHelper */
String JNDI_NAME = "java:comp/env/com/ibm/websphere/proxyds/WSProxyDataSourceHelper";

/**
* Resuelva la referencia del origen de datos en el nombre JNDI global. Por
* ejemplo, si se correlaciona una referencia de recursos "jdbc/myDS1" con un
* origen de datos con un nombre JNDI global "jdbc/Bank1",
* resolveDataSourceReference("jdbc/myDS1") devolverá "jdbc/Bank1".
* 
* @param dsResRefName nombre de la referencia de recursos
* @return nombre JNDI global del origen de datos resuelto de esta referencia.
* @exception ResRefNotFoundException indica que el nombre de la referencia de
* recursos no se puede encontrar
*/
String resolveDataSourceReference(String dsResRefName) throws ResRefNotFoundException;

/**
* 

Establezca el nombre JNDI (no el nombre de referencia de recurso) del origen
* de datos de delegación al que accederá la transacción actual. Actualmente, una
* transacción puede acceder a varios orígenes de datos del proxy. No obstante, para
* un origen de datos del proxy concreto, sólo se puede acceder a un origen de datos de delegación.
*
 * 
Por ejemplo, hay dos orígenes de datos del proxy con el nombre JNDI "jdbc/proxy1"
* y "jdbc/proxy2". Los orígenes de datos de delegación para el origen de datos del proxy "jdbc/proxy1" son "jdbc/ds1" y "jdbc/ds2". Los orígenes de datos de delegación para el * origen de datos del proxy "jdbc/proxy2" son "jdbc/ds3" y "jdbc/ds4". En una transacción, puede acceder a "jdbc/proxy1" y "jdbc/proxy2". No obstante, no puede acceder * a los dos orígenes de datos de delegación "jdbc/ds1" y "jdbc/ds2" para el origen de datos del proxy
* "jdbc/proxy1". Tampoco puede acceder a los dos orígenes de datos de delegación "jdbc/ds3"
* y "jdbc/ds4" para el origen de datos del proxy "jdbc/proxy2".
* 
* 

Durante el desarrollo, los desarrolladores no pueden saber el nombre JNDI
* global del origen de datos con el que se correlacionará una referencia de
* recurso. El único hecho conocido es el nombre de referencia del recurso.
* El procedimiento recomendado es llamar al método resolveDataSourceReference(String)
* para obtener el nombre JNDI del origen de datos correlacionado y luego llamar a
* setCurrentDataSourceJndiName(String, String) con el nombre JNDI global.
* 
* @param proxyJndiName el nombre JNDI del origen de datos del proxy
* @param dsJndiName el nombre JNDI del origen de datos de delegación actual
*/
void setCurrentDataSourceJndiName(String proxyJndiName, String dsJndiName);
}



Related concepts
Programación de Partitioning Facility

Tema de referencia    

Condiciones de uso | Comentarios Última actualización: Mar 14, 2006 11:07:33 AM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/WPF51/rwpfapi.html

© Copyright IBM 2005, 2006. Reservados todos los derechos.
Este centro de información se ha realizado con tecnología de Eclipse. (http://www.eclipse.org)