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

API

A API principal para o suporte à origem de dados do proxy é WSProxyDataSourceHelper. A seguir está a interface WSProxyDataSourceHelper:

package com.ibm.websphere.proxyds;

/**
* 

A interface WSProxyDataSourceHelper é uma interface utilizada para suporte de
* várias origens de dados de CMP (também chamadas Proxy DataSource). Os usuários podem consultar
* uma instância de WSProxyDataSourceHelper do espaço de nome de JNDI utilizando o nome de JNDI
* WSProxyDataSourceHelper.JNDI_NAME.


* 
* Essa interface é utilizada para suportar o modelo do Proxy DataSource. A seção * interface WSDataSourceHelper que suporta o modelo V5 Proxy DataSource
* foi reprovada. É altamente recomendado que os usuários utilizem essa interface para
* que tenham os benefícios do modelo Proxy DataSource.


* 
* 

Existem dois métodos auxiliares nessa interface.



* 

		* resolveDataSourceReference(String):
* Este método auxiliar é utilizado para resolver o nome de JNDI global da
* origem de dados associada a uma referência de recurso. 
 * Por exemplo, se umareferência de recurso "jdbc/myDS1" for mapeada para uma
 origem de dados com nome
* de JNDI global "jdbc/Bank1", a chamada de método
 resolveDataSourceReference("jdbc/myDS1")
* retornará "jdbc/Bank1".
			* 
			* 
		* setCurrentDataSourceJndiName(String, String):
* Este método é utilizado para definir o nome de JNDI
 (não o nome da referência de recurso)
			* O Delegate DataSource de um Proxy DataSource específico que a transação atual
			* acessará. O nome de JNDI do DataSource pode ser adquirido utilizando o
			* método resolveDataSourceReference(String).
* 
* 

* Segue um exemplo:


* 
* 



Um aplicativo possui uma "Conta" EJB CMP. Os dados da Conta
* são espalhados em dois diferentes servidores de banco de dados DB2, um na costa oeste e o outro
* na costa leste. Para que a Conta do EJB CMP
* acesse ambos os bancos de dados, o modelo Proxy DataSource é utilizado.


* 
* 

A Conta EJB CMP é configurada com o CMP Connection Factory "jdbc/ProxyDS".
* O Bean de Sessão AccountTransaction, que atua como
* a fachada da sessão para a Conta EJB CMP, é configurado com três
* referências de recurso "jdbc/myDS1", "jdbc/myDS2" e "jdbc/proxy".


* 
* 

No espaço de administração, o administrador cria duas origens de dados do DB2
* "jdbc/Account1" e "jdbc/Account2", uma para o banco de dados da consta oeste e a
* outra para o banco de dados da costa leste. O administrador também cria um
* Proxy DataSource "jdbc/Accountroxy".
* A propriedade customizada jndiNames desse Proxy DataSource é configurada como
* "jdbc/Account1;jdbc/Account2"


* 
* 


Durante o tempo de implementação, as referências de origem de dados "jdbc/myDS1" e "jdbc/myDS2"
* são mapeadas para as origens de dados físicas "jdbc/Account1" e "jdbc/Acocunt2".
* A referência da origem de dados "jdbc/proxy"
* é mapeada para a origem de dados de proxy física "jdbc/AccountProxy". A Connection Factory CMP
* "jdbc/ProxyDS" também é mapeada para o mesmo Proxy DataSource físico "jdbc/AccountProxy".



* 
* 

Durante o tempo de desenvolvimento, o aplicativo não sabe para quais
* origens de dados físicas essas referências de recursos
* são mapeadas. Para obter o nome de JNDI das origens de dados físicas, o aplicativo
* pode resolver as origens de dados no método setSessionContext utilizando
* o seguinte código:


* 
*


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



* 
* 
* 

Antes que o bean de sessão chame os EJBs de CMP, o bean de sessão pode utilizar
* o método setCurrentDataSourceJndiName(String, String) para indicar qual
* origem de dados delegada esse EJB CMP utilizará. Em nosso exemplo, se o ID da conta
* começar com "W", o que significa que os dados residem no banco de dados da costa oeste, a
* primeira origem de dados delegada deve ser utilizada. Por exemplo:

* public String createAccount(String accountId, float balance) {
		// Definir a origem de dados que esta transação acessará.

// Se o ID da conta começar com "W", o CMP acessará a primeira origem de dados;
// Caso contrário, a segunda origem de dados será utilizada.
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 {

/** O nome de JNDI para o usuário consultar uma instância de WSProxyDataSourceHelper */
String JNDI_NAME = "java:comp/env/com/ibm/websphere/proxyds/WSProxyDataSourceHelper";

/**
* Resolva a referência da origem de dados para o nome de JNDI global. Por exemplo: 
     * se uma referência de recurso "jdbc/myDS1" for mapeada para uma origem de
* dados com o nome de JNDI global "jdbc/Bank1", resolveDataSourceReference
     * ("jdbc/myDS1")
* retornará "jdbc/Bank1".
* 
* @param dsResRefName nome da referência de recurso
* @return o nome de JNDI global da origem de dados resolvido para esta
     * referência de recurso.
* @exception ResRefNotFoundException indica que o nome da referência de
* recurso não pode ser localizado.
*/
String resolveDataSourceReference(String dsResRefName) throws ResRefNotFoundException;

/**
* 

Configure o nome de JNDI (não o nome da referência de recurso) do Delegate DataSource
* dados que a transação atual acessará. No momento, uma transação pode
* acessar vários Proxy DataSources. No entanto, para um determinado Proxy
* DataSource, apenas um Delegate DataSource pode ser acessado.


 *
 * 
Por exemplo, existem dois Proxy DataSources com o nome de JNDI "jdbc/proxy1"
* e "jdbc/proxy2". Os Delegate DataSources para Proxy DataSource "jdbc/proxy1"
* são "jdbc/ds1" e "jdbc/ds2". Os Delegate DataSources para Proxy DataSource
* "jdbc/proxy2" são "jdbc/ds3" e "jdbc/ds4". Em uma transação, você pode
* acessar "jdbc/proxy1" e "jdbc/proxy2". No entanto, você não pode acessar
* Delegate DataSources "jdbc/ds1" e "jdbc/ds2" para a origem de dados do proxy
* "jdbc/proxy1". Você não pode acessar Delegate DataSources "jdbc/ds3"
* e "jdbc/ds4" para Proxy DataSource "jdbc/proxy2".


* 
* 

Durante o desenvolvimento, os desenvolvedores não podem saber o nome de JNDI global
* da origem de dados para o qual uma referência de recurso será mapeada. A seção * único fato conhecido é o nome da referência de recurso.
A prática recomendada é
* chamar o método resolveDataSourceReference(String) para obter o nome de JNDI da
* origem de dados mapeada e, em seguida, chamar setCurrentDataSourceJndiName(String, String)
* com o nome de JNDI global.


* 
* @param proxyJndiName o nome de JNDI do Proxy DataSource
* @param dsJndiName o nome de JNDI atual de Delegate DataSource
*/
void setCurrentDataSourceJndiName(String proxyJndiName, String dsJndiName);
}



Related concepts
Programação do Recurso de Particionamento

Tópico de Referência    

Termos de Uso | Feedback Última atualização: Mar 21, 2006 12:52:01 PM 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. Todos os Direitos Reservados.
Este centro de informações é desenvolvido em tecnologia Eclipse. (http://www.eclipse.org)