Class 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


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

    • EclipseLinkRootNoun

      public static final String EclipseLinkRootNoun
      See Also:
    • SessionNounType

      public static final String SessionNounType
      See Also:
    • TransactionNounType

      public static final String TransactionNounType
      See Also:
    • RcmNounType

      public static final String RcmNounType
      See Also:
    • ConnectionNounType

      public static final String ConnectionNounType
      See Also:
    • CacheNounType

      public static final String CacheNounType
      See Also:
    • MiscellaneousNounType

      public static final String MiscellaneousNounType
      See Also:
    • ConnectionInUse

      public static final String ConnectionInUse
      See Also:
    • MergeTime

      public static final String MergeTime
      See Also:
    • UnitOfWorkRegister

      public static final String UnitOfWorkRegister
      See Also:
    • DistributedMergeDmsDisplayName

      public static final String DistributedMergeDmsDisplayName
      See Also:
    • Sequencing

      public static final String Sequencing
      See Also:

      public static final String CONNECT
      See Also:
    • CACHE

      public static final String CACHE
      See Also:
    • session

      protected org.eclipse.persistence.internal.sessions.AbstractSession session
    • root

      protected oracle.dms.instrument.Noun root
    • normalWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> normalWeightSensors
    • heavyWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> heavyWeightSensors
    • allWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> allWeightSensors
    • normalAndHeavyWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> normalAndHeavyWeightSensors
    • normalHeavyAndAllWeightSensors

      protected Map<String,oracle.dms.instrument.Sensor> normalHeavyAndAllWeightSensors
    • normalWeightNouns

      protected Map<String,oracle.dms.instrument.Noun> normalWeightNouns
    • heavyWeightNouns

      protected Map<String,oracle.dms.instrument.Noun> heavyWeightNouns
    • allWeightNouns

      protected Map<String,oracle.dms.instrument.Noun> allWeightNouns
    • operationStartTokenThreadLocal

      protected ThreadLocal operationStartTokenThreadLocal
    • isDMSSpyInitialized

      protected static boolean isDMSSpyInitialized
    • weight

      protected int weight
  • 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, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Link to the dms Event api occurred().
      Specified by:
      occurred in interface SessionProfiler
    • occurred

      public void occurred(String operationName, DatabaseQuery query, org.eclipse.persistence.internal.sessions.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 HashMap 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 getOperationStartTokenThreadLocal()
    • getSession

      public org.eclipse.persistence.internal.sessions.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, Record row, org.eclipse.persistence.internal.sessions.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
      the execution result of the query.