![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
Rastreio de Comunicações do Object Request Broker
O rastreio de comunicações do ORB (Object Request Broker), geralmente referido como CommTrace, contém a sequência de mensagens GIOP (General InterORB Protocol) enviadas e recebidas pelo ORB quando o aplicativo está em execução.
Pode ser necessário entender a sequência de baixo nível de interações de cliente para servidor ou de servidor para servidor durante a determinação de problemas. Este tópico utiliza entradas de rastreio de exemplos de log para explicar o conteúdo do log e ajudá-lo a compreender a sequência de interação. Ele se concentra somente nas mensagens GIOP e não discute em detalhes informações adicionais do rastreio que são exibidas quando interfere com os limites da mensagem GIOP.
Local
Quando o rastreio ORB é ativado, essas informações são colocadas no diretório app_server_root/profiles/profile_name/logs/server_name/trace.log.
Quando
o rastreio ORB é ativado, essas informações são colocadas no diretório
profile_root/logs/server_name/trace.log.
Sobre o Arquivo de Rastreio de ORB
Seguem propriedades do arquivo que é criado quando o rastreio de ORB é ativado.
- Somente leitura
- Atualizado pela função administrativa
- Utilize esse arquivo para localizar e resolver problemas relacionados ao ORB.
Como Interpretar a Saída
As próximas seções se referem à saída de log de amostra encontrada mais adiante neste tópico.
- Identificando as informações
- O início de uma mensagem GIOP é identificado por uma linha que contém
OUT GOING: ou IN COMING:, dependendo de se a mensagem é enviada ou recebida
pelo processo.Seguindo a entrada da linha de identificação encontra-se uma série de itens, formatados por conveniência, com informações extraídas da mensagem bruta que identifica os nós de extremidade nesta interação de mensagem específica. Consulte as linhas de 3 a 13 em ambos os exemplos. Os itens formatados incluem os seguintes:
- Tipo de mensagem GIOP (linha 3)
- Data e hora em que a mensagem foi registrada (linha 4)
- Informações que são úteis para identificar o encadeamento que está sendo executado quando a mensagem for registrada e outras informações específicas para o encadeamento (linha 5)
- Portas TCP/IP local e remota utilizadas para a interação (linhas 6 a 9)
- Versão de GIOP, ordem de bytes, uma indicação de se a mensagem é um fragmento e tamanho da mensagem (linhas 10 a 13)
- ID de pedido, resposta esperada e status da resposta
- Em seguida às informações de introdução
na mensagem, o ID do pedido é um inteiro gerado pelo ORB. Ele é utilizado para identificar e associar cada
pedido a sua resposta correspondente. Essa associação é necessária porque o ORB pode
receber pedidos de vários clientes e deve conseguir associar cada resposta
ao pedido de origem correspondente.
- As linhas 15 a 17 no exemplo do pedido mostram o ID do pedido, seguido por uma indicação para o nó de extremidade receptor de que uma resposta é esperada (CORBA suporta o envio de pedidos de via única para os quais não é esperada uma resposta.)
- A linha 15 de Entrada do Registro de Amostra - Resposta GIOP mostra o ID do pedido; a linha 33 mostra o status da resposta recebido após a conclusão do pedido enviado anteriormente.
- Chave de Objeto
- As linhas 18 a 20 no exemplo de pedido mostram a chave do objeto, a representação interna utilizada pelo ORB para identificar e localizar o objeto de destino que deve receber a mensagem de pedido. As chaves de objeto não são padronizadas.
- Operação
- A linha 21 no exemplo do pedido mostra o nome da operação que o objeto de destino inicia no nó de extremidade receptor. Neste exemplo, a operação específica pedida é denominada _get_value.
- Informações de contexto do serviço
- Os contextos de serviço na mensagem também
são formatados para conveniência.
Cada mensagem de GIOP pode conter uma sequência de contextos de serviço
enviados e recebidos por cada nó de extremidade. Os contextos de serviço, identificados por um ID exclusivo,
contêm dados utilizados na interação específica, tais como segurança, conversão de conjunto de códigos de
caracteres e informações sobre a versão do ORB.
O conteúdo
de alguns dos contextos de serviço é padronizado e especificado pelo OMG, enquanto
outros contextos de serviço são exclusivos e especificados por cada fornecedor. Os contextos de serviço
específicos da IBM são identificados com IDs que começam com 0x4942.
As linhas 22 a 41 no exemplo do pedido ilustram entradas típicas de contexto de serviço. Três contextos de serviço estão na mensagem de pedido, conforme mostrado na linha 22. O ID, o comprimento dos dados e os dados brutos de cada contexto de serviço são impressos a seguir. As linhas 23 a 25 mostram um contexto exclusivo da IBM, conforme indicado pelo ID 0x49424D12. As linhas 26 a 41 mostram dois contextos de serviço padrão, identificados pelo ID 0x6 (linha 26) e pelo ID 0x1 (linha 39).
As linhas 16-32 em Entrada de Registro de Amostra - Resposta GIOP ilustram dois contextos de serviço, um de propriedade da IBM (linha 17) e um padronizado (linha 20).
Para a definição dos contextos de serviço padronizados, consulte a especificação CORBA. O contexto de serviço 0x1 (CORBA::IOP::CodeSets) é utilizado para publicar os conjuntos de códigos de caracteres suportados pelo ORB para negociar e determinar o conjunto de códigos utilizado para transmitir dados de caracteres. O contexto de serviço 0x6 (CORBA::IOP::SendingContextRunTime) é utilizado por RMI-IIOP (Remote Method Invocation over the Internet Inter-ORB Protocol) para fornecer ao nó de extremidade receptor a IOR para o objeto SendingContextRuntime. O contexto de serviço IBM 0x49424D12 é utilizado para publicar as informações de ORB PartnerVersion para suportar a interoperabilidade release para release entre o envio e o recebimento de ORBs.
- Deslocamento de dados
- A linha 42 no exemplo de pedido mostra o deslocamento, relativo ao início da mensagem GIOP, em que o restante do corpo da mensagem de pedido ou de resposta está localizado. Essa parte da mensagem é específica para cada operação e varia de operação para operação. Portanto, ela não é formatada, já que o conteúdo específico não é conhecido pelo ORB. O deslocamento é impresso como ajuda, para localizar rapidamente os dados específicos da operação no dump de mensagem de GIOP bruto, que segue o deslocamento de dados.
- Dump de mensagem de GIOP bruto
- Começando na linha 45 no exemplo de pedido e na linha 36 em Entrada de Registro de Amostra - Resposta GIOP, um dump bruto de toda a mensagem GIOP é impresso em formato hexadecimal. As mensagens de pedido contêm os parâmetros requeridos pela operação fornecida e as mensagens de resposta contêm os valores de retorno e o conteúdo dos parâmetros de saída são requeridos pela operação fornecida. Para brevidade, nem todos os dados brutos estão nas figuras.
Amostra de Entrada de Log - Pedido GIOP
1. SAÍDA: . Mensagem de Pedido 4. Data: 17 de abril de 2002 22:00:43 CDT 5. Info de Encadeamento: P=842115:O=1:CT 6. Porta Local: 1243 (0x4DB) 7. IP Local: jdoe.austin.ibm.com/192.168.1.101 8. Porta Remota: 1242 (0x4DA) 9. IP Remoto: jdoe.austin.ibm.com/192.168.1.101 10. GIOP Version: 1.2 11. Ordem do Byte: big endian 12. Fragmento em seguida: Não 13. Tamanho da Mensagem: 268 (0x10C) -- 15. ID do Pedido: 5 16. Sinalizador de Responta: WITH_TARGET 17. Endereço de Destino: 0 18. Chave do Objeto: comprimento = 24 (0x18) 4B4D4249 00000010 BA4D6D34 000E0008 00000000 00000000 21. Operação: _get_value 22. Contexto de Serviço: comprimento = 3 (0x3) 23. ID do Contexto: 1229081874 (0x49424D12) 24. Dados do Contexto: comprimento = 8 (0x8) 00000000 13100003 26. ID do Contexto: 6 (0x6) 27. Dados do Contexto: comprimento = 164 (0xA4) 00000000 00000028 49444C3A 6F6D672E 6F72672F 53656E64 696E6743 6F6E7465 78742F43 6F646542 6173653A 312E3000 00000001 00000000 00000068 00010200 0000000E 3139322E 3136382E 312E3130 310004DC 00000018 4B4D4249 00000010 BA4D6D69 000E0008 00000000 00000000 00000002 00000001 00000018 00000000 00010001 00000001 00010020 00010100 00000000 49424D0A 00000008 00000000 13100003 39. ID do Contexto: 1 (0x1) 40. Dados do Contexto: comprimento = 12 (0xC) 00000000 00010001 00010100 42. Deslocamento dos Dados: 118 45. 0000: 47494F50 01020000 0000010C 00000005 GIOP............ 46. 0010: 03000000 00000000 00000018 4B4D4249 ............KMBI 47. 0020: [restante do corpo da mensagem excluído para brevidade]
Amostra de Entrada de Log - Resposta GIOP
1. ENTRADA: . Mensagem de Resposta 4. Data: 17 de abril de 2002 22:00:47 CDT 5. Info de Encadeamento: RT=0:P=842115:O=1:com.ibm.rmi.transport.TCPTransportConnection 5a (linha 5 quebrada para publicação). remoteHost=192.168.1.101 remotePort=1242 localPort=1243 6. Porta Local: 1243 (0x4DB) 7. IP Local: jdoe.austin.ibm.com/192.168.1.101 8. Porta Remota: 1242 (0x4DA) 9. IP Remoto: jdoe.austin.ibm.com/192.168.1.101 10. GIOP Version: 1.2 11. Ordem do Byte: big endian 12. Fragmento em seguida: Não 13. Tamanho da Mensagem: 208 (0xD0) -- 15. ID do Pedido: 5 16. Contexto de Serviço: comprimento = 2 (0x2) 17. ID do Contexto: 1229081874 (0x49424D12) 18. Dados do Contexto: comprimento = 8 (0x8) 00000000 13100003 20. ID do Contexto: 6 (0x6) 21. Dados do Contexto: comprimento = 164 (0xA4) 00000000 00000028 49444C3A 6F6D672E 6F72672F 53656E64 696E6743 6F6E7465 78742F43 6F646542 6173653A 312E3000 00000001 00000000 00000068 00010200 0000000E 3139322E 3136382E 312E3130 310004DA 00000018 4B4D4249 00000010 BA4D6D34 000E0008 00000001 00000000 00000002 00000001 00000018 00000000 00010001 00000001 00010020 00010100 00000000 49424D0A 00000008 00000000 13100003 33. Status da Resposta: NO_EXCEPTION 36. 0000: 47494F50 01020001 000000D0 00000005 GIOP............ 37. 0010: 00000000 00000002 49424D12 00000008 ........IBM..... 38. 0020: [restante do corpo da mensagem excluído para brevidade]