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:
    Serialized Form
    TopLink 10.1.3
    • Constructor Detail

      • 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 Detail

      • 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,
                                          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,
                                        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()
      • 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.