O Objeto Fragment da Probe

O objeto Fragment da probe é uma especificação da lógica de uma probe. Ele contém o código fonte Java que será executado.

Pelo menos um objeto Fragment é requerido. Ele contém o objeto Code e todos os itens de dados que são referenciados pelo código fonte no objeto Code. Uma probe pode conter mais de um objeto Fragment, mas dois objetos Fragment não podem ter o mesmo type.

O objeto Fragment inclui a seguinte propriedade:
Propriedade Descrição
type Obrigatório. Para probes de método, ele deve ser entry, exit, catch, staticInitializer ou executableUnit. Para probes de callsite, ele deve ser beforeCall ou afterCall. Não é possível misturar fragmentos de método e fragmentos de callsite em uma única probe.
A tabela a seguir lista e descreve os tipos de fragmentos e indica o tipo de probe em que cada um deles pode ser utilizado:
Tipo de fragmento Tipo de probe Descrição
entry Método Os fragmentos entry são executados após a entrada no método. Os fragmentos entry não serão executados para os métodos que foram inseridos na classe por Probekit.
exit Método Os fragmentos exit são executados após a saída do método; tanto uma saída normal, quando o método lança uma exceção ou quando uma exceção lançada é propagada para fora do método. Os fragmentos exit não serão executados para os métodos que foram inseridos na classe por Probekit.
catch Método Os fragmentos catch são executados no início de uma cláusula catch no método ou no início de uma cláusula finally executada como resultado de uma exceção.
staticInitializer Método Os fragmentos staticInitializer são executados dentro do inicializador de classes de todas as classes com probe. Se a classe ainda não possuir um inicializador estático, ele será criado. Para obter informações adicionais, consulte O Fragmento staticInitializer da Probe.
executableUnit Método Os fragmentos executableUnit são executado antes de cada unidade de código executável nos métodos que correspondem à especificação de destino e filtro da probe e para os quais o código fonte esteja disponível. Se o método não possuir informações de linha de origem, ele aparecerá como tendo uma única unidade executável, numerada como zero. Para obter informações adicionais, consulte O Fragmento executableUnit da Probe.
beforeCall callsite Os fragmentos beforeCall são executados no método responsável pela chamada precedendo imediatamente a chamada do método de destino. Não são válidos para probes de método.
afterCall callsite Os fragmentos afterCall são executados no método responsável pela chamada logo após a saída do método de destino; tanto uma saída normal ou quando o método de destino lança uma exceção. Não são válidos para probes de método.
Notes:
  • Quando as probes são aplicadas a métodos que são declarados como synchronized, não é garantido que o código nos fragmentos entry, exit e executableUnit estejam protegidos contra execução simultânea em múltiplos encadeamentos. Por exemplo, um fragmento entry e os primeiros fragmentos executableUnit podem ser executados antes que a lógica de sincronização do método obtenha uma trava e um fragmento exit pode ser executado após a trava ser liberada.
  • Uma probe pode ter múltiplos fragmentos que se aplicam ao mesmo local em um método; por exemplo, um fragmento entry e o primeiro local executableUnit. Outro exemplo é um fragmento catch e seu local executableUnit associado, pois as cláusulas catch de manipulação de exceções sempre representam o início de uma nova unidade executável. Nesses casos, o código do fragmento executableUnit será executado após o código dos fragmentos entry ou catch. Uma conseqüência é que os fragmentos entry, se estiverem presentes, sempre serão executados antes de outros tipos de fragmentos.
Exemplo
<fragment type="entry"> 
   <data . . . />
   <code>
      . . . 
   </code>
</fragment>

Contido por
O Objeto Probe

Tópico Pai: Referência de Elemento de Probekit

Referências Relacionadas
Exemplos do Probekit
O Fragmento executableUnit da Probe
O Fragmento staticInitializer da Probe

Termos de Uso | Feedback
(C) Copyright IBM Corporation 2000, 2004. Todos os Direitos Reservados.