Class DMSPerformanceProfiler
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
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected static booleanstatic final Stringstatic final Stringprotected ThreadLocalstatic final Stringprotected oracle.dms.instrument.Nounstatic final Stringprotected org.eclipse.persistence.internal.sessions.AbstractSessionstatic final Stringstatic final Stringstatic final Stringprotected intFields inherited from interface org.eclipse.persistence.sessions.SessionProfiler
ALL, AssignSequence, CacheCoordination, CacheCoordinationSerialize, CacheHits, CacheMisses, CacheSize, Caching, ChangeSetsNotProcessed, ChangeSetsProcessed, ClientSessionCreated, ClientSessionReleased, ConnectionManagement, ConnectionPing, Connects, DescriptorEvent, Disconnects, DistributedMerge, HEAVY, JtsAfterCompletion, JtsBeforeCompletion, Logging, LoginTime, Merge, NONE, NORMAL, ObjectBuilding, OptimisticLockException, QueryPreparation, RcmReceived, RcmSent, RcmStatus, Register, Remote, RemoteChangeSet, RemoteLazy, RemoteMetadata, RowFetch, SessionEvent, SessionName, SqlGeneration, SqlPrepare, StatementExecute, Transaction, UowCommit, UowCommits, UowCreated, UowReleased, UowRollbacks -
Constructor Summary
ConstructorsConstructorDescriptionPUBLIC: Create a new dms profiler.DMSPerformanceProfiler(Session session) PUBLIC: Create a new dms profiler. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidINTERNAL: Create root noun for TopLink dms metrics.protected voiddestroyNounsByWeight(int weight) INTERNAL: Destroy nouns based on dms weight when user changes the weight at runtime.protected voiddestroySensorsByWeight(int weight) INTERNAL: Destroy sensors based on dms weight when user changes the weight at runtime.voidendOperationProfile(String operationName) INTERNAL: Link to the dms PhaseEvent api stop().voidendOperationProfile(String operationName, DatabaseQuery query, int weight) INTERNAL: Link to the dms PhaseEvent api stop().protected oracle.dms.instrument.NoungetNounByType(String type, oracle.dms.instrument.Noun parentNoun, int weight) INTERNAL: Look for noun based on the given type and weight.protected ThreadLocalprotected oracle.dms.instrument.SensorgetPhaseEventForQuery(String operationName, DatabaseQuery query, int weight) INTERNAL: Look for sensor for the name: TopLink_<sessionName>_<domainClass>_<queryClass>_<queryName>(if exist)_<operationName>(if exist).protected HashMapintINTERNAL: Return current TopLink dms weight.protected oracle.dms.instrument.SensorgetSensorByName(String operationName) INTERNAL: Return dms sensor which created by pre-defined TopLink metrics.org.eclipse.persistence.internal.sessions.AbstractSessionvoidINTERNAL: Initialize TopLink noun tree by default (DMSConsole.getSensorWeight())protected voidINTERNAL: Build dms ALL weight sensors for TopLink dms metrics.protected voidINTERNAL: Build dms HEAVY weight sensors for TopLink dms metrics.protected voidINTERNAL: Build dms NORMAL weight sensors for TopLink dms metrics.protected voidinitializeNounTree(int newWeight) INTERNAL: Initialize TopLink noun tree based on dms weight.protected voidinitSpy()INTERNAL: This method is useful for standalone TopLink application Initialize DMS, should be called once and should be called before any other DMS calls.voidINTERNAL: Link to the dms Event api occurred().voidoccurred(String operationName, DatabaseQuery query, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Increase DMS Event sensor occurrence.(DMS)profileExecutionOfQuery(DatabaseQuery query, Record row, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Finish a profile operation if profiling.voidsetProfileWeight(int newWeight) INTERNAL: Api for changing dms weight dynamically.voidsetSession(Session session) INTERNAL: Set the session.voidstartOperationProfile(String operationName) INTERNAL: Link to the dms PhaseEvent api start().voidstartOperationProfile(String operationName, DatabaseQuery query, int weight) INTERNAL: Link to the dms PhaseEvent api start().voidINTERNAL: Link to the dms State api update().
-
Field Details
-
EclipseLinkRootNoun
- See Also:
-
SessionNounType
- See Also:
-
TransactionNounType
- See Also:
-
RcmNounType
- See Also:
-
ConnectionNounType
- See Also:
-
CacheNounType
- See Also:
-
MiscellaneousNounType
- See Also:
-
ConnectionInUse
- See Also:
-
MergeTime
- See Also:
-
UnitOfWorkRegister
- See Also:
-
DistributedMergeDmsDisplayName
- See Also:
-
Sequencing
- See Also:
-
CONNECT
- See Also:
-
CACHE
- See Also:
-
session
protected org.eclipse.persistence.internal.sessions.AbstractSession session -
root
protected oracle.dms.instrument.Noun root -
normalWeightSensors
-
heavyWeightSensors
-
allWeightSensors
-
normalAndHeavyWeightSensors
-
normalHeavyAndAllWeightSensors
-
normalWeightNouns
-
heavyWeightNouns
-
allWeightNouns
-
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: 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:
setProfileWeightin interfaceSessionProfiler
-
initialize
public void initialize()INTERNAL: Initialize TopLink noun tree by default (DMSConsole.getSensorWeight())- Specified by:
initializein interfaceSessionProfiler
-
getProfileWeight
public int getProfileWeight()INTERNAL: Return current TopLink dms weight.- Specified by:
getProfileWeightin interfaceSessionProfiler
-
startOperationProfile
INTERNAL: Link to the dms PhaseEvent api start().- Specified by:
startOperationProfilein interfaceSessionProfiler
-
startOperationProfile
INTERNAL: Link to the dms PhaseEvent api start(). Intended to be used for query profiling.- Specified by:
startOperationProfilein interfaceSessionProfiler
-
endOperationProfile
INTERNAL: Link to the dms PhaseEvent api stop().- Specified by:
endOperationProfilein interfaceSessionProfiler
-
endOperationProfile
INTERNAL: Link to the dms PhaseEvent api stop(). Intended to be used for query profiling.- Specified by:
endOperationProfilein interfaceSessionProfiler
-
update
INTERNAL: Link to the dms State api update().- Specified by:
updatein interfaceSessionProfiler
-
occurred
public void occurred(String operationName, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Link to the dms Event api occurred().- Specified by:
occurredin interfaceSessionProfiler
-
occurred
public void occurred(String operationName, DatabaseQuery query, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Increase DMS Event sensor occurrence.(DMS)- Specified by:
occurredin interfaceSessionProfiler
-
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
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
-
getNormalWeightSensors
-
getHeavyWeightSensors
-
getAllWeightSensors
-
getNormalAndHeavyWeightSensors
-
getNormalHeavyAndAllWeightSensors
-
getNormalWeightNouns
-
getHeavyWeightNouns
-
getAllWeightNouns
-
getOperationStartTokenThreadLocal
-
getSession
public org.eclipse.persistence.internal.sessions.AbstractSession getSession() -
getSessionName
-
setSession
Description copied from interface:SessionProfilerINTERNAL: Set the session.- Specified by:
setSessionin interfaceSessionProfiler
-
profileExecutionOfQuery
public Object profileExecutionOfQuery(DatabaseQuery query, Record row, org.eclipse.persistence.internal.sessions.AbstractSession session) Description copied from interface:SessionProfilerINTERNAL: 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:
profileExecutionOfQueryin interfaceSessionProfiler- Returns:
- the execution result of the query.
-