Definir Informações do Cliente Implicitamente
Se você rastrear informações no banco de dados, poderá escolher uma de duas maneiras de transmitir os dados do cliente do WebSphere Application Server nas conexões com o banco de dados.
- Deseja manter seu aplicativo livre de APIs patenteadas ou
- Seu aplicativo utiliza CMP (Container-managed Persistence), nesse caso você não poderá usar a API proprietária para configurar as informações do cliente nas conexões com o banco de dados.
O recurso de rastreio do WebSphere Application Server fornece a capacidade de configurar as informações do cliente implicitamente. Você pode atribuir um dos dois grupos especiais de rastreio para ativar ou desativar a transmissão de informações do cliente: Rastreio WAS.clientinfo ou Rastreio WAS.clientinfopluslogging.
Possíveis Cenários de Uso
- Compartilhamento de conexões
No caso de compartilhamento de conexão, o WebSphere Application Server define as informações do cliente na primeira identificação de conexão adquirida apenas. Se o compartilhamento da conexão estiver ativado e dois ou mais métodos getConnection forem chamados (resultando em duas manipulações na mesma conexão), apenas a primeira chamada getConnection fará com que as informações do cliente sejam transmitidas ao banco de dados backend. Este cenário não se aplica ao processo explícito de transmissão de informações do cliente; nesses casos, cada método setClientInformation é retransmitido para o banco de dados independentemente do compartilhamento da conexão.
- Coexistência Implícita/ExplícitaQuando você utiliza ambos os procedimentos, explícito e implícito, para retransmitir informações do cliente, dados definidos explícita e implicitamente são combinados, mas a definição explícita geralmente tem precedência. Por exemplo, se o aplicativo definir as informações de contabilidade do cliente para "myAccountingInfo", a cadeia accountingInfo final transmitida ao banco de dado de backend será semelhante ao seguinte código de amostra:
Em que 000325 é o ID de encadeamento e WSRdbManagedConnectionImpl@1234 é a instância de conexão do WebSphere.000325_WSRdbManagedConnectionImpl@1234_myAccountingInfo:
- Reconfiguração de Informações do Cliente
Quando você configura o Application Server para transmitir informações do cliente, ele reconfigura as informações do cliente quando uma conexão é retornada ao conjunto, mas apenas se os mecanismos de rastreio WAS.clientinfo e WAS.clientinfopluslogging estiverem desativados (ou seja, WAS.clientinfo=all=disabled:WAS.clientinfopluslogging=all=disabled).
No caso explícito, entretanto, a operação de reconfiguração é feita somente quando o aplicativo emite setClientInformation(null) na conexão WSConnection.
Rastreio WAS.clientinfo
Por padrão, o mecanismo implícito está desativado. Você pode ativar esse mecanismo dinamicamente, sem parar e iniciar o servidor de aplicativos, ou estaticamente, configurando o grupo de rastreio WAS.clientinfo=all=enabled do WebSphere Application Server.
As informações coletadas implicitamente
e definidas na conexão do banco de dados consistem no nome do usuário, local
do usuário e nome do aplicativo.
As informações coletadas implicitamente
e definidas na conexão com o banco de dados consistem no ID do encadeamento, nome do usuário,
local do usuário e nome do aplicativo.
ID do Encadeamento
Um valor hexadecimal de oito caracteres que identifica o encadeamento Java que controla o processamento do pedido do aplicativo no WebSphere Application Server. Este ID é exibido no cabeçalho do rastreio.
- user name
- O nome do usuário que inicia o pedido do aplicativo. Essa opção será coletada e transmitida para o banco de dados backend (quando suportado). As informações aqui são coletadas chamando o método WSSecurityHelper.getFirstCaller.
- user location
- O nome do local do usuário, no formato célula:nó:servidor. Essa opção será coletada e transmitida para o banco de dados backend (quando apropriado). As informações aqui são coletadas chamando o método WSSecurityHelper.getFirstServer.
- nome do aplicativo
- O nome do aplicativo em execução. Este valor é a saída do método getApplication a partir do objeto Nome do Java EE. Esse valor é coletado independentemente da definição de Segurança Global.
Rastreio WAS.clientinfopluslogging
Ao depurar problemas de banco de dados, como conflitos, há um conjunto de informações que podem ajudar no esforço de depuração. Essas informações normalmente são obtidas ao ativar um rastreio do WebSphere Relational Resource Adapter (RRA), um rastreio de contêiner do Enterprise JavaBeans (EJB). No entanto, existem alguns casos em que o tempo é uma preocupação ao reproduzir um determinado problema. Ter muitas informações de rastreio pode alterar o comportamento do aplicativo (como alterar a cronometragem) e o problema pode não ocorrer mais.
- As sequências SQL que são executadas (por exemplo, select userId from tabl1 where id=? for update).
- Start, commit e rollback de transações.
- Chamadas EJB (por exemplo, Criar, Remover, findByPrimaryKey).