With the Java Startup Framework you can start, monitor, and stop a Java instance and its processes. This means you can:
Start, stop or restart processes
Stop or restart the whole instance
Terminate hanging processes
The JSTART program is part of the standard delivery.
Startup of the Java Instance
The following steps are involved in starting the Java instance:
JSTART is started (in Windows by the SAP Start Service; on UNIX platforms by the startsap script). It takes the role of the Java instance controller.
The Java instance controller analyzes its configuration (from the instance profile) and examines the details of the Java SDK defined there.
The Java instance controller initializes SAP signal handling to be able to receive signals and opens the control port.
The Java instance controller reads the instance description (from the list of files specified by the jstart/startupNodeFiles and jstart/instanceNodeFiles profile parameters) for the first time, searching for nodes with a runLevel=1 property. The OFFLINE DEPLOYMENT node in the startup.properties file matches this criterion.
The Java instance controller starts another JSTART process with the parameters from the OFFLINE DEPLOYMENT node and waits for the child process to terminate.
The child process acts as a Java process. It loads the Java Virtual Machine (JVM) into its own process, initializes the JVM and starts the OFFLINE DEPLOYMENT program, which performs the deployment steps in the Java database.
The Java instance controller reads the instance description again, searching for nodes with a runLevel=2 property. The BOOTSTRAP node in the startup.properties file meets this condition.
The Java instance controller starts another JSTART process with the parameters from the BOOTSTRAP node and waits for the child process to terminate.
The child process loads and initializes the JVM and starts the BOOTSTRAP program. BOOTSTRAP synchronizes the binary data in the Java database with the local file system, reads the Java instance description from the Java database and updates the instance.properties file.
The Java instance controller reads the instance description from the startup.properties and instance.properties files once more, this time focusing on nodes with a runLevel=3 property or without a runLevel property at all. These nodes form the productive instance.
The Java instance controller starts the processes for infrastructure nodes, such as ICM or DEBUGPROXY.
When all infrastructure processes are started, the Java instance controller starts the processes for the server nodes.
The JSTART child processes act as Java processes and execute a similar sequence as described before. They become the Java server processes.
The following figure shows the sequence of actions that the Java Startup Framework executes.
Operation of the Java Instance
The Java instance controller monitors the Java instance. It receives the status update messages and catches termination signals from the child processes. When a process terminates unexpectedly, the Java instance controller starts the process again.
Shutdown of the Java Instance
Signals and commands sent to the control port trigger a Java instance to stop. The Java instance controller ensures that the order of shutdown is obeyed and forces termination if a process does not stop within the shutdown timeout period.
The figure below shows the sequence of the actions.
An instance is stopped as follows:
A process (for example, the ABAP dispatcher, a start script or SAP Start Service) sends a SIGINT signal or an appropriate command to the Java instance controller.
The Java instance controller updates the instance state and sends STOP commands to the server processes.
When the server processes are finished, the Java instance controller sends STOP commands to the infrastructure processes.
Once all child processes have exited, the Java instance controller terminates.