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