Extend the GlassFish plugin

The XL Deploy GlassFish plugin is designed to be extended through the XL Deploy plugin API type system and Jython. The plugin wraps the GlassFish command-line interface (CLI) with a Jython runtime environment, so that extenders can interact with GlassFish and XL Deploy from the script. The Jython script is executed on the XL Deploy Server and has full access to the following XL Deploy objects:

  • deployed: The current deployed object on which the operation has been triggered.
  • step: The step object that the script is being executed from. Exposes an Overthere remote connection for file manipulation and a method to execute GlassFish CLI commands.
  • container: The container object to which the deployed is targeted.
  • delta: The delta specification that lead to the script being executed.
  • deployedApplication: The entire deployed application.

The plugin associates Create, Modify, Destroy, Noop, and Inspect operations received from XL Deploy with jython scripts that must be executed for the specific operation to be performed.

You can also use an advanced method to extend the plugin, implementation of this type of extension must be written in the Java programming language and consists of writing Deployed contributors, PlanPreProcessors, and Contributors.

For more information, see GlassFish plugin

Add additional properties

GlassFish artifacts and resources support the concept of additional properties. These properties are normally specified by using the --properties argument of GlassFish CLI commands.

XL Deploy can be extended to add one or more additional properties. You can add them by extending a type synthetically. You need to add the property into the category “Additional Properties”.

For example, the following sample adds the additional property of keepSessions, with a default value of true, and makes this property available on the CI. This will result in deploying the application with the GlassFish CLI argument --properties keepSessions=true.

<type-modification type="glassfish.WarModule">
    <property name="keepSessions" kind="boolean" category="Additional Properties" default="true"/>
</type-modification>

Extend the plugin with a custom control task

The plugin adds control tasks to glassfish.CliManagedDeployed or glassfish.CliManagedContainer. The control task can be specified as a Jython script that will be executed on the XL Deploy server. The Jython script will execute asadmin commands on the remote host.

Creating a Jython-based control task to list JDBC drivers in a StandaloneServer

synthetic.xml snippet:

<type-modification type="glassfish.Domain">
  <method name="listClusters" label="List clusters" delegate="asadmin" script="list-clusters.py" >
</type-modification>

list-clusters.py snippet:

logOutput("Listing clusters")
  result = executeCmd('list-clusters')
  logOutput(result.output)
  logOutput("Done.")

The script will execute the list-clusters command using asadmin on the remote host and print the result.