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].

