java.lang.Object
org.eclipse.persistence.tools.profiler.oracle.DMSPerformanceProfiler
All Implemented Interfaces:
Serializable, Cloneable, SessionProfiler

public class DMSPerformanceProfiler extends Object implements Serializable, Cloneable, SessionProfiler
Purpose: Define the interface of EclipseLink profiler for using DMS gate.

Description: A mechanism used to provide a link for EclipseLink performance profiling by using the DMS tool. The predefined EclipseLink metrics will be monitored by using DMS sensors. EclipseLink library instrumentation will be done by inserting DMS calls for the purpose of measuring its performance

Responsibilities:

  • Define the EclipseLink metrics.
  • Provide APIs to monitor the sensors at runtime.
  • Change DMS sensor weight at runtime
Since:
TopLink 10.1.3
See Also:
  • Field Details

  • Constructor Details

    • DMSPerformanceProfiler

      public DMSPerformanceProfiler()
      PUBLIC: Create a new dms profiler. The profiler can be registered with a session to log performance information.
    • DMSPerformanceProfiler

      public DMSPerformanceProfiler(Session session)
      PUBLIC: Create a new dms profiler. The profiler can be registered with a session to log performance information.
  • Method Details

    • initializeNounTree

      protected void initializeNounTree(int newWeight)
      INTERNAL: Initialize TopLink noun tree based on dms weight.
    • setProfileWeight

      public void setProfileWeight(int newWeight)
      INTERNAL: Api for changing dms weight dynamically.
      Specified by:
      setProfileWeight in interface SessionProfiler
    • initialize

      public void initialize()
      INTERNAL: Initialize TopLink noun tree by default (DMSConsole.getSensorWeight())
      Specified by:
      initialize in interface SessionProfiler
    • getProfileWeight

      public int getProfileWeight()
      INTERNAL: Return current TopLink dms weight.
      Specified by:
      getProfileWeight in interface SessionProfiler
    • startOperationProfile

      public void startOperationProfile(String operationName)
      INTERNAL: Link to the dms PhaseEvent api start().
      Specified by:
      startOperationProfile in interface SessionProfiler
    • startOperationProfile

      public void startOperationProfile(String operationName, DatabaseQuery query, int weight)
      INTERNAL: Link to the dms PhaseEvent api start(). Intended to be used for query profiling.
      Specified by:
      startOperationProfile in interface SessionProfiler
    • endOperationProfile

      public void endOperationProfile(String operationName)
      INTERNAL: Link to the dms PhaseEvent api stop().
      Specified by:
      endOperationProfile in interface SessionProfiler
    • endOperationProfile

      public void endOperationProfile(String operationName, DatabaseQuery query, int weight)
      INTERNAL: Link to the dms PhaseEvent api stop(). Intended to be used for query profiling.
      Specified by:
      endOperationProfile in interface SessionProfiler
    • update

      public void update(String operationName, Object value)
      INTERNAL: Link to the dms State api update().
      Specified by:
      update in interface SessionProfiler
    • occurred

      public void occurred(String operationName, AbstractSession session)
      INTERNAL: Link to the dms Event api occurred().
      Specified by:
      occurred in interface SessionProfiler
    • occurred

      public void occurred(String operationName, DatabaseQuery query, AbstractSession session)
      INTERNAL: Increase DMS Event sensor occurrence.(DMS)
      Specified by:
      occurred in interface SessionProfiler
    • getPhaseEventForQuery

      protected oracle.dms.instrument.Sensor getPhaseEventForQuery(String operationName, DatabaseQuery query, int weight)
      INTERNAL: Look for sensor for the name: TopLink_<sessionName>_<domainClass>_<queryClass>_<queryName>(if exist)_<operationName>(if exist). If not found, look for the noun the sensor should be built on. If the noun is not found, create a new one. Create the sensor based on the noun.
    • getNounByType

      protected oracle.dms.instrument.Noun getNounByType(String type, oracle.dms.instrument.Noun parentNoun, int weight)
      INTERNAL: Look for noun based on the given type and weight. If not found and the parent noun is not null, create a new noun.
    • getSensorByName

      protected oracle.dms.instrument.Sensor getSensorByName(String operationName)
      INTERNAL: Return dms sensor which created by pre-defined TopLink metrics.
    • createRootNoun

      protected void createRootNoun()
      INTERNAL: Create root noun for TopLink dms metrics.
    • initializeNormalWeightSensors

      protected void initializeNormalWeightSensors()
      INTERNAL: Build dms NORMAL weight sensors for TopLink dms metrics.
    • initializeHeavyWeightSensors

      protected void initializeHeavyWeightSensors()
      INTERNAL: Build dms HEAVY weight sensors for TopLink dms metrics.
    • initializeAllWeightSensors

      protected void initializeAllWeightSensors()
      INTERNAL: Build dms ALL weight sensors for TopLink dms metrics.
    • initSpy

      protected void initSpy()
      INTERNAL: This method is useful for standalone TopLink application Initialize DMS, should be called once and should be called before any other DMS calls.
    • destroySensorsByWeight

      protected void destroySensorsByWeight(int weight)
      INTERNAL: Destroy sensors based on dms weight when user changes the weight at runtime.
    • destroyNounsByWeight

      protected void destroyNounsByWeight(int weight)
      INTERNAL: Destroy nouns based on dms weight when user changes the weight at runtime.
    • getPhaseEventStartToken

      protected Map<String,Long> getPhaseEventStartToken()
    • getNormalWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> getNormalWeightSensors()
    • getHeavyWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> getHeavyWeightSensors()
    • getAllWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> getAllWeightSensors()
    • getNormalAndHeavyWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> getNormalAndHeavyWeightSensors()
    • getNormalHeavyAndAllWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> getNormalHeavyAndAllWeightSensors()
    • getNormalWeightNouns

      protected Map<String,oracle.dms.instrument.Noun> getNormalWeightNouns()
    • getHeavyWeightNouns

      protected Map<String,oracle.dms.instrument.Noun> getHeavyWeightNouns()
    • getAllWeightNouns

      protected Map<String,oracle.dms.instrument.Noun> getAllWeightNouns()
    • getOperationStartTokenThreadLocal

      protected ThreadLocal<Map<String,Long>> getOperationStartTokenThreadLocal()
    • getSession

      public AbstractSession getSession()
    • getSessionName

      public String getSessionName()
    • setSession

      public void setSession(Session session)
      Description copied from interface: SessionProfiler
      INTERNAL: Set the session.
      Specified by:
      setSession in interface SessionProfiler
    • profileExecutionOfQuery

      public Object profileExecutionOfQuery(DatabaseQuery query, DataRecord row, AbstractSession session)
      Description copied from interface: SessionProfiler
      INTERNAL: Finish a profile operation if profiling. This assumes the start operation proceeds on the stack. The session must be passed to allow units of work etc. to share their parents profiler.
      Specified by:
      profileExecutionOfQuery in interface SessionProfiler
      Returns:
      the execution result of the query.