Skip to the content.

Remote Deployment to Glassfish v6 using Cargo Local Deployer

This is an addition to the existing deploying Jakarta EE 9 applications to Glassfish v6 using Cargo maven plugin.

Cargo maven plugin 1.8.3 will include a glasfish6x containerId for the new Glassfish v6. In 1.8.2 or previous versions, it allows you use a JSR88 specification(Deployment) based remote deployer with a runtime configuration to deploy applications to a running Glassfish server.

This will stop to work when switching to use a glassfish6x container due to the changes happen in Jakarta EE 9 and Glassfish v6.

The JSR88 is removed in the further Jakarta EE 9, check the 6.1.4. Removed Jakarta Technologies section of Jakarta EE 9 specification. And the deployment-client artifact which is existed for Glassfish v5 release train is not available in Glassfish v6.

Correspondingly cargo glassfish6x container will not include a remote deployer, and you can not configure a runtime configuration as before. But you can use the local deployer to deploy the applications to remote servers.

<profile>
    <id>glassfish-local-deployer</id>
    <properties>
        <cargo.hostname>localhost</cargo.hostname>
        <cargo.servlet.port>8080</cargo.servlet.port>
        <cargo.glassfish.admin.port>4848</cargo.glassfish.admin.port>
        <cargo.zipUrlInstaller.downloadDir>${project.build.directory}/../installs
        </cargo.zipUrlInstaller.downloadDir>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <configuration>
                    <container>
                        <containerId>glassfish6x</containerId>
                        <zipUrlInstaller>
                            <url>
                               https://download.eclipse.org/ee4j/glassfish/glassfish-${glassfish.version}.zip
                            </url>
                            <downloadDir>${cargo.zipUrlInstaller.downloadDir}</downloadDir>
                        </zipUrlInstaller>
                        <!-- or use artifactInstaller-->
                        <!--<artifactInstaller>
                                    <groupId>org.glassfish.main.distributions</groupId>
                                    <artifactId>glassfish</artifactId>
                                    <version>${glassfish.version}</version>
                                </artifactInstaller>-->
                    </container>
                    <configuration>
                        <!-- the configuration use to deploy -->
                        <home>${project.build.directory}/glassfish6x-home</home>
                        <properties>
                            <cargo.hostname>${cargo.hostname}</cargo.hostname>
                            <cargo.servlet.port>${cargo.servlet.port}</cargo.servlet.port>
                            <cargo.glassfish.admin.port>${cargo.glassfish.admin.port}
                            </cargo.glassfish.admin.port>
                            <cargo.remote.username>admin</cargo.remote.username>
                            <cargo.remote.password></cargo.remote.password>
                        </properties>
                    </configuration>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

The above configuration also work in the existing glassfish5x containerId.

The side effect is you have to download a copy of Glassfish dist, the local deployer uses the Glassfish built-in asadmin tooling command to perform the deployment.

NOTE: The cargo.hostname is the hostname/address of the target Glassfish server to deploy.

Execute the following command to package and deploy the application to the target server.

mvn clean package cargo:deploy -Pglassfish-local-deployer

To undeploy the application, execute the following command.

mvn  cargo:undeploy -Pglassfish-local-deployer

Check the Cargo official guide for the instructions of Remote Deployment to Glassfish v6 and the changes of Cargo glassfish6x containerid.