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

API

L'API principale per il supporto dell'origine dati proxy èWSProxyDataSourceHelper. Di seguito è riportata l'interfaccia WSProxyDataSourceHelper:

package com.ibm.websphere.proxyds;

/**
* 

L'interfaccia WSProxyDataSourceHelper è un'interffaccia utilizzata per il 
* supporto dell'origine dati CMP (detta anche origine dati proxy). Gli utenti possono ricercare 
* un'istanza di WSProxyDataSourceHelper dallo spazio dei nomi JNDI utilizzano il nome JNDI 
* WSProxyDataSourceHelper.JNDI_NAME.


* 
* Questa interfaccia è utilizzata per supportare il modello dell'origine dati proxy. L'unico 
* interfaccia WSDataSourceHelper che supporta il modello dell'origine dati proxy V5 
* non è più utilizzata. Gli utenti devono utilizzare questa interfaccia 
* per sfruttare i vantaggi del modello dell'origine dati del proxy.


* 
* 

Esistono due metodi helper in questa interfaccia.



* 

		* resolveDataSourceReference(String):
			* Questo metodo helper è utilizzato per risolvere il nome JNDI globale 
			* dell'origine dati associata a un riferimento risorse. Ad esempio, se un 
			* riferimento risorse "jdbc/myDS1" è associato a un'origine dati con 
			* nome JNDI globale "jdbc/Bank1", la chiamata del metodo resolveDataSourceReference("jdbc/myDS1") 
			* restituirà "jdbc/Bank1".
			* 
			* 
		* setCurrentDataSourceJndiName(String, String):
			* Questo metodo è utilizzato per impostare il nome JNDI (non il nome del riferimento risorse) 
			* dell'origine dati delegata di una determinata origine dati proxy a cui accede 
			* la transazione corrente. Il nome JNDI dell'origine dati può essere ottenuto utilizzando 
			* il metodo resolveDataSourceReference(String).
* 
* 

* Segue un esempio:


* 
* 



Un'applicazione ha l'EJB CMP "Account". I dati di Account 
* sono divisi in due diversi server di database DB2, uno sulla costa ovest e l'altro 
* sulla costa est. Perché L'EJB CMP 
* Account possa accedere a entrambi i database, viene utilizzato il modello dell'origine dati proxy.


* 
* 

L'EJB CMP Account è configurato con il valore predefinito di connessione CMP "jdbc/ProxyDS". 
* Il bean di sessione AccountTransaction, che funziona da
* frontespizio di sessione per l'EJB CMP Account, è configurato con tre 
* riferimenti risorse, "jdbc/myDS1", "jdbc/myDS2" e "jdbc/proxy".


* 
* 

Nello spazio di gestione, l'amministratore crea due origini dati DB2 
* "jdbc/Account1" e "jdbc/Account2", uno per il database della costa ovest e 
* l'altro per il database della costa est. L'amministratore crea inoltre 
* un'origine dati proxy "jdbc/Accountroxy".
* La proprietà personalizzata jndiNames di questa origine dati proxy è impostata su 
* "jdbc/Account1;jdbc/Account2"


* 
* 


In fase di distribuzione, i riferimenti all'origine dati "jdbc/myDS1" e "jdbc/myDS2"
* sono associati alle origini dati fisiche "jdbc/Account1" e "jdbc/Acocunt2". 
* Il riferimento all'origine dati "jdbc/proxy" 
* è associato all'origine dati proxy "jdbc/AccountProxy". Il valore predefinito di connessione CMP 
* "jdbc/ProxyDS" viene associato alla stessa origine dati proxy fisica "jdbc/AccountProxy". 



* 
* 

In fase di sviluppo, l'applicazione non riconosce 
* le origine fisiche a cui sono associati i 
* riferimenti risorse. Per ottenere il nome JNDI delle origini dati fisiche, 
* l'applicazione può risolvere le origini dati nel metodo setSessionContext utilizzando 
* il seguente codice:


* 
*


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



* 
* 
* 

Prima che il bean di sessione richiami gli EJB CMP, il bean di sessione può utilizzare 
* il metodo setCurrentDataSourceJndiName(String, String) per indicare 
* l'origine dati delegata che verrà utilizzata dall'EJB CMP. Nel nostro esempio, se l'ID di account 
* inizia con "W", che significa che i dati si trovano nel database della costa ovest, 
* allora deve essere utilizzata la prima origine dati delegata. Ad esempio:


* public String createAccount(String accountId, float balance) {
// Imposta l'origine dati a cui avrà accesso questa transazione.

// Se l'ID dell'account inizia con "W", il CMP avrà accesso alla prima origine dati
// altrimenti, verrà utilizzata la seconda origine dati.
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 {

/** Il nome JNDI in cui l'utente deve ricercare un'istanza di WSProxyDataSourceHelper */
String JNDI_NAME = "java:comp/env/com/ibm/websphere/proxyds/WSProxyDataSourceHelper";

/**
* Risolve il riferimento all'origine dati sul nome JNDI globale. Ad esempio, 
* se un riferimento risorse "jdbc/myDS1" è associato a un'origine dati con 
* nome JNDI globale "jdbc/Bank1", resolveDataSourceReference("jdbc/myDS1") 
* restituirà "jdbc/Bank1".
* 
* @param dsResRefName nome riferimento risorsa
* @return il nome JNDI globale dell'origine dati risolta per questo riferimento risorsa.
* @exception ResRefNotFoundException indica che il nome del riferimento risorsa 
* non è stato trovato.
*/
String resolveDataSourceReference(String dsResRefName) throws ResRefNotFoundException;

/**
* 

Imposta il nome JNDI (non il nome del riferimento risorsa) dell'origine dati delegata 
* a cui accederà la transazione corrente. Solo una transazione 
* può accedere a più origini dati proxy. Tuttavia, per una determinata 
* origine dati proxy, è possibile accedere soltanto a un'origine dati delegata.


 *
 * 
Ad esempio, esistono due origini dati proxy con nome JNDI "jdbc/proxy1"
* e "jdbc/proxy2". Le origini dati delegate per l'origine dati proxy "jdbc/proxy1"
* sono "jdbc/ds1" e "jdbc/ds2". Le origini dati delegate per l'origine dati proxy 
* "jdbc/proxy2" sono "jdbc/ds3" e "jdbc/ds4". In una transazione, è possibile 
* accedere sia a "jdbc/proxy1" che a "jdbc/proxy2". Tuttavia, non è possibile accedere a 
* entrambe le origini dati delagate "jdbc/ds1" e "jdbc/ds2" per l'origine dati proxy 
* "jdbc/proxy1". Non è possibile accedere neanche a entrambe le origini dati delegate "jdbc/ds3"
* e "jdbc/ds4" per l'origine dati proxy "jdbc/proxy2".


* 
* 

In fase di sviluppo, gli sviluppatori non conoscono il nome JNDI 
* globale dell'origine dati a cui verrà associato un riferimento risorse. L'unico 
* dato noto è il nome del riferimento risorse. La pratica consigliata è 
* richiamare il metodo resolveDataSourceReference(String) per ottenere il nome JNDI 
* dell'origine dati associata e richiamare quindi setCurrentDataSourceJndiName(String, String) 
* con il nome JNDI globale.


* 
* @param proxyJndiName il nome JNDI dell'origine dati proxy
* @param dsJndiName il nome JNDI dell'origine dati delegata corrente
*/
void setCurrentDataSourceJndiName(String proxyJndiName, String dsJndiName);
}



Related concepts
Programmazione per l'utilità di partizione

Argomento Riferimenti    

Termini di utilizzo | Commenti Ultimo aggiornamento: Mar 20, 2006 1:10:47 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. Tutti i diritti riservati.
Questo centro informazioni utilizza la tecnologia Eclipse. (http://www.eclipse.org)