blob: 5e4f4f0af86eda90a70a5a014a11afeca70a8d61 [file] [log] [blame]
type=page
status=published
title=Eclipse GlassFish Server Add-On Component Development Guide, Release 5.1
next=loe.html
~~~~~~
= Eclipse GlassFish Server Add-On Component Development Guide, Release 5.1
==========================================================================
[[contents]]
Contents
--------
[[list-of-examples]]
link:loe.html[List of Examples]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[list-of-tables]]
link:lot.html[List of Tables]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[title-and-copyright-information]]
link:title.html[Title and Copyright Information]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[preface]]
link:preface.html#sthref2[Preface]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:preface.html#ghpbz[GlassFish Server Documentation Set]
* link:preface.html#giprl[Related Documentation]
* link:preface.html#fwbkx[Typographic Conventions]
* link:preface.html#fquvc[Symbol Conventions]
* link:preface.html#ghpfg[Default Paths and File Names]
[[introduction-to-the-development-environment-for-glassfish-server-add-on-components]]
link:introduction.html#ghmlv[1 Introduction to the Development Environment for GlassFish Server Add-On Components]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:introduction.html#ghmje[GlassFish Server Modular Architecture and
Add-On Components]
* link:introduction.html#ghmrf[OSGi Alliance Module Management Subsystem]
* link:introduction.html#ghmnq[Hundred-Kilobyte Kernel]
* link:introduction.html#ghmns[Overview of the Development Process for an
Add-On Component]
** link:introduction.html#ghpqc[Writing HK2 Components]
** link:introduction.html#ghokn[Extending the Administration Console]
** link:introduction.html#ghohx[Extending the `asadmin` Utility]
** link:introduction.html#ghojs[Adding Monitoring Capabilities]
** link:introduction.html#gkahs[Adding Configuration Data for a
Component]
** link:introduction.html#ghojq[Adding Container Capabilities]
** link:introduction.html#gktld[Creating a Session Persistence Module]
** link:introduction.html#ghoiu[Packaging and Delivering an Add-On
Component]
[[writing-hk2-components]]
link:writing-hk2-components.html#ghmna[2 Writing HK2 Components]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:writing-hk2-components.html#ghokq[HK2 Component Model]
* link:writing-hk2-components.html#ghojt[Services in the HK2 Component
Model]
* link:writing-hk2-components.html#ghokt[HK2 Runtime]
** link:writing-hk2-components.html#ghoib[Scopes of Services]
** link:writing-hk2-components.html#ghoky[Instantiation of Components in
HK2]
** link:writing-hk2-components.html#ghois[HK2 Lifecycle Interfaces]
* link:writing-hk2-components.html#ghojb[Inversion of Control]
** link:writing-hk2-components.html#ghoiz[Injecting HK2 Components]
** link:writing-hk2-components.html#ghoic[Instantiation Cascading in HK2]
* link:writing-hk2-components.html#ghmoe[Identifying a Class as an Add-On
Component]
* link:writing-hk2-components.html#ghpvp[Using the Apache Maven Build
System to Develop HK2 Components]
[[extending-the-administration-console]]
link:extending-the-admin-console.html#ghmrb[3 Extending the Administration Console]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:extending-the-admin-console.html#ghmof[Administration Console
Architecture]
** link:extending-the-admin-console.html#ghnzl[Implementing a Console
Provider]
* link:extending-the-admin-console.html#ghmom[About Administration
Console Templates]
* link:extending-the-admin-console.html#ghmqr[About Integration Points]
* link:extending-the-admin-console.html#ghmpg[Specifying the ID of an
Add-On Component]
* link:extending-the-admin-console.html#ghmpk[Adding Functionality to the
Administration Console]
** link:extending-the-admin-console.html#ghocf[Adding a Node to the
Navigation Tree]
*** link:extending-the-admin-console.html#ghoej[Creating a JavaServer
Faces Page for Your Node]
** link:extending-the-admin-console.html#ghotv[Adding Tabs to a Page]
*** link:extending-the-admin-console.html#ghovg[Creating JavaServer Faces
Pages for Your Tabs]
** link:extending-the-admin-console.html#ghmqw[Adding a Task to the
Common Tasks Page]
*** link:extending-the-admin-console.html#ghoeu[Creating a JavaServer
Faces Page for Your Task]
** link:extending-the-admin-console.html#ghozn[Adding a Task Group to the
Common Tasks Page]
*** link:extending-the-admin-console.html#ghoya[Creating a JavaServer
Faces Page for Your Task Group]
** link:extending-the-admin-console.html#ghmrg[Adding Content to a Page]
*** link:extending-the-admin-console.html#ghpao[Creating a JavaServer
Faces Page for Your Page Content]
** link:extending-the-admin-console.html#ghmqe[Adding a Page to the
Administration Console]
* link:extending-the-admin-console.html#ghmqi[Adding Internationalization
Support]
* link:extending-the-admin-console.html#ghmqg[Changing the Theme or Brand
of the Administration Console]
* link:extending-the-admin-console.html#ghpkz[Creating an Integration
Point Type]
** link:extending-the-admin-console.html#sthref4[To Create an Integration
Point Type]
[[extending-the-asadmin-utility]]
link:extending-asadmin.html#ghmrd[4 Extending the `asadmin` Utility]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:extending-asadmin.html#ghpuj[About the Administrative Command
Infrastructure of GlassFish Server]
* link:extending-asadmin.html#ghpwe[Adding an `asadmin` Subcommand]
** link:extending-asadmin.html#ghrqj[Representing an `asadmin` Subcommand
as a Java Class]
** link:extending-asadmin.html#ghrpm[Specifying the Name of an `asadmin`
Subcommand]
** link:extending-asadmin.html#ghrng[Ensuring That an `AdminCommand`
Implementation Is Stateless]
** link:extending-asadmin.html#ghrqx[Example of Adding an `asadmin`
Subcommand]
* link:extending-asadmin.html#ghpwa[Adding Parameters to an `asadmin`
Subcommand]
** link:extending-asadmin.html#ghpvh[Representing a Parameter of an
`asadmin` Subcommand]
** link:extending-asadmin.html#ghptx[Identifying a Parameter of an
`asadmin` Subcommand]
** link:extending-asadmin.html#ghpxp[Specifying Whether a Parameter Is an
Option or an Operand]
** link:extending-asadmin.html#ghpxj[Specifying the Name of an Option]
*** link:extending-asadmin.html#ghpvy[Specifying the Long Form of an
Option Name]
*** link:extending-asadmin.html#sthref5[Specifying the Short Form of an
Option Name]
** link:extending-asadmin.html#ghpxl[Specifying the Acceptable Values of
a Parameter]
** link:extending-asadmin.html#ghrgt[Specifying the Default Value of a
Parameter]
** link:extending-asadmin.html#ghpuk[Specifying Whether a Parameter Is
Required or Optional]
** link:extending-asadmin.html#CDCFAJDG[Specifying Whether a Parameter
Can Be Used Multiple Times on the Command Line]
** link:extending-asadmin.html#ghpxd[Example of Adding Parameters to an
`asadmin` Subcommand]
* link:extending-asadmin.html#gkygt[Making `asadmin` Subcommands
Cluster-Aware]
** link:extending-asadmin.html#gkyjk[Specifying Allowed Targets]
** link:extending-asadmin.html#gkykm[The `Target` Utility]
** link:extending-asadmin.html#gkyfv[Specifying `asadmin` Subcommand
Execution]
** link:extending-asadmin.html#gkyjs[Subcommand Preprocessing and
Postprocessing]
** link:extending-asadmin.html#gkyit[Running a Command from Another
Command]
* link:extending-asadmin.html#ghptw[Adding Message Text Strings to an
`asadmin` Subcommand]
* link:extending-asadmin.html#ghpvn[Enabling an `asadmin` Subcommand to
Run]
* link:extending-asadmin.html#ghpvq[Setting the Context of an `asadmin`
Subcommand]
* link:extending-asadmin.html#ghpwn[Changing the Brand in the GlassFish
Server CLI]
* link:extending-asadmin.html#ghmza[Examples of Extending the `asadmin`
Utility]
* link:extending-asadmin.html#gkzlq[Implementing Create, Delete, and List
Commands Using Annotations]
** link:extending-asadmin.html#gkzkc[Command Patterns]
** link:extending-asadmin.html#gkzle[Resolvers]
** link:extending-asadmin.html#gkzoy[The `@Create` Annotation]
** link:extending-asadmin.html#gkzoo[The `@Delete` Annotation]
** link:extending-asadmin.html#gkzpl[The `@Listing` Annotation]
** link:extending-asadmin.html#gkznf[Create Command Decorators]
** link:extending-asadmin.html#gkznx[Delete Command Decorators]
** link:extending-asadmin.html#gkzmu[Specifying Command Execution]
** link:extending-asadmin.html#gkznd[Using Multiple Command Annotations]
[[adding-monitoring-capabilities]]
link:adding-monitoring-capabilities.html#ghmos[5 Adding Monitoring Capabilities]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:adding-monitoring-capabilities.html#ghopc[Defining Statistics That
Are to Be Monitored]
** link:adding-monitoring-capabilities.html#gkadk[Defining an Event
Provider]
*** link:adding-monitoring-capabilities.html#ghovq[Defining an Event
Provider by Writing a Java Class]
*** link:adding-monitoring-capabilities.html#gkaec[Defining an Event
Provider by Writing an XML Fragment]
*** link:adding-monitoring-capabilities.html#gkaie[Packaging a
Component's Event Providers]
** link:adding-monitoring-capabilities.html#ghprg[Sending an Event]
* link:adding-monitoring-capabilities.html#ghplw[Updating the Monitorable
Object Tree]
** link:adding-monitoring-capabilities.html#ghpni[Creating Event
Listeners]
** link:adding-monitoring-capabilities.html#ghptp[Representing a
Component's Statistics in an Event Listener Class]
** link:adding-monitoring-capabilities.html#ghpml[Subscribing to Events
From Event Provider Classes]
*** link:adding-monitoring-capabilities.html#ghpsp[Listening for Changes
to Values That are Not Part of the Target Method Definition]
*** link:adding-monitoring-capabilities.html#ghpsw[Getting Information
About a Event Provider]
** link:adding-monitoring-capabilities.html#ghpmt[Listening for Events
From Classes That Are Not Event Providers]
*** link:adding-monitoring-capabilities.html#ghpql[Monitoring Method
Entry]
*** link:adding-monitoring-capabilities.html#ghppg[Monitoring Method
Exit]
*** link:adding-monitoring-capabilities.html#ghplj[Monitoring Exceptions]
** link:adding-monitoring-capabilities.html#ghppo[Registering an Event
Listener]
* link:adding-monitoring-capabilities.html#ghrma[Dotted Names and REST
URLs for an Add-On Component's Statistics]
* link:adding-monitoring-capabilities.html#ghmox[Adding a Type to the
`monitor` Command]
* link:adding-monitoring-capabilities.html#ghptj[Example of Adding
Monitoring Capabilities]
[[adding-configuration-data-for-a-component]]
link:adding-configuration-data.html#gjlpe[6 Adding Configuration Data for a Component]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:adding-configuration-data.html#gjrdv[How GlassFish Server Stores
Configuration Data]
* link:adding-configuration-data.html#gjlop[Defining an Element]
** link:adding-configuration-data.html#gjcnt[To Define an Element]
* link:adding-configuration-data.html#gjlpb[Defining an Attribute of an
Element]
** link:adding-configuration-data.html#gjorj[Representing an Attribute of
an Element]
** link:adding-configuration-data.html#gjopa[Specifying the Data Type of
an Attribute]
** link:adding-configuration-data.html#gjopm[Identifying an Attribute of
an Element]
** link:adding-configuration-data.html#gjopq[Specifying the Name of an
Attribute]
** link:adding-configuration-data.html#gjoqj[Specifying the Default Value
of an Attribute]
** link:adding-configuration-data.html#gjoui[Specifying Whether an
Attribute Is Required or Optional]
** link:adding-configuration-data.html#gjrdz[Example of Defining an
Attribute of an Element]
* link:adding-configuration-data.html#gjlov[Defining a Subelement]
** link:adding-configuration-data.html#gjzlb[To Define a Subelement]
* link:adding-configuration-data.html#gjlpu[Validating Configuration
Data]
* link:adding-configuration-data.html#gjrdj[Initializing a Component's
Configuration Data]
** link:adding-configuration-data.html#gkbgi[To Define a Component's
Initial Configuration Data]
** link:adding-configuration-data.html#gjses[To Write a Component's
Initial Configuration Data to the `domain.xml` File]
* link:adding-configuration-data.html#gjrcz[Creating a Transaction to
Update Configuration Data]
** link:adding-configuration-data.html#gkakw[To Create a Transaction to
Update Configuration Data]
* link:adding-configuration-data.html#gjmkt[Dotted Names and REST URLs of
Configuration Attributes]
* link:adding-configuration-data.html#gkaal[Examples of Adding
Configuration Data for a Component]
[[adding-container-capabilities]]
link:adding-container-capabilities.html#ghmon[7 Adding Container Capabilities]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:adding-container-capabilities.html#ghpjl[Creating a `Container`
Implementation]
** link:adding-container-capabilities.html#ghogv[Marking the Class With
the `@Service` Annotation]
** link:adding-container-capabilities.html#ghohg[Implementing the
`Container` Interface]
* link:adding-container-capabilities.html#ghozu[Adding an Archive Type]
** link:adding-container-capabilities.html#ghoyp[Implementing the
`ArchiveHandler` Interface]
* link:adding-container-capabilities.html#ghphp[Creating Connector
Modules]
** link:adding-container-capabilities.html#ghozd[Associating File Types
With Containers by Using the `Sniffer` Interface]
*** link:adding-container-capabilities.html#ghpbx[Making `Sniffer`
Implementations Available to the GlassFish Server]
* link:adding-container-capabilities.html#gkane[Example of Adding
Container Capabilities]
** link:adding-container-capabilities.html#gkbah[Container Component
Code]
** link:adding-container-capabilities.html#gkbcq[Web Client Code]
[[creating-a-session-persistence-module]]
link:session-persistence-modules.html#gkmhj[8 Creating a Session Persistence Module]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:session-persistence-modules.html#gkmhr[Implementing the
`PersistenceStrategyBuilder` Interface]
[[packaging-integrating-and-delivering-an-add-on-component]]
link:packaging-integrating-delivering.html#ghmxp[9 Packaging, Integrating, and Delivering an Add-On Component]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:packaging-integrating-delivering.html#ghpun[Packaging an Add-On
Component]
* link:packaging-integrating-delivering.html#ghmne[Integrating an Add-On
Component With GlassFish Server]
* link:packaging-integrating-delivering.html#ghpuz[Delivering an Add-On
Component Through Update Tool]
[[a-integration-point-reference]]
link:integration-point-reference.html#ghmrp[A Integration Point Reference]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* link:integration-point-reference.html#ghprc[Integration Point
Attributes]
* link:integration-point-reference.html#ghmwa[`org.glassfish.admingui:navNode`
Integration Point]
* link:integration-point-reference.html#gjkff[`org.glassfish.admingui:rightPanel`
Integration Point]
* link:integration-point-reference.html#gjkfq[`org.glassfish.admingui:rightPanelTitle`
Integration Point]
* link:integration-point-reference.html#ghpkh[`org.glassfish.admingui:serverInstTab`
Integration Point]
* link:integration-point-reference.html#ghpit[`org.glassfish.admingui:commonTask`
Integration Point]
* link:integration-point-reference.html#ghphz[`org.glassfish.admingui:configuration`
Integration Point]
* link:integration-point-reference.html#ghpfm[`org.glassfish.admingui:resources`
Integration Point]
* link:integration-point-reference.html#ghpiz[`org.glassfish.admingui:customtheme`
Integration Point]
* link:integration-point-reference.html#ghppm[`org.glassfish.admingui:masthead`
Integration Point]
* link:integration-point-reference.html#ghppk[`org.glassfish.admingui:loginimage`
Integration Point]
* link:integration-point-reference.html#ghprk[`org.glassfish.admingui:loginform`
Integration Point]
* link:integration-point-reference.html#ghpse[`org.glassfish.admingui:versioninfo`
Integration Point]