Exceções do Mediador JDBC

As exceções do mediador JDBC apresentam os erros relatados pelo banco de dados ou indicam o uso de metadados inválidos na tentativa de instanciar o DMS.

Exceções

A exceção do Mediador é a exceção raiz de todos os serviços de mediador de dados e a exceção JDBCMediator é a exceção raiz para o JDBC DMS em específico.

A exceção DB ocorre quando um erro é relatado pelo banco de dados. Isso pode ocorrer de várias maneiras:
  • quando a conexão que está sendo utilizada tiver a propriedade AutoCommit definida como true, mas o JDBC DMS estiver controlando a transação e precisar que ela seja definida como false
  • quando um banco de dados não suportado estiver tentando ser utilizado
  • quando ocorrerem outros erros de banco de dados de backend durante a consolidação ou o rollback.

Ocorre uma exceção OCC (Optimistic Concurrency Control) quando a operação applyChanges() resultar em uma colisão de dados. Quando isso ocorrer, a exceção conterá os valores de linha originais, valores de linha atuais e os valores de linha tentados. Esses valores são utilizados para ajudar na recuperação do erro.

Ocorre uma exceção InvalidMetadata para os metadados inválidos fornecidos ao JDBC DMS após a criação. Isso pode ocorrer quando uma consulta exige tabelas ou colunas que não estejam definidas nos metadados, ou quando há nomes de coluna idênticos para tabelas diferentes no Oracle, Informix e nas versões suportadas mais antigas dos bancos de dados Sybase.

Exemplo: Forçando as colisões de dados OCC e as exceções do mediador JDBC O exemplo a seguir força uma colisão para demonstrar a detecção e mostra a exceção que ocorre como resultado.

// Esse exemplo assume que um mediador já foi 
// criado e o primeiro nome na lista é Sam.  
// Ele também assume que a tabela do Cliente possui uma coluna OCC 
// e que os metadados definiram essa coluna como sendo a 
// coluna de colisão.

DataObject graph1 = mediator.getGraph();
DataObject graph2 = mediator.getGraph();
  
DataObject customer1 = (DataObject)graph1.getList("CUSTOMER").get(0);
customer1.set("CUSTFIRSTNAME", "Bubba");
  
DataObject customer2 = (DataObject)graph2.getList("CUSTOMER").get(0);
customer2.set("BOWLERFIRSTNAME", "Slim");
 
mediator.applyChanges(graph2);
  
try 
{
 mediator.applyChanges(graph1);  
} 
catch (OCCException e) 
{
// Como o graph1 foi obtido antes de graph2 e 
// graph2 já foi submetido, tentar aplicar 
// as mesmas alterações em graph1 provoca 
// essa Exceção OCC.

assertEquals("Sam", e.getOriginalDO(). getString("CUSTFIRSTNAME"));
assertEquals("Bubba", e.getChangedDO(). getString("CUSTFIRSTNAME"));
assertEquals("Slim", e.getDatabaseDO(). getString("CUSTFIRSTNAME")); 
}

Í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_jdbcmedex
Nome do arquivo: rdat_jdbcmedex.html