Recursos de Portabilidade de Acesso a Dados

Estas interfaces funcionam com o RRA (Relational Resource Adapter) para tornar as funções específicas do banco de dados operáveis em conexões entre o servidor de aplicativos e esse banco de dados.

Em outras palavras, seus aplicativos podem acessar dados de diferentes bancos de dados e utilizar funções que são específicas ao banco de dados, sem quaisquer alterações de códigos. Além disso, o WebSphere Application Server permite conectar-se a uma origem de dados não suportada pela persistência do WebSphere. No entanto, a origem de dados deve ser implementada como o tipo XADataSource ou o tipo ConnectionPoolDataSource e deve estar em conformidade com a especificação JDBC 2.x.

É possível alcançar a portabilidade de aplicativos por meio dos seguintes recursos:

Interface DataStoreHelper
Com esta interface, cada plataforma do armazém de dados pode conectar funções específicas a seu próprio armazém de dados particular utilizadas pelo tempo de execução do adaptador de recurso relacional. O WebSphere Application Server fornece uma implementação para cada provedor JDBC suportado.

A interface também fornece uma classe GenericDataStoreHelper para uso por origens de dados não suportadas. É possível subclassificar a classe GenericDataStoreHelper ou outras auxiliares fornecidas pelo WebSphere para suportar qualquer origem de dados nova.

Nota: Se você estiver configurando o acesso a dados por meio de um provedor JDBC definido pelo usuário, não implemente a interface DataStoreHelper diretamente. Subclassifique a classe GenericDataStoreHelper ou uma das classes de implementação DataStoreHelper fornecidas pela IBM® (se o comportamento do banco de dados ou a sintaxe SQL for semelhante a um dessas classes fornecidas).

Para obter informações adicionais, consulte o tópico DataStoreHelper da documentação da API (conforme listado no índice de documentação da API).

O segmento de código a seguir mostra como um novo auxiliar de data store é criado para incluir novos mapeamentos de erros para uma origem de dados não suportada.

public class NewDSHelper extends GenericDataStoreHelper
{
  public NewDSHelper(java.util.Properties dataStoreHelperProperties)   
  {
    super(dataStoreHelperProperties); 
    java.util.Hashtable myErrorMap = null;
    myErrorMap = new java.util.Hashtable();
    myErrorMap.put(new Integer(-803), myDuplicateKeyException.class);
    myErrorMap.put(new Integer(-1015), myStaleConnectionException.class);
    myErrorMap.put("S1000", MyTableNotFoundException.class);
    setUserDefinedMap(myErrorMap);
    ...
  }
}
Classe WSCallHelper
Essa classe fornece dois métodos que permitem utilizar métodos específicos do fornecedor e classes que não estão em conformidade com as APIs JDBC padrão (e não fazem parte dos pacotes de extensão do WebSphere Application Server).
  • Método jdbcCall()

    Utilizando o método jdbcCall() estático, você pode chamar métodos JDBC não padrão específicos do fornecedor nos seus objetos JDBC. (Para obter informações adicionais, consulte o tópico WSCallHelper da documentação da API.) O seguinte segmento de código ilustra o uso desse método com uma origem de dados do DB2:

    Connection conn = ds.getConnection();
    // obter o atributo da conexão
    String connectionAttribute =(String) WSCallHelper.jdbcCall(DataSource.class, ds,
     "getConnectionAttribute", null, null);
    // setAutoClose como false
    WSCallHelper.jdbcCall(java.sql.Connection.class,
    conn, "setAutoClose",
    new Object[] { new Boolean(false)},
    new Class[] { boolean.class });
    // obter auxiliar do data store
    DataStoreHelper dshelper = WSCallHelper.getDataStoreHelper(ds);
  • Método jdbcPass()

    Utilize esse método para explorar classes JDBC não padrão que alguns fornecedores de banco de dados fornecem. Essas classes contêm métodos que requerem que os objetos JDBC proprietários dos fornecedores sejam transmitidos como parâmetros.

    Em específico, as implementações do Oracle podem envolver o uso de classes não padrão fornecidas pelo fornecedor. Os métodos contidos nessas classes incluem:

    oracle.sql.ArrayDescriptor ArrayDescriptor.createDescriptor(java.lang.String, java.sql.Connection)
    oracle.sql.ARRAY new ARRAY(oracle.sql.ArrayDescriptor, java.sql.Connection, java.lang.Object)
    oracle.xml.sql.query.OracleXMLQuery(java.sql.Connection, java.lang.String)
    oracle.sql.BLOB.createTemporary(java.sql.Connection, boolean, int)
    oracle.sql.CLOB.createTemporary(java.sql.Connection, boolean, int)
    oracle.xdb.XMLType.createXML(java.sql.Connection, java.lang.String)

    A amostra de código a seguir demonstra como utilizar o jdbcPass para chamar o método do Oracle XMLType.createXML em uma conexão. Essa função do Oracle cria um objeto do tipo XML fora dos dados XML que o banco de dados transmite para seu aplicativo.

    XMLType poXML = (XMLType)(WSCallHelper.jdbcPass(XMLType.class, 
    "createXML", new Object[]{conn,poString},
    	new Class[]{java.sql.Connection.class, java.lang.String.class},
    	new int[]{WSCallHelper.CONNECTION,WSCallHelper.IGNORE}));
    Para obter mais exemplos de utilização de jdbcPass e uma lista completa de parâmetros de métodos, consulte a documentação da API para a classe WSCallHelper. Neste centro de informações, acesse a documentação da API com as seguintes etapas:
    1. Clique em Referência > Documentação da API do Desenvolvedor > Interfaces de Programação de Aplicativos
    2. Clique em com.ibm.websphere.rsadapter
    3. No título Resumo da Classe, clique em WSCallHelper
    A primeira seção sobre jdbcPass descreve como utilizar o método para chamar métodos estáticos do banco de dados. A segunda seção sobre jdbcPass trata de métodos não estáticos do banco de dados.
    CUIDADO: O uso do método jdbcPass() faz com que o objeto JDBC seja utilizado fora dos mecanismos protetores do WebSphere Application Server. Executar determinadas operações (como definir autoCommit, ou configurações de isolamento de transação, etc.) fora desses mecanismos de proteção provocará problemas com o uso futuro dessas conexões em pool. A IBM não garante a estabilidade do objeto após a chamada desse método; é responsabilidade do usuário assegurar-se de que a chamada desse método não execute operações que danifiquem o objeto. O uso é responsabilidade do usuário.

    Devido a esses possíveis problemas, o WebSphere Application Server controla estritamente quais métodos são permitidos chamar utilizando o suporte do método jdbcPass(). Se você precisar de suporte para um método não listado anteriormente neste documento, entre em contato com o Suporte do WebSphere Application Server com informações sobre o método desejado.


Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_levport
Nome do arquivo: rdat_levport.html