staticField 및 staticInitializer 예제

이 예제는 staticField 데이터 항목 및 StaticInitializer 프로브 단편의 사용을 예시합니다.

이 예제에서 프로브는 클래스 인스턴스 작성 시의 트랙을 보존합니다. 해당 클래스의 이전 인스턴스가 작성되고 2초 이상 지난 후 인스턴스가 작성되면 프로브가 로그 메시지를 씁니다.

프로브는 다음을 수행합니다.
  1. 프로브는 staticField 데이터 항목을 사용하여 모든 프로브된 클래스에 Date 유형의 정적 필드를 작성합니다. 이 정적 필드는 new Date();를 호출하여 초기화합니다.
  2. staticInitializer 단편에서 프로브는 프로브된 클래스의 Date 인스턴스를 로드할 때 시간을 "0"(1970년 1월)으로 설정합니다.
  3. entry 단편(대상 규칙 때문에 entry 단편은 생성자에서만 실행함)에서 프로브는 이전 갱신이 언제 수행되었는지 확인하고 갱신이 수행된 지 2초 이상 지났으면 보고서를 발행합니다.
  4. 마지막으로 프로브는 Date 인스턴스의 값을 "now"로 갱신합니다.

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

이 예제 코드를 사용하려면 대상 오브젝트에 있는 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 프로브 단편

Copyright IBM Corporation and others 2000, 2004.