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

Programando o Bean de Sessão

Abra AccountTransactionBean.java no WSAD V5.1 e examine o código. No bean de sessão, o nome da referência de recurso e seus nomes de JNDI resolvidos são definidos. O código a seguir neste bean define estes atributos.
    /** O nome de referência de recurso do proxy datasource */
    private static String proxyResRef = "jdbc/proxyDS";

    	/** Referência de recurso de DataSource 1 */
    	private static String resRef1 = "jdbc/myDS1";

    	/** Referência de recurso de DataSource 2 */
    	private static String resRef2 = "jdbc/myDS2";

    	/** Nome de JNDI da origem de dados global para a referência de recurso de
 DataSource 1 */
    	private String globalDSJNDIName1 = null;

    	/** Nome de JNDI da origem de dados global para a referência de recurso de
 DataSource 2 */
    	private String globalDSJNDIName2 = null;
    
    /** Nome de JNDI da origem de dados global para a referência de recurso do Proxy Datasource */
    private String globalProxyDSJNDIName = null;
Uma instância WSProxyDataSourceHelper também é definida, portanto, o bean de sessão pode utilizá-la para resolver o nome de JNDI de origem de dados e definir o nome de JNDI da origem de dados para a transação.
	/** 
	 * a instância WSProxyDataSourceHelper utilizada para definir o nome de JNDI da origem de dados
	 * para a transação atual e resolver a referência de recurso da origem
    de dados
	 * para o nome de JNDI global
	 */
	WSProxyDataSourceHelper dsHelper = null;

O método setSessionContext é o seguinte:
 public void setSessionContext(javax.ejb.SessionContext ctx) {
                  mySessionCtx = ctx;

        // Consulte o WSProxyDataSourceHelper, e os homes locais 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);
        }
        
        		// Obter nome do servidor
        		AdminService service = AdminServiceFactory.getAdminService();
        SERVER_NAME =
            			service.getCellName()
                + "/"
                				+ service.getNodeName()
                + "/"
                				+ AdminServiceFactory.getAdminService().getProcessName();

        		// Resolver as referências de recurso para o nome de JNDI de origem de
     dados global
        try {            globalDSJNDIName1 = dsHelper.resolveDataSourceReference(resRef1);            			globalDSJNDIName2 = dsHelper.resolveDataSourceReference(resRef2);
            globalProxyDSJNDIName = dsHelper.resolveDataSourceReference(proxyResRef);
        }
        		catch (ResRefNotFoundException rrnfe) {
            			throw new EJBException(rrnfe);
Consulte WSProxyDataSourceHelper do espaço de nomes de JNDI utilizando a seguinte instrução:
dsHelper = (WSProxyDataSourceHelper ) ic.lookup(WSProxyDataSourceHelper .JNDI_NAME);
Em seguida, consulte AccountLocalHome e AccountOwnerLocalHome normalmente. Depois disso, utilize a API AdminService para obter o nome do servidor. Utilize este nome do servidor para verificar se o roteamento da partição está correto. Os usuários não precisam desempenhar isso em seus aplicativos. O tempo de execução do Recurso de Particionamento garante o comportamento correto de rota de partição.
Chame a seguinte instrução para resolver as referências da origem de dados.
globalDSJNDIName1 = dsHelper.resolveDataSourceReference(resRef1);
Durante o tempo de desenvolvimento do aplicativo, o desenvolvedor não sabe para qual nome de JNDI esta referência de recurso será mapeada. O componente Proxy Datasource fornece uma API para que o aplicativo obtenha o nome de JNDI da origem de dados. Esta origem de dados do nome de JNDI será utilizada para informar o tempo de execução no qual a origem de dados deve ser utilizada.
Agora, vamos examinar o método de negócios. Aqui está o trecho de código para um dos métodos de negócios extraídos do AccountTransactionBean.java
	/**
	 * withdraw money from an account
	 * @param accountId
	 * @param amount
	 * @return
	 * @throws InSufficientFundException
	 */
	public String withdraw(String accountId, float amount) throws
  InSufficientFundException {
		// Definir a origem de dados que esta transação acessará.
		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;
	}

A diferença entre este método e um método normal é que a seguinte instrução foi incluída:
		// Definir a origem de dados que esta transação acessará.
		setDataSource(accountId);
O método setDataSource é o seguinte:
	    /**
     	 * Definir a origem de dados que será utilizada pelo CMP para a transação atual.
     	 * Se accountID for iniciado com W, a origem de dados 1 será utilizada.
  Se accountID
     	 * for iniciado com E, a origem de dados 2 será utilizada.
     * 
     	 * @param s
     */
    	private void setDataSource(String s) {
        		if (s.startsWith("W")) {
            dsHelper.setCurrentDataSourceJndiName(globalProxyDSJNDIName, globalDSJNDIName1);
        }
              else {
            dsHelper.setCurrentDataSourceJndiName(globalProxyDSJNDIName, globalDSJNDIName2);
        }
    }
O método setDataSource utiliza WSProxyDataSourceHelper para definir o nome de JNDI de origem de dados atual para a transação atual. Se accountId for iniciado com W, que significa que o ID da conta deve ser armazenado no banco de dados da costa oeste, o nome de JNDI globalDSJNDIName1 será definido no encadeamento. Se accountId for iniciado com E, que significa que o ID da conta deve ser armazenado no banco de dados da costa leste, o nome globalDSJNDIName2 de JNDI deve ser configurado no encadeamento.

Agora, seu aplicativo foi ativado com o suporte à origem de dados de proxy. A próxima etapa mostra como configurar as origens de dados DB2 e a origem de dados de proxy.




Related concepts
Desenvolvendo Aplicativos Utilizando o Suporte à Origem de Dados do Proxy no WSAD

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

© Copyright IBM 2005, 2006. Todos os Direitos Reservados.
Este centro de informações é desenvolvido em tecnologia Eclipse. (http://www.eclipse.org)