JAIN SLEE (JAIN Service Logic Execution Environment) is a standard produced using the Java Community Process.
The JAIN SLEE architecture defines an environment targeted at communications applications. The specification includes a component model for structuring the application logic of communications applications as a collection of reusable object-orientated components, and for composing these components into higher level and more sophisticated services.
The programming language used by application developers in JAIN SLEE is Java. The SLEE architecture also defines the contract between the components and the container that will host these components at run-time.
The SLEE specification supports the development of highly available and scalable distributed SLEE specification compliant application servers, yet does not mandate any particular implementation strategy. More importantly, applications may be written once, and then deployed on any application environment that implements the SLEE specification.
In addition to the application component model, the SLEE specification also defines the management interfaces used to administer the application environment and the application components executing within the environment. It also defines a set of standard Facilities (such as the Timer Facility, Trace Facility, and Alarm Facility) that provide common ultility functions for use by application components.
A service in JAIN SLEE terminology is a managed field replaceable unit. The system administrator of a JAIN SLEE controls the life cycle (including deployment, undeployment and on-line upgrade) of a service. The lifecycle management is achieved through the use of the standard management interfaces provided by a compliant JAIN SLEE. A service includes information that describes the service, for example the name of the service, the vendor of the service and its version, and any program code that is part of the service. The program code can include Java classes, Profiles, and Service Building Blocks.
A JAIN SLEE Profile contains provisioned data. This provisioned data has a schema, which is a set of attributes or properties. For example a phone number and an email address for an individual could be considered two attributes of a Profile. JAIN SLEE also defines the concept of a Profile Specification. A Profile Specification includes management interfaces for modifying or updating a Profile, defining the schema of a Profile and logic that may execute to ensure that a Profile is valid. Service Building Blocks running inside the JAIN SLEE may access profiles as part of their application logic.
The element of re-use defined by JAIN SLEE is the Service Building Block (SBB). An SBB is a software component that sends and receives events and performs computational logic based on the receipt of events and its current state. SBBs are stateful components and as such can remember the results of previous computations and those results can be applied in further computations. An SBB may be composed of other SBBs thereby enabling more complex applications to be built from a collection of SBBs. SBBs perform logic based on the receipt of events. Events are used to represent occurrences of importance that may occur at arbitrary points in time. For example the act of an external system delegating to the SLEE to assist in setting up a call may occur at an any point in time and is therefore easily modelled as an event. An SBB definition includes information that describes the SBB (for example the name, vendor and version of the SBB), any events that the SBB receives, and program code that provides the logic of the SBB. The program code for an SBB is comprised of Java classes.
An event represents an occurrence that may require application processing. It carries information that describes the occurrence, such as the source of the event. An event may originate from a number of different sources, for example an external resource such as a communications protocol stack, from the SLEE itself, or from application components within the SLEE. Events are an abstraction used to model occurences that are not related to any particular thread of execution.
For example consider a phone call between two parties, Alice and Bob. Alice can call Bob at any point in time. The occurence of Alice dialing Bob’s phone number can be modelled as an event and the occurence of Bob answering his ringing phone can be modelled as an event.
Resources are external entities that interact with other systems outside of the SLEE, such as network elements (HLR, MSC, etc), protocol stacks, directories and databases. A Resource Adaptor adapts the particular interfaces and requirements of a Resource into the interfaces and requirements of the JAIN SLEE.