Java Instance

Use

A Java instance is a unit in the AS Java cluster which is identified by its instance number. The elements that form an instance run on one physical machine. Also, it is possible to run several instances on one physical machine, but it is recommended that you split the different instances among different physical machines.

A Java Instance consists of:

  • Internet Communication Manager (ICM)

  • One or several server processes

Internet Communication Manager

The ICM is an element of the Java instance which handles requests coming from clients and dispatches them to the available server processes. Data is transferred from the ICM to the server processes and vice versa using the Fast Channel Architecture (FCA), which allows fast and reliable communication between them.

The ICM reads the request from the TCP/IP stack into the FCA, decides which server process should handle the request (load balancing), and then sends the requests directly to the individual process. The required information for load balancing is retrieved by the ICM from the Message Service.

When a server process has sufficient resources to consume a request, it takes it out of the FCA queue, processes it, and writes it back into the queue so it is returned to the originator of the request.

More information: ICM Administration

Server Process

The server processes of AS Java actually execute the Java application. They are responsible for processing incoming requests which are assigned to them by the ICM.

Each server process is multi-threaded, and can therefore process a large number of requests simultaneously.

When more than one server processes run inside a Java instance, all of them have the same capabilities.

During installation, the installation procedure configures the optimal number of server processes in an instance based on the available hardware resources. You can add more server processes to an existing Java instance.

Server processes in an instance have a shared memory which enables much faster interaction. In the shared memory, server processes and the ICM store all their monitoring information, which can be used for detailed analysis of the current internal status of each Java instance.

All VMs in the instance have access to a shared memory area used as a session store, which is also a safeguard against VM failures. This is enabled by the use of SAP's own implementation of a Java Virtual Machine.

SAP Java Virtual Machine (SAP JVM)

AS Java uses SAP JVM as its runtime platform. The SAP JVM is based on the Hotspot Java VM provided by Sun Microsystems but it also possesses some additional features, such as:

  • Debugging on demand - SAP JVM makes it possible to switch a running system into debugging mode and vise versa without the need to restart the VM. This reduces the effort to track down a problem in real-life scenarios.

  • Memory analysis - easier detection of out-of-memory situations and analysis of memory footprint due to memory debugging features embedded into the VM.

  • Performance profiling - detection of performance bottlenecks due to runtime tracing capabilities embedded into the VM.

  • Robustness - due to fast session failover based on shared memory.

    The robustness concept is based on two main ideas: fewer active user requests per VM and a VM independent safe storage of inactive user sessions. More than one VM can run on each machine to reduce the amount of parallel processed user requests per VM, and inactive user sessions are separated from the VMs.

    More information: SAP JVM

Java Instance Homogeneity

The Java instance itself is homogeneous - all server processes running inside it have the same components deployed on each one of them. Moreover, they have the same:

  • configuration - all server processes use the same configuration template and share the instance custom settings

  • lifecycle - status of all components is the same. When one component is started/stopped on one server process, it is started/stopped on all server processes in the Java instance. Hence, to guarantee homogeneity, if one component fails to start on one server process, it is stopped on all server process.