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

Programación del bean de sesión

Abra AccountTransactionBean.java en WSAD V5.1 y examine el código. En el bean de sesión, se define el nombre de referencia del recurso y los nombres JNDI resueltos. El siguiente código de este bean define estos atributos.
    /** Nombre de referencia de recurso del origen de datos del proxy */
    private static String proxyResRef = "jdbc/proxyDS";

    	/** Referencia de recurso 1 del origen de datos */
    	private static String resRef1 = "jdbc/myDS1";

    	/** Referencia de recurso 2 del origen de datos */
    	private static String resRef2 = "jdbc/myDS2";

    	/** Nombre JNDI del origen de datos global para la referencia de recurso
1 del origen de datos */
    	private String globalDSJNDIName1 = null;

    	/** Nombre JNDI del origen de datos global para la referencia de recurso
2 del origen de datos */
    	private String globalDSJNDIName2 = null;
    
    	/** Nombre JNDI del origen de datos global para la referencia de recurso del origen de datos del proxy */
    private String globalProxyDSJNDIName = null;
También se define una instancia de WSProxyDataSourceHelper, de modo que el bean de sesión puede utilizarlo para resolver el nombre JNDI de origen de datos y establecerlo para la transacción.
	/** 
	 * la instancia WSProxyDataSourceHelper utilizada para establecer el
nombre JNDI de origen de datos
	 * de la transacción actual y resolver la referencia de recurso de origen
de datos
	 * en el nombre JNDI global
	 */
	WSProxyDataSourceHelper dsHelper = null;

A continuación figura el método setSessionContext:
	public void setSessionContext(javax.ejb.SessionContext ctx) {
        	mySessionCtx = ctx;

        		// Buscar WSProxyDataSourceHelper y las factorías locales de 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);
        }
        
        		// Obtener el nombre de servidor
        		AdminService service = AdminServiceFactory.getAdminService();
        SERVER_NAME =
            			service.getCellName()
                + "/"
                				+ service.getNodeName()
                + "/"
                				+ AdminServiceFactory.getAdminService().getProcessName();

        		// Resolver las referencias de recurso en los
  // nombres JNDI de origen de datos globales
        try {
            globalDSJNDIName1 = dsHelper.resolveDataSourceReference(resRef1);
            			globalDSJNDIName2 = dsHelper.resolveDataSourceReference(resRef2);
            globalProxyDSJNDIName = dsHelper.resolveDataSourceReference(proxyResRef);
        }
        		catch (ResRefNotFoundException rrnfe) {
            			throw new EJBException(rrnfe);
Busque WSProxyDataSourceHelper en el espacio de nombres JNDI mediante la siguiente sentencia:
dsHelper = (WSProxyDataSourceHelper ) ic.lookup(WSProxyDataSourceHelper .JNDI_NAME);
A continuación, busque AccountLocalHome y AccountOwnerLocalHome, del modo habitual. A continuación, utilice la API AdminService para obtener el nombre de servidor. Utilice este nombre de servidor para verificar que el direccionamiento de particiones es correcto. No es necesario que los usuarios realicen esto en sus aplicaciones. El programa de ejecución de Partitioning Facility garantiza el comportamiento correcto del direccionamiento de las particiones.
Llame a la siguiente sentencia para resolver las referencias de origen de datos.
globalDSJNDIName1 = dsHelper.resolveDataSourceReference(resRef1);
Durante el tiempo de desarrollo de la aplicación, el desarrollador no sabe con qué nombre JNDI se va a correlacionar esta referencia de recurso. El componente del origen de datos del proxy proporciona una API para que la aplicación obtenga el nombre JNDI del origen de datos. Este origen de datos del nombre JNDI se utilizará para indicar al tiempo de ejecución qué origen de datos se debe utilizar.
A continuación, pasemos al método de empresa. El fragmento de código siguiente corresponde a uno de los métodos de empresa withdraw de AccountTransactionBean.java.
	/**
	 * retirar dinero de una cuenta
	 * @param accountId
	 * @param amount
	 * @return
	 * @throws InSufficientFundException
	 */
	public String withdraw(String accountId, float amount) throws 
  InSufficientFundException {
		// Establecer el origen de datos al que
accederá esta transacción.
		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 diferencia entre este método y un método normal es que se añade la siguiente sentencia:
		// Establecer el origen de datos al que
accederá esta transacción.
		setDataSource(accountId);
A continuación figura el método setDataSource:
	    /**
     	 * Establecer el origen de datos que va a utilizar el CMP para la
  * transacción actual.
     	 * Si accountID empieza por W, se utilizará el origen de datos 1. Si
  * accountID empieza por E, se utilizará el origen de datos 2.
* 
     	 * @param s
     */
    	private void setDataSource(String s) {
        		if (s.startsWith("W")) {
            dsHelper.setCurrentDataSourceJndiName(globalProxyDSJNDIName, globalDSJNDIName1);
        }
        else {
            dsHelper.setCurrentDataSourceJndiName(globalProxyDSJNDIName, globalDSJNDIName2);
        }
    }
El método setDataSource utiliza WSProxyDataSourceHelper para establecer el nombre JNDI del origen de datos actual para la transacción actual. Si accountId empieza por W, que indica que el ID debe estar almacenado en la base de datos de la costa oeste, se establecerá en la hebra el nombre JNDI globalDSJNDIName1. Si accountId empieza por E, que indica que el ID debe estar almacenado en la base de datos de la costa este, se establecerá en la hebra el nombre JNDI globalDSJNDIName2.

Ahora, se ha habilitado la aplicación con el soporte de origen de datos del proxy. En el próximo paso, se muestra cómo configurar los orígenes de datos DB2 y el origen de datos del proxy.




Related concepts
Desarrollo de aplicaciones utilizando el soporte del origen de datos del proxy en WSAD

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