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

Programmazione del bean di sessione

Aprire AccountTransactionBean.java in WSAD V5.1 ed esaminare il codice. Nel bean di sessione, sono definiti il nome del riferimento risorse e i nomi JNDI risolti. Di seguito è riportato il codice nel bean che definisce tali attributi.
    /** Il nome del riferimento risorse dell'origine dati proxy */
    private static String proxyResRef = "jdbc/proxyDS";

    /** Riferimento risorse dell'origine dati 1 */
    private static String resRef1 = "jdbc/myDS1";

    /** Riferimento risorse dell'origine dati 2 */
    private static String resRef2 = "jdbc/myDS2";

    /** Nome JNDI dell'origine dati per il riferimento risorse dell'origine dati 1 */
    private String globalDSJNDIName1 = null;

    /** Nome JNDI dell'origine dati per il riferimento risorse dell'origine dati 2 */
    private String globalDSJNDIName2 = null;
    
    /** Nome JNDI dell'origine dati globale per il riferimento risorse dell'origine dati proxy */
    private String globalProxyDSJNDIName = null;
È definita anche un'istanza WSProxyDataSourceHelper in modo che il bean di sessione la possa utilizzare per risolvere il nome JNDI dell'origine dati e impostare il nome JNDI dell'origine dati per la transazione.
	/** 
	 * l'istanza WSProxyDataSourceHelper utilizzata per impostare il nome JNDI dell'origine dati
	 * per la transazione corrente e risolve il riferimento risorse dell'origine dati 
	 * al nome JNDI globale
	 */
	WSProxyDataSourceHelper dsHelper = null;

Di seguito è riportato il metodo setSessionContext:
	public void setSessionContext(javax.ejb.SessionContext ctx) {
        mySessionCtx = ctx;

        // Ricercare WSProxyDataSourceHelper e le directory principali locali EJB
        try {
            InitialContext ic = new InitialContext();
            dsHelper = (WSProxyDataSourceHelper) ic.lookup(WSProxyDataSourceHelper.JNDI_NAME);
            accountHome = (AccountLocalHome) ic.lookup(accountHomeJNDIName);
            accountOwnerHome = (AccountOwnerLocalHome) ic.lookup(accountOwnerHomeJNDIName);
        }
        catch (Exception e) {
            throw new EJBException(e);
        }
        
        // Richiama il nome server
        AdminService service = AdminServiceFactory.getAdminService();
        SERVER_NAME =
            service.getCellName()
                + "/"
                + service.getNodeName()
                + "/"
                + AdminServiceFactory.getAdminService().getProcessName();

        // Risolve i riferimenti risorse sui nomi JNDI dell'origine dati globale
        try {
            globalDSJNDIName1 = dsHelper.resolveDataSourceReference(resRef1);
            globalDSJNDIName2 = dsHelper.resolveDataSourceReference(resRef2);
            globalProxyDSJNDIName = dsHelper.resolveDataSourceReference(proxyResRef);
        }
        catch (ResRefNotFoundException rrnfe) {
            throw new EJBException(rrnfe);
Ricercare WSProxyDataSourceHelper dallo spazio dei nomi JNDI utilizzando la seguente istruzione:
dsHelper = (WSProxyDataSourceHelper ) ic.lookup(WSProxyDataSourceHelper .JNDI_NAME);
Quindi ricercare, AccountLocalHome e AccountOwnerLocalHome. Successivamente, utilizzare l'API AdminService per richiamare il nome del server. Utilizzare questo nome server per verificare che l'indirizzamento della partizione sia corretto. Gli utenti non devono effettuare questa operazione nelle proprie applicazioni. Il runtime dell'utilità di partizione garantisce il funzionamento corretto dell'indirizzamento delle partizioni.
Richiamare la seguente istruzione per risolvere i riferimenti alle origini dati.
globalDSJNDIName1 = dsHelper.resolveDataSourceReference(resRef1);
In fase di sviluppo dell'applicazione, lo sviluppatore non conosce il nome JNDI a cui verrà associato questo riferimento risorse. Il componente dell'origine dati proxy fornisce un'API per l'applicazione per richiamare il nome JNDI dell'origine dati. Tale origine dati dei nomi JNDI verrà utilizzata per indicare al runtime quale origine dati utilizzare.
A questo punto, diamo un'occhiata al metodo aziendale. Di seguito è riportato un frammento di codice per uno dei metodi aziendali in AccountTransactionBean.java
	/**
	 * prelievo di denaro da un conto
* @param accountId
	 * @param amount
	 * @return
	 * @throws InSufficientFundException
	 */
	public String withdraw(String accountId, float amount) throws 
  InSufficientFundException {
		// Imposta l'origine dati a cui accederà tale transazione.
		setDataSource(accountId);

		try {
			AccountLocal account = accountHome.findByPrimaryKey(accountId);
			account.withdraw(amount);
		}
		catch (ObjectNotFoundException onfe) {
			throw new EJBException(onfe);
		}
		catch (FinderException fe) {
			throw new EJBException(fe);
		}
		return SERVER_NAME;
	}

La differenza tra questo metodo e un metodo normale sta nel fatto che è stata aggiunta la seguente istruzione:
		// Imposta l'origine dati a cui accederà tale transazione.
		setDataSource(accountId);
Di seguito è riportato il metodo setDataSource:
	    /**
     * Imposta l'origine dati che CMP utilizzerà per la transazione corrente.
     * Se accountID inizia con W, allora verrà utilizzata l'origine dati 1. Se invece l'accountID 
     * inizia con E, verrà utilizzata l'origine dati 2. 
     * 
     * @param s
     */
    private void setDataSource(String s) {
        if (s.startsWith("W")) {
            dsHelper.setCurrentDataSourceJndiName(globalProxyDSJNDIName, globalDSJNDIName1);
        }
        else {
            dsHelper.setCurrentDataSourceJndiName(globalProxyDSJNDIName, globalDSJNDIName2);
        }
    }
Il metodo setDataSource utilizza WSProxyDataSourceHelper per impostare il nome JNDI dell'origine dati corrente per la transazione corrente. Se accountId inizia con W, che significa che l'ID account deve essere memorizzato nel database della costa ovest, allora il nome JNDI globalDSJNDIName1 verrà impostato sul thread. Se invece accountId inizia con E, che significa che l'ID account deve essere memorizzato nel database della costa est, allora il nome JNDI globalDSJNDIName2 verrà impostato sul thread.

A questo punto, l'applicazione è stata abilitata con il supporto dell'origine dati proxy. Il passo successivo consiste nel configurare le origini dati DB2 e l'origine dati proxy.




Related concepts
Sviluppo delle applicazioni mediante il supporto dell'origine dati proxy in WSAD

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/rwpfprgramsessionbean.html

© Copyright IBM 2005, 2006. Tutti i diritti riservati.
Questo centro informazioni utilizza la tecnologia Eclipse. (http://www.eclipse.org)