Rastreamento do cliente da rede O cliente da rede do fornece facilidade de rastreamento, para coletar informações de rastreamento do JDBC e ver os fluxos do protocolo. Rastreamento do cliente da rede

Existem várias maneiras de obter saída de rastreamento. Entretanto, a maneira mais fácil de obter saída de rastreamento é utilizando o atributo traceFile na URL no ij. O exemplo a seguir mostra o envio de todo o rastreamento para o arquivo trace.out, a partir de uma sessão ij. ij>connect 'jdbc:derby://localhost:1527/meubanco; create=true;traceFile=trace.out;user=user1;password=secret4me';

Implementação do rastreamento do ClientDataSource

Para coletar dados de rastreamento ao obter conexões usando ClientDataSource, pode ser empregado um dos três métodos a seguir:

  • Utilizar o método setLogWriter(java.io.PrintWriter) de ClientDataSource, e definir PrintWriter com um valor não nulo.
  • Utilizar o método setTraceFile(String filename) de ClientDataSource.
  • Utilizar o método setTraceDirectory(String dirname) de ClientDataSource para rastrear cada fluxo de conexão em seu próprio arquivo, em programas que possuem várias conexões.

Implementação do rastreamento do DriverManager

Quando se obtém conexões utilizando o DriverManager, pode ser empregada uma das duas opções a seguir para habilitar a coleta de informações de rastreamento:

  • Utilizar o método setLogWriter(java.io.PrintWriter) de DriverManager, e definir PrintWriter como um valor não nulo.
  • Utilizar o atributo da URL traceFile ou traceDirectory para definir uma destas propriedades, antes de criar a conexão com o método DriverManager.getConnection().

Alteração do nível de rastreamento padrão

O nível de rastreamento padrão é ClientDataSource.TRACE_ALL. O nível de rastreamento pode ser escolhido chamando o método setTraceLevel(int level), ou definindo o atributo da URL traceLevel: String url = "jdbc:derby://meuhospedeiro.meudominio.com:1528/meubanco" + ";traceFile=/u/user1/trace.out" + ";traceLevel=" + org.apache.derby.jdbc.ClientDataSource.TRACE_PROTOCOL_FLOWS; DriverManager.getConnection(url,"user1","secret4me"); Níveis de rastreamento disponíveis e seus valores Nível de rastreamento Valor org.apache.derby.jdbc.ClientDataSource.TRACE_NONE 0x0 org.apache.derby.jdbc.ClientDataSource.TRACE_CONNECTION_CALLS 0x1 org.apache.derby.jdbc.ClientDataSource.TRACE_STATEMENT_CALLS 0x2 org.apache.derby.jdbc.ClientDataSource.TRACE_RESULT_SET_CALLS 0x4 org.apache.derby.jdbc.ClientDataSource.TRACE _DRIVER_CONFIGURATION 0x10 org.apache.derby.jdbc.ClientDataSource.TRACE_CONNECTS 0x20 org.apache.derby.jdbc.ClientDataSource.TRACE_PROTOCOL_FLOWS 0x40 org.apache.derby.jdbc.ClientDataSource.TRACE _RESULT_SET_META_DATA 0x80 org.apache.derby.jdbc.ClientDataSource.TRACE _PARAMETER_META_DATA 0x100 org.apache.derby.jdbc.ClientDataSource.TRACE_DIAGNOSTICS 0x200 org.apache.derby.jdbc.ClientDataSource.TRACE_XA_CALLS 0x800 org.apache.derby.jdbc.ClientDataSource.TRACE_ALL 0xFFFFFFFF;
Para especificar mais de um nível de rastreamento, deve ser utilizada uma das seguintes técnicas:

  • Utilizar operadores OR bit-a-bit ( | ) entre dois ou mais valores de rastreamento. Por exemplo, para rastrear os fluxos do protocolo e chamadas de conexão deve ser especificado o seguinte valor para traceLevel: TRACE_PROTOCOL_FLOWS | TRACE_CONNECTION_CALLS
  • Utilizar o operador de complemento bit-a-bit ( ~ ) com o valor de rastreamento para especificar todos, exceto um determinado rastreamento. Por exemplo, para rastrear tudo, exceto os fluxos do protocolo, deve ser especificado o seguinte valor para traceLevel: ~TRACE_PROTOCOL_FLOWS