Contents
A component is a JAR file that contains a property file named ast.properties
. Components may optionally contain configuration files and notifiers. The configuration files and notifiers are specified
in the ast.properties
file. The order in which the configuration files are loaded and activated, and the notifiers executed, is also specified
in the ast.properties
file.
When a StreamBase JVM starts, all components are automatically activated in the order they are found in the class path. All
component activation completes before main
is called. The activation of all components occurs in a single transaction.
When a JVM exits, all components are deactivated in the reverse order in which they were activated. All component deactivation occurs in a single transaction.
The failure of any component activation during JVM startup causes the transaction to be rolled back and the JVM startup to fail. The rollback of the transaction causes the deactivation and unloading of any configuration files loaded and activated by previously successful component activations.
During JVM shutdown, if a component attempts to contact a remote JVM on the same, or a different node, and the JVM is not available, the component deactivation transaction is rolled back and component deactivation terminates. The JVM then shuts down. The result of this failure is that any components loaded by the JVM are not deactivated. The most common reason that a remote JVM is not available is that it is also being shut down. To avoid this condition, use component notifiers to minimize the use of objects requiring access to an external JVM.
StreamBase takes steps to activate a component:
-
Read the
ast.properties
file for the component. -
Create an instance of each specified notifier and store the reference to prevent it from being garbage collected.
-
Call the pre-configuration initialization method for each notifier.
-
Load and activate each specified configuration file.
-
Call the post-configuration initialization method for each notifier.
StreamBase takes these steps to deactivate a component:
-
Call the pre-configuration termination method for each notifier.
-
Deactivate and unload each configuration file in the reverse order in which they were loaded and activated.
-
Call the post-configuration termination method for each notifier.
-
Release each notifier instance in the reverse order in which they were created.
Note
The execution order of notifier deactivation methods and JVM shutdown hooks is undefined.