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