type=page
status=published
title=Introduction to the Development Environment for Eclipse GlassFish Add-On Components
next=writing-hk2-components.html
prev=preface.html
~~~~~~

Introduction to the Development Environment for Eclipse GlassFish Add-On Components
===================================================================================

[[GSACG00001]][[ghmlv]]


[[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 GlassFish Server into a new
product with the vendor's own brand name. External vendors can extend
the functionality of GlassFish Server by developing add-on components
for GlassFish Server. GlassFish Server provides interfaces to enable
add-on components to be configured, managed, and monitored through
existing GlassFish Server tools such as the Administration Console and
the `asadmin` utility.

The following topics are addressed here:

* link:#ghmje[GlassFish Server Modular Architecture and Add-On
Components]
* link:#ghmrf[OSGi Alliance Module Management Subsystem]
* link:#ghmnq[Hundred-Kilobyte Kernel]
* link:#ghmns[Overview of the Development Process for an Add-On
Component]

[[ghmje]][[GSACG00087]][[glassfish-server-modular-architecture-and-add-on-components]]

GlassFish Server Modular Architecture and Add-On Components
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server has a modular architecture in which the features of
GlassFish Server 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 GlassFish Server 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 GlassFish Server enables you to extend the
basic functionality of GlassFish Server 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 GlassFish Server in the
same way as components that are supplied in GlassFish Server
distributions.

You can create and offer new or updated add-on components at any time.
GlassFish Server administrators can install add-on components and update
or remove installed components after GlassFish Server is installed. For
more information, see "link:../administration-guide/toc.html#GSADG00014[Extending and Updating GlassFish
Server]" in Eclipse GlassFish Administration Guide.

[[ghmrf]][[GSACG00088]][[osgi-alliance-module-management-subsystem]]

OSGi Alliance Module Management Subsystem
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To enable components to be added when required, GlassFish Server
provides a lightweight and extensible kernel that uses the module
management subsystem from the http://www.osgi.org/[OSGi Alliance]
(`http://www.osgi.org/`). Any GlassFish Server 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 GlassFish Server kernel in the same
way as other components, package the component as an OSGi bundle. For
more information, see
link:packaging-integrating-delivering.html#ghpun[Packaging an Add-On
Component].

The default OSGi module management subsystem in GlassFish Server is the
Apache Felix http://felix.apache.org[OSGi framework]
(`http://felix.apache.org`). However, the GlassFish Server kernel uses
only the http://www.osgi.org/Release4/HomePage[OSGi Service Platform
Release 4] (`http://www.osgi.org/Release4/HomePage`) API. Therefore,
GlassFish Server supports other OSGi module management subsystems that
are compatible with the OSGi Service Platform Release 4 API.

[[ghmnq]][[GSACG00089]][[hundred-kilobyte-kernel]]

Hundred-Kilobyte Kernel
~~~~~~~~~~~~~~~~~~~~~~~

The https://github.com/eclipse-ee4j/glassfish-hk2[Hundred-Kilobyte Kernel (HK2)]
(`https://github.com/eclipse-ee4j/glassfish-hk2`) is the lightweight and extensible kernel
of GlassFish Server. HK2 consists of the following technologies:

* Module subsystem. The HK2 module subsystem provides isolation between
components of the GlassFish Server. 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. GlassFish Server discovers these
components automatically and dynamically. HK2 components use injection
of dependencies to express dependencies on other components. GlassFish
Server provides two-way mappings between the services of an HK2
component and OSGi services.

For more information, see link:writing-hk2-components.html#ghmna[Writing
HK2 Components].

[[ghmns]][[GSACG00090]][[overview-of-the-development-process-for-an-add-on-component]]

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 GlassFish Server 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 GlassFish Server
components in the same way as other GlassFish Server components.
* If the component generates management data, configuration data, or
monitoring data, it must provide that data to users through GlassFish
Server administrative interfaces such as Administration Console and the
`asadmin` utility.
* 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:

* link:#ghpqc[Writing HK2 Components]
* link:#ghokn[Extending the Administration Console]
* link:#ghohx[Extending the `asadmin` Utility]
* link:#ghojs[Adding Monitoring Capabilities]
* link:#gkahs[Adding Configuration Data for a Component]
* link:#ghojq[Adding Container Capabilities]
* link:#gktld[Creating a Session Persistence Module]
* link:#ghoiu[Packaging and Delivering an Add-On Component]

[[ghpqc]][[GSACG00173]][[writing-hk2-components]]

Writing HK2 Components
^^^^^^^^^^^^^^^^^^^^^^

The Hundred-Kilobyte Kernel (HK2) is the lightweight and extensible
kernel of GlassFish Server. To interact with GlassFish Server, 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 link:writing-hk2-components.html#ghmna[Writing
HK2 Components].

[[ghokn]][[GSACG00174]][[extending-the-administration-console]]

Extending the Administration Console
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The Administration Console is a browser-based tool for administering
GlassFish Server. 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
link:extending-the-admin-console.html#ghmrb[Extending the Administration
Console].

[[ghohx]][[GSACG00175]][[extending-the-asadmin-utility]]

Extending the `asadmin` Utility
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The `asadmin` utility is a command-line tool for configuring and
administering GlassFish Server. Extending the `asadmin` utility enables
you to provide administrative interfaces for an add-on component that
are consistent with the interfaces of other GlassFish Server 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
link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] man page.

For more information, see link:extending-asadmin.html#ghmrd[Extending the
`asadmin` Utility].

[[ghojs]][[GSACG00176]][[adding-monitoring-capabilities]]

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 GlassFish Server,
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 GlassFish
Server can gather at run time. Adding monitoring capabilities enables an
add-on component to provide statistics to GlassFish Server in the same
way as components that are supplied in GlassFish Server distributions.
As a result, system administrators can use the same administrative
interfaces to monitor statistics from any installed GlassFish Server
component, regardless of the origin of the component.

For more information, see
link:adding-monitoring-capabilities.html#ghmos[Adding Monitoring
Capabilities].

[[gkahs]][[GSACG00177]][[adding-configuration-data-for-a-component]]

Adding Configuration Data for a Component
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The configuration data of a component determines the characteristics and
runtime behavior of a component. GlassFish Server provides interfaces to
enable an add-on component to store its configuration data in the same
way as other GlassFish Server components. These interfaces are similar
to interfaces that are defined in
https://jakarta.ee/specifications/xml-binding/3.0/[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 GlassFish Server. As a result, administrators can
configure an add-on component in the same way as they can configure
other GlassFish Server components.

For more information, see
link:adding-configuration-data.html#gjlpe[Adding Configuration Data for a
Component].

[[ghojq]][[GSACG00178]][[adding-container-capabilities]]

Adding Container Capabilities
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Applications run on GlassFish Server in containers. GlassFish Server
enables you to create containers that extend or replace the existing
containers of GlassFish Server. Adding container capabilities enables
you to run new types of applications and to deploy new archive types in
GlassFish Server.

For more information, see
link:adding-container-capabilities.html#ghmon[Adding Container
Capabilities].

[[gktld]][[GSACG00179]][[creating-a-session-persistence-module]]

Creating a Session Persistence Module
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server 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 "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
Persistence and Failover]" in Eclipse GlassFish High
Availability Administration Guide.

For more information, see
link:session-persistence-modules.html#gkmhj[Creating a Session
Persistence Module].

[[ghoiu]][[GSACG00180]][[packaging-and-delivering-an-add-on-component]]

Packaging and Delivering an Add-On Component
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Packaging an add-on component enables the component to interact with the
GlassFish Server kernel in the same way as other components. Integrating
a component with GlassFish Server enables GlassFish Server to discover
the component at runtime. If an add-on component is an extension or
update to existing installations of GlassFish Server, deliver the
component through Update Tool.

For more information, see
link:packaging-integrating-delivering.html#ghmxp[Packaging, Integrating,
and Delivering an Add-On Component].

