The Java Enterprise Runtime provides the core functions of the system. It is built of several low-level subsystems called Managers. These are:
· Log Manager – manages the process of logging system events.
· Ports Manager – manages the process of opening various communication ports on the system.
· Pool Manager – manages the process of pooling Java objects (this does not refer to pooling JDBC connections).
· Application Thread Manager – handles threads in which client applications’ source code is executed.
· Thread Manager – handles threads in which the J2EE Engine system operations are executed.
· Connections Manipulator Manager – manages the process of opening TCP/IP sockets from the client to the J2EE Engine.
· Locking Manager – handles locking as interface to the Enqueue Service.
· Configuration Manager – manages the process of storing and reading persistent configuration data (such as properties, deployment data, and so on) to and from a relational database.
· Classloading Manager – controls activities for registering and unregistering of loaders and references between them, as well as for accessing loaders referenced by another loader. This is necessary for locating and loading Java classes.
· Licensing Manager – handles SAP licenses.
· Cluster Manager – manages communication (in terms of cluster elements status and modules available on it at runtime) between J2EE Engine cluster elements.
· Service Manager – represents a container of pluggable components. It provides runtime lifecycle management of those components.
You can find detailed description of all the Managers in the Core System Modules section of Administration Manual.
The Service Manager is the container of all J2EE Engine components of the system. Using the functions of other runtime subsystems, it loads and starts the components when the J2EE Engine starts up. That is the reason why the Service Manager is the last runtime subsystem that is started. It also manages components at runtime, and stops them when the J2EE Engine is being stopped.
The process of starting (loading) the J2EE Engine components is strictly defined. It is conducted exclusively by the Service Manager. It performs the following steps:
1. Reads the components’ persistent data from the database.
2. Performs checks for data integrity. This includes checks for duplication of component names, for availability and consistency of components’ deployment descriptors, and so on.
3. Resolves components for which the previous steps are successfully completed.
4. Checks whether all core components are resolved. If not, the Service Manager stops the whole system.
5. Creates the class loaders of the components and loads them.
6. Starts service components.
7. Performs a check whether all core service components are started. If not, the Service Manager stops all started components, unloads them and stops the whole system.
The runtime subsystems are also started in a strictly defined order. The reason for this is that there are certain dependencies between the subsystems. For example, the Service Manager depends on the Class Loader Manager, Cluster Manager and so on to perform its functions. Therefore, subsystems that depend on another subsystem are started after the subsystem they use.