RemoteAccessSubsystem
Installed on import of the Remote Access Extension (RAE), the RemoteAccessSubsystem provides support for Create, Run, Update, and Delete operations for remote sessions. The subsystem persists remote sessions in a ThingWorx data store for the lifetime of the remote session. Once a remote session is completed (TERMINATED), it is removed from persistence.
|
While the data store for remote sessions can scale to at least 100K records without issue, the number of remote sessions for Axeda or ThingWorx Global Access Server should be much lower than 100K — likely closer to 1000 or 2000 sessions.
|
The subsystem has the following configuration settings:
• Maximum Number of Sessions to Return from Data Storage specifies the maximum number off remote session that are persisted to return when there is a request for remote sessions. The default value is 500 sessions.
• Timeout to indicate that the RemoteAccessClient is not installed locally specifies the number of milliseconds to wait before generating a message that says the RemoteAccessClient (RAC) is not installed on the user's computer.
• Maximum Session Duration (in hours) specifies the maximum number of hours that a remote session can remain active. The default value is 24 hours, with a minimum value of 1 hour and a maximum value of 240 hours.
• Inactive Session Timeout (in minutes specifies the number of minutes that a remote session is allowed to remain inactive before it is timed out. The default value is 15 minutes, with a minimum value of 1 minute and a maximum value of 60 minutes.
Here is the configuration screen:
The subsystem configuration can be edited and is started automatically when the ThingWorx platform is started.
| The RemoteAccessSubsystem will throw exceptions if callers attempt to set values outside of the minimum and maximum value ranges from both Composer and the SetConfigurationTable service. |
The table below describes the services that clean up old sessions and end sessions whose status has not been updated by GAS or RAC within the time period set by the Inactive Session Timeout property of the subsystem..
| The lastActivityTime property of a Thing is updated with each GAS status update and with status updates from the Remote Access Client (RAC). Any update from either GAS or RAC will result in the lastActivityTime property being updated and the session will not time out. "Inactivity" to the ThingWorx Platform means only that the platform has not received a status update from either RAC or GAS. Inactivity does not mean that there are no bytes being transferred. |
Service | Description | Responsibilities |
---|
CleanupOldSessions | Cleans up any sessions that have exceeded the maximum session duration by updating status to CLOSE_REQUESTED. | • Determine expirationTime (in ms). • Find all RemoteSessions with a createdTime field that is less than or equal to expirationTime. • For each session returned, set status to CLOSE_REQUESTED and then set the terminationCause to "Remote session close was requested due to max session duration of %s hours" and then update the session. |
TerminateInactiveSessions | Ends any inactive sessions and sets the status to TERMINATED.. | • Determine inactiveTime (in millis) . • Find all RemoteSessions with a lastActivityTime field less than or equal to inactiveTime • For each session returned, set the status to TERMINATED and then set the terminationCause to "Remote session was terminated due to session inactive timeout of %s minutes" and update the session. | Since the status is TERMINATED, the session is removed from persistence and also from the subsystem. |
|
For ThingWorx GAS v.7.1.0 and the ThingWorx Remote Access Extension (RAE) v.3.0.0, the following services were added to support direct communication with ThingWorx GAS:
Service | Description | Responsibilities |
---|
RegisterExternalRemoteAccessServer | Allows GAS to register itself. | GAS will show as "online" after this service is run. |
UnregisterExternalRemoteAccessServer | Allows GAS to unregister itself. | GAS will show as "offline" after this service is run. |
UpdateExternalremoteAccessServerStatus | Allows GAS to send session count updates, remote session audit messages, and file transfer audit messages to the ThingWorx Platform. | The session count updates appear as a change in the sessionCount property for the GAS Thing. |
To support remote viewers, the subsystem provides the
GetEndpointViewerConfiguration service. This service uses the
sessionId to locate the target
RemoteAccessible Thing, endpoint, and
RemoteAccessProvider. This service invokes the
GetRemoteServerConfiguration service of the
RemoteAccessProvider to obtain the remote server configuration data for the specific Thing and then calls the
GetEndpointViewerConfiguration service of the Thing that implements the
RemoteViewerManager Thing Template. This service returns the viewer configuration that matches the configuration of the Thing, the configured default viewer, or nothing, if no default viewer configuration is defined. For the Axeda eMessage Agents, the
AxedaRemoteViewerManager Thing is created after you have imported the Remote Access Extension (RAE), followed by the Axeda Compatibility Extension (ACE), to the ThingWorx Platform.