| type=page | |
| status=published | |
| title=Introduction to the Development Environment for GlassFish Server Add-On Components | |
| next=writing-hk2-components.html | |
| prev=preface.html | |
| ~~~~~~ | |
| Introduction to the Development Environment for GlassFish Server Add-On Components | |
| ================================================================================== | |
| [[GSACG00001]][[ghmlv]] | |
| [[introduction-to-the-development-environment-for-glassfish-server-add-on-components]] | |
| 1 Introduction to the Development Environment for GlassFish Server Add-On Components | |
| ------------------------------------------------------------------------------------ | |
| GlassFish Server Open Source Edition 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 GlassFish Server Open Source Edition 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 http://hk2.dev.java.net/[Hundred-Kilobyte Kernel (HK2)] | |
| (`https://hk2.dev.java.net/`) 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 | |
| http://jcp.org/en/jsr/detail?id=222[Java Specification Request (JSR) | |
| 222: Java Architecture for XML Binding (JAXB) 2.0] | |
| (`http://jcp.org/en/jsr/detail?id=222`). 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 GlassFish Server Open Source Edition 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]. | |
| ---- |