staticField 및 staticInitializer 예

이 예는 staticField 데이터 항목 및 StaticInitializer 프로브 단편의 사용에 대해 설명합니다.

이 예에서 프로브는 클래스 인스턴스 작성 시의 트랙을 유지합니다. 해당 클래스의 이전 인스턴스 이후 1초가 초과한 후에 인스턴스가 작성되면 프로브는 로그 메시지를 작성합니다.

다음은 프로브가 수행하는 내용입니다.
  1. staticField 데이터 항목을 사용하여 프로브는 Date 유형의 정적 필드를 모든 프로브된 클래스에 작성합니다. 정적 필드는 new Date();를 호출하여 초기화됩니다.
  2. staticInitializer 단편에서 프로브는 프로브된 클래스의 날짜 인스턴스를 로드한 "초기 시간"(1970년 1월)으로 설정합니다.
  3. entry 단편에서(대상 규칙으로 인해 entry 단편은 구성자 전용으로 실행) 프로브는 이전 갱신이 언제 수행되었는지 확인하고 갱신이 수행된지 1초가 지난 경우 보고를 실행합니다.
  4. 마지막으로 프로브는 날짜 인스턴스 값을 "현재"로 갱신합니다.

이 프로브에서는 staticField를 사용하여 새 정적 필드를 모든 프로브된 클래스에 작성합니다. 비교해 보면, fragmentAtClassScope를 사용하여 날짜 필드를 선언하면 프로브를 적용하는 클래스 수와 관계 없이 프로브 단편을 보유하는 생성된 클래스에 하나의 날짜 인스턴스가 나타나게 됩니다. 프로브된 각 클래스의 인스턴스 작성 간의 지연을 추적하는 대신 프로브된 클래스의 인스턴스 작성 간의 시간 지연을 추적하려는 경우 이를 수행할 수 있습니다.

이 예 코드를 사용하려면 대상 객체에서 package="com.sample*"가 실제 패키지 이름을 참조하도록 변경하십시오.

XML에서 &< 문자를 사용하려면 &amp;&lt; 문자 엔티티를 예에 표시된 대로 지정해야 합니다.

<?xml version="1.0" encoding="ASCII"?>
<probekit>
  <probe>
    <target type="include" package="com.sample*" method="&lt;init>" />
    <target type="exclude" package="*" />
    <staticField type="java.util.Date"/>
    <fragment type="entry">
      <data name="lastInstanceDate" type="staticField"/>
      <data name="clname"/>
      <code>
         java.util.Date d = new java.util.Date();
         long now = d.getTime();
         long prev = lastInstanceDate.getTime();
         if (prev != 0 &amp;&amp; prev + 1000 &lt; now) {
           System.out.println("[" + clname + " instance after > 1 second]");
         }
         lastInstanceDate.setTime(now);
       </code>
    </fragment>
    <fragment type="staticInitializer">
      <data name="lastInstanceDate" type="staticField"/>
      <data name="clname"/>
      <code>
         lastInstanceDate.setTime(0);
         System.out.println("[" + clname + " class loaded]");
      </code>
    </fragment>
  </probe>
</probekit>

상위 주제: Probekit 예

관련 참조
StaticField 프로브 객체
staticInitializer 프로브 단편

이용약관 | 피드백
(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved.