UPDATED!
In this blog post, I will describe how to deploy the CloudEE Duke application packaged in a WildFly Swarm über-jar to Oracle Application Container Cloud.
Über-jar approach
The deployment artifact required for deployment in Oracle Application Container Cloud is a ZIP archive containing the application über-jar and a manifest file (manifest.json). The WildFly Swarm version of the manifest.json for CloudEE Duke is listed below.
{ "runtime": { "majorVersion": "8" }, "command": "java -Dswarm.http.port=$PORT -Dswarm.bind.address=$HOSTNAME -jar cloudee-duke-swarm.jar", "release": { "version": "1.0", "build": "1", "commit": "123" }, "notes": "Dukes says hello from Swarm" }
You need to specify the port and host for WildFly Swarm in the startup command. This is done by using the $PORT and $HOSTNAME environment variables.
The über-jar is produced by using the WildFly Swarm Maven Plugin:
<plugin> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-plugin</artifactId> <version>${version.wildfly.swarm}</version> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin>
Hollow-jar approach
It is also possible to package the CloudEE Duke application as a hollow-jar using the WildFly Swarm Maven Plugin:
<plugin> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-plugin</artifactId> <version>${version.wildfly.swarm}</version> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> <configuration> <hollow>true</hollow> <!-- Tells the plugin to produce a hollow-jar rather than a über-jar --> </configuration> </plugin>
The command configuration in the manifest.json needs to be updated accordingly:
{ "runtime": { "majorVersion": "8" }, "command": "java -Dswarm.http.port=$PORT -Dswarm.bind.address=$HOSTNAME -jar cloudee-duke-hollow-swarm.jar cloudee-duke.war", "release": { "version": "1.0", "build": "1", "commit": "123" }, "notes": "Dukes says hello from Swarm" }
When using the hollow-jar approach, you will need to package both the hollow-jar and the application-war in the zip file together with the manifest.json file.
See the complete pom.xml for an example on how to produce the deployable ZIP archive with the maven command:
mvn clean package assembly:single -Pswarm
This will produce a file called cloudee-duke-oracle-swarm.zip in the target folder. This is the ZIP archive you will deploy to Oracle Application Container Cloud as shown in the screenshot below.
When your application is deployed, you should be able to access the hello endpoint
https://<dependsonyouraccount>.oraclecloud.com/hello
Duke says Hello!
You will also have the health and metrics endpoints provided by the MicroProfile implementation
https://<dependsonyouraccount>.oraclecloud.com/health
{
outcome: “UP”,
checks: [ ]
}
https://<dependsonyouraccount>.oraclecloud.com/metrics
# HELP base:classloader_total_loaded_class_count Displays the total number of classes that have been loaded since the Java virtual machine has started execution.
# TYPE base:classloader_total_loaded_class_count counter
base:classloader_total_loaded_class_count 14170.0
…