The Session Manager can be configured by placing a property in the application.properties
file. The following values may be used for this property:
The default implementation, which stores Blueriq Runtime sessions only inside the HTTP session that lives inside the application server that Blueriq Runtime is deployed on.
blueriq.session.session-manager=memory |
If the property is not set, this implementation is used by default.
An implementation which stores Blueriq Runtime sessions in a key-value store using the available IKeyValueStore
implementation.
blueriq.session.session-manager=external |
An Key-Value Store Component must be available/enabled in Blueriq Runtime. Look at Key-value store API and default component for more information on how to configure this. |
IKeyValueStore
implementationWhen creating/using a custom implementation to store the Blueriq Runtime session, it is best to keep in mind some best practices:
Activate/passivate pattern was introduced as a means of enabling the Session Manager to store its AquimaSessions instances in an external key-value store in order to use the Blueriq Runtime in a clustered environment.
The main pattern used is inspired by Enterprise Java Beans. Before the object is serialized, it is notified of this fact by calling its passivate()
method. The object then has a chance to do any cleanup before serialization. After the object is deserialized its activate(ActivationContext) method is called. The object then has the chance to restore its dependencies.
passivation |
|
activation |
|
Custom implementations of the Session Manager are possible by implementing the IAquimaSessionsMap
interface. First, set the blueriq.session.session-manager
property to a new value:
blueriq.session.session-manager=example |
Then, expose your IAquimaSessionsMap
implementation as a conditional Spring bean in the application context:
@Bean @ConditionalOnProperty(name = BlueriqSessionProperties.SESSION_MANAGER, havingValue = "example") public IAquimaSessionsMap exampleSessionManager() { return new ExampleSessionManager() } |
The Blueriq Runtime will automatically disable the other/default Session Manager implementations and use your custom Session Manager instead.
|