Class SessionProxyImpl
- java.lang.Object
-
- com.dynatrace.openkit.core.objects.OpenKitComposite
-
- com.dynatrace.openkit.core.objects.SessionProxyImpl
-
- All Implemented Interfaces:
Session,ServerConfigurationUpdateCallback,OpenKitObject,java.io.Closeable,java.lang.AutoCloseable
public class SessionProxyImpl extends OpenKitComposite implements Session, ServerConfigurationUpdateCallback
Implements a surrogate for aSessionto perform session splitting after:- a configured number of events
- after a configured idle timeout
- after a configured maximum session duration
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidend()Ends this Session and marks it as ready for immediate sending.RootActionenterAction(java.lang.String actionName)Enters an Action with a specified name in this Session.voididentifyUser(java.lang.String userTag)Tags a session with the provideduserTag.booleanisFinished()Indicates whether this session proxy was finished or is still open.voidonServerConfigurationUpdate(ServerConfiguration serverConfig)Called when a server configuration is updated.voidreportCarrier(java.lang.String carrier)Reports the name of the cellular network carrier.voidreportConnectionType(ConnectionType connectionType)Reports the type of connection with which the device is connected to the network.voidreportCrash(java.lang.String errorName, java.lang.String reason, java.lang.String stacktrace)Reports a crash with a specified error name, crash reason and a stacktrace.voidreportCrash(java.lang.Throwable throwable)Reports a crash with error name, crash reason and stacktrace determined from givenThrowable.voidreportNetworkTechnology(java.lang.String technology)Reports the network technology in use (e.g.voidsendBizEvent(java.lang.String type, java.util.Map<java.lang.String,JSONValue> attributes)Send a Business Event With sendBizEvent, you can report a business event.longsplitSessionByTime()Will end the current active session and start a new one but only if the following conditions are met: this session proxy is notfinished. session splitting by idle timeout is enabled and the current session was idle for longer than the configured timeout.java.lang.StringtoString()WebRequestTracertraceWebRequest(java.lang.String url)Allows tracing and timing of a web request handled by any 3rd party HTTP Client (e.g.WebRequestTracertraceWebRequest(java.net.URLConnection connection)Traces a web request - which is provided as a URLConnection - and allows adding timing information to this request.-
Methods inherited from class com.dynatrace.openkit.core.objects.OpenKitComposite
getActionID
-
-
-
-
Method Detail
-
enterAction
public RootAction enterAction(java.lang.String actionName)
Description copied from interface:SessionEnters an Action with a specified name in this Session.If the given
actionNameisnullor an empty string, no reporting will happen on thatRootAction.- Specified by:
enterActionin interfaceSession- Parameters:
actionName- name of the Action- Returns:
- Action instance to work with
-
identifyUser
public void identifyUser(java.lang.String userTag)
Description copied from interface:SessionTags a session with the provideduserTag.If the given
userTagisnullor an empty string, this is equivalent to logging off the user.The last non-empty
userTagis re-applied to split sessions. Details are described in https://github.com/Dynatrace/openkit-java/blob/main/docs/internals.md#identify-users-on-split-sessions.- Specified by:
identifyUserin interfaceSession- Parameters:
userTag- id of the user ornull/""to simulate a log off.
-
reportCrash
public void reportCrash(java.lang.String errorName, java.lang.String reason, java.lang.String stacktrace)Description copied from interface:SessionReports a crash with a specified error name, crash reason and a stacktrace.If the given
errorNameisnullor an empty string, no crash report will be sent to the server. If thereasonis longer than 1000 characters, it is truncated to this value. If thestacktraceis longer than 128.000 characters, it is truncated according to the last line break.- Specified by:
reportCrashin interfaceSession- Parameters:
errorName- name of the error leading to the crash (e.g. Exception class)reason- reason or description of that errorstacktrace- stacktrace leading to that crash
-
reportCrash
public void reportCrash(java.lang.Throwable throwable)
Description copied from interface:SessionReports a crash with error name, crash reason and stacktrace determined from givenThrowable.This method is offered as convenience method for
Session.reportCrash(Throwable).- Specified by:
reportCrashin interfaceSession- Parameters:
throwable- TheThrowablecausing the crash.
-
reportNetworkTechnology
public void reportNetworkTechnology(java.lang.String technology)
Description copied from interface:SessionReports the network technology in use (e.g. 2G, 3G, 802.11x, offline, ...) Usenullto clear the value again and it will no longer be sent with the next beacon.- Specified by:
reportNetworkTechnologyin interfaceSession- Parameters:
technology- the used network technology
-
reportConnectionType
public void reportConnectionType(ConnectionType connectionType)
Description copied from interface:SessionReports the type of connection with which the device is connected to the network. Usenullto clear the value again and it will no longer be sent with the next beacon.- Specified by:
reportConnectionTypein interfaceSession- Parameters:
connectionType- the type of connection
-
reportCarrier
public void reportCarrier(java.lang.String carrier)
Description copied from interface:SessionReports the name of the cellular network carrier. Usenullto clear the value again and it will no longer be sent with the next beacon.The given value will be truncated to 250 characters.
- Specified by:
reportCarrierin interfaceSession- Parameters:
carrier- the cellular network carrier
-
traceWebRequest
public WebRequestTracer traceWebRequest(java.net.URLConnection connection)
Description copied from interface:SessionTraces a web request - which is provided as a URLConnection - and allows adding timing information to this request. If the web request is continued on a server-side Agent (e.g. Java, .NET, ...) this Session will be correlated to the resulting server-side PurePath.- Specified by:
traceWebRequestin interfaceSession- Parameters:
connection- the URLConnection of the HTTP request to be tagged and timed- Returns:
- a WebRequestTracer which allows adding timing information
-
traceWebRequest
public WebRequestTracer traceWebRequest(java.lang.String url)
Description copied from interface:SessionAllows tracing and timing of a web request handled by any 3rd party HTTP Client (e.g. Apache, Google, Jetty, ...). In this case the Dynatrace HTTP header (OpenKitConstants.WEBREQUEST_TAG_HEADER) has to be set manually to the tag value of this WebRequestTracer.
If the web request is continued on a server-side Agent (e.g. Java, .NET, ...) this Session will be correlated to the resulting server-side PurePath.- Specified by:
traceWebRequestin interfaceSession- Parameters:
url- the URL of the web request to be tagged and timed- Returns:
- a WebRequestTracer which allows getting the tag value and adding timing information
-
sendBizEvent
public void sendBizEvent(java.lang.String type, java.util.Map<java.lang.String,JSONValue> attributes)Description copied from interface:SessionSend a Business Event With sendBizEvent, you can report a business event. These standalone events are being sent detached from user actions or sessions. Note: The 'dt' key, as well as all 'dt.' prefixed keys are considered reserved by Dynatrace and will be stripped from the passed in attributes. Note: Business events are only supported on Dynatrace SaaS deployments currently.- Specified by:
sendBizEventin interfaceSession- Parameters:
type- Mandatory event typeattributes- Must be a valid JSON object. The resulting event will be populated with the 'attributes'-parameter and enriched with additional properties. Therefore, even empty objects are valid.
-
end
public void end()
Description copied from interface:SessionEnds this Session and marks it as ready for immediate sending.
-
isFinished
public boolean isFinished()
Indicates whether this session proxy was finished or is still open.
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
splitSessionByTime
public long splitSessionByTime()
Will end the current active session and start a new one but only if the following conditions are met:- this session proxy is not
finished. - session splitting by idle timeout is enabled and the current session was idle for longer than the configured timeout.
- session splitting by maximum session duration is enabled and the session was open for longer than the maximum configured session duration.
- Returns:
- the time when the session might be split next. This can either be the time when the maximum session
duration is reached or the time when the idle timeout expires. In case this session proxy is finished,
-1is returned.
- this session proxy is not
-
onServerConfigurationUpdate
public void onServerConfigurationUpdate(ServerConfiguration serverConfig)
Description copied from interface:ServerConfigurationUpdateCallbackCalled when a server configuration is updated.- Specified by:
onServerConfigurationUpdatein interfaceServerConfigurationUpdateCallback- Parameters:
serverConfig- the updated server configuration.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-