Introduction to the Development Environment for Eclipse GlassFish Add-On Components
Introduction to the Development Environment for Eclipse GlassFish Add-On Components
Eclipse GlassFish enables an external vendor such as
an independent software vendor (ISV), original equipment manufacturer
(OEM), or system integrator to incorporate Eclipse GlassFish into a new
product with the vendor’s own brand name. External vendors can extend
the functionality of Eclipse GlassFish by developing add-on components
for Eclipse GlassFish. Eclipse GlassFish provides interfaces to enable
add-on components to be configured, managed, and monitored through
existing Eclipse GlassFish tools such as the Administration Console and
the asadmin utility.
The following topics are addressed here:
Eclipse GlassFish Modular Architecture and Add-On Components
Eclipse GlassFish has a modular architecture in which the features of Eclipse GlassFish are provided by a consistent set of components that interact with each other. Each component provides a small set of functionally related features.
The modular architecture of Eclipse GlassFish enables users to download and install only the components that are required for the applications that are being deployed. As a result, start-up times, memory consumption, and disk space requirements are all minimized.
The modular architecture of Eclipse GlassFish enables you to extend the basic functionality of Eclipse GlassFish by developing add-on components. An add-on component is an encapsulated definition of reusable code that has the following characteristics:
-
The component provides a set of Java classes.
-
The component offers services and public interfaces.
-
The component implements the public interfaces with a set of private classes.
-
The component depends on other components.
Add-on components that you develop interact with Eclipse GlassFish in the same way as components that are supplied in Eclipse GlassFish distributions.
You can create and offer new or updated add-on components at any time. Eclipse GlassFish administrators can install add-on components and update or remove installed components after Eclipse GlassFish is installed. For more information, see "Extending and Updating Eclipse GlassFish" in Eclipse GlassFish Administration Guide.
OSGi Alliance Module Management Subsystem
To enable components to be added when required, Eclipse GlassFish
provides a lightweight and extensible kernel that uses the module
management subsystem from the OSGi Alliance
(http://www.osgi.org/). Any Eclipse GlassFish component that plugs in
to this kernel must be implemented as an OSGi bundle. To enable an
add-on component to plug in to the Eclipse GlassFish kernel in the same
way as other components, package the component as an OSGi bundle. For
more information, see
Packaging an Add-On
Component.
The default OSGi module management subsystem in Eclipse GlassFish is the
Apache Felix OSGi framework
(http://felix.apache.org). However, the Eclipse GlassFish kernel uses
only the OSGi Service Platform
Release 4 (http://www.osgi.org/Release4/HomePage) API. Therefore,
Eclipse GlassFish supports other OSGi module management subsystems that
are compatible with the OSGi Service Platform Release 4 API.
Hundred-Kilobyte Kernel
The Hundred-Kilobyte Kernel (HK2)
(https://github.com/eclipse-ee4j/glassfish-hk2) is the lightweight and extensible kernel
of Eclipse GlassFish. HK2 consists of the following technologies:
-
Module subsystem. The HK2 module subsystem provides isolation between components of the Eclipse GlassFish. The HK2 module subsystem is compatible with existing technologies such as the OSGi framework.
-
Component model. The HK2 component model eases the development of components that are also services. Eclipse GlassFish discovers these components automatically and dynamically. HK2 components use injection of dependencies to express dependencies on other components. Eclipse GlassFish provides two-way mappings between the services of an HK2 component and OSGi services.
For more information, see Writing HK2 Components.
Overview of the Development Process for an Add-On Component
To ensure that an add-on component behaves identically to components that are supplied in Eclipse GlassFish distributions, the component must meet the following requirements:
-
If the component generates management data, configuration data, or monitoring data, it must provide that data to other Eclipse GlassFish components in the same way as other Eclipse GlassFish components.
-
If the component generates management data, configuration data, or monitoring data, it must provide that data to users through Eclipse GlassFish administrative interfaces such as Administration Console and the
asadminutility. -
The component must be packaged and delivered as an OSGi bundle.
To develop add-on components that meet these requirements, follow the development process that is described in the following sections:
Writing HK2 Components
The Hundred-Kilobyte Kernel (HK2) is the lightweight and extensible kernel of Eclipse GlassFish. To interact with Eclipse GlassFish, add-on components plug in to this kernel. In the HK2 component model, the functions of an add-on component are declared through a contract-service implementation paradigm. An HK2 contract identifies and describes the building blocks or the extension points of an application. An HK2 service implements an HK2 contract.
For more information, see Writing HK2 Components.
Extending the Administration Console
The Administration Console is a browser-based tool for administering Eclipse GlassFish. It features an easy-to-navigate interface and online help. Extending the Administration Console enables you to provide a graphical user interface for administering your add-on component. You can use any of the user interface features of the Administration Console, such as tree nodes, links on the Common Tasks page, tabs and sub-tabs, property sheets, and JavaServer Faces pages. Your add-on component implements a marker interface and provides a configuration file that describes how your customizations integrate with the Administration Console.
For more information, see Extending the Administration Console.
Extending the asadmin Utility
The asadmin utility is a command-line tool for configuring and
administering Eclipse GlassFish. Extending the asadmin utility enables
you to provide administrative interfaces for an add-on component that
are consistent with the interfaces of other Eclipse GlassFish components.
A user can run asadmin subcommands either from a command prompt or
from a script. For more information about the asadmin utility, see the
asadmin(1M) man page.
For more information, see Extending the
asadmin Utility.
Adding Monitoring Capabilities
Monitoring is the process of reviewing the statistics of a system to improve performance or solve problems. By monitoring the state of components and services that are deployed in the Eclipse GlassFish, system administrators can identify performance bottlenecks, predict failures, perform root cause analysis, and ensure that everything is functioning as expected. Monitoring data can also be useful in performance tuning and capacity planning.
An add-on component typically generates statistics that the Eclipse GlassFish can gather at run time. Adding monitoring capabilities enables an add-on component to provide statistics to Eclipse GlassFish in the same way as components that are supplied in Eclipse GlassFish distributions. As a result, system administrators can use the same administrative interfaces to monitor statistics from any installed Eclipse GlassFish component, regardless of the origin of the component.
For more information, see Adding Monitoring Capabilities.
Adding Configuration Data for a Component
The configuration data of a component determines the characteristics and
runtime behavior of a component. Eclipse GlassFish provides interfaces to
enable an add-on component to store its configuration data in the same
way as other Eclipse GlassFish components. These interfaces are similar
to interfaces that are defined in
Jakarta XML Binding 3.0
(https://jakarta.ee/specifications/xml-binding/3.0/). By using these interfaces to
store configuration data, you ensure that the add-on component is fully
integrated with Eclipse GlassFish. As a result, administrators can
configure an add-on component in the same way as they can configure
other Eclipse GlassFish components.
For more information, see Adding Configuration Data for a Component.
Adding Container Capabilities
Applications run on Eclipse GlassFish in containers. Eclipse GlassFish enables you to create containers that extend or replace the existing containers of Eclipse GlassFish. Adding container capabilities enables you to run new types of applications and to deploy new archive types in Eclipse GlassFish.
For more information, see Adding Container Capabilities.
Creating a Session Persistence Module
Eclipse GlassFish enables you to create a session persistence module in
the web container for high availability-related functionality by
implementing the PersistenceStrategyBuilder interface . Using the
PersistenceStrategyBuilder interface in an HK2 service makes the
session manager extensible because you can implement a new persistence
type without having to modify the web container code.
For information about other high-availability, session persistence solutions, see "Configuring High Availability Session Persistence and Failover" in Eclipse GlassFish High Availability Administration Guide.
For more information, see Creating a Session Persistence Module.
Packaging and Delivering an Add-On Component
Packaging an add-on component enables the component to interact with the Eclipse GlassFish kernel in the same way as other components. Integrating a component with Eclipse GlassFish enables Eclipse GlassFish to discover the component at runtime.
For more information, see Packaging, Integrating, and Delivering an Add-On Component.