Deploying WildFly Swarm Applications To Heroku
WildFly Swarm applications can be deployed to Heroku, simply by adding a few files to the deployment. In this post, I’ll show the changes that are needed to be made to a WildFly Swarm application and how to then deploy the application to Heroku. I’ll show how to deploy my Fruits example WildFly Swarm application to Heroku. The source for this application can be cloned from GitHub at https://github.com/doobrie/swarm-rs
Creating a Heroku Application
Assuming that you’ve got the Heroku Toolbelt installed, creating a Heroku application is a matter of opening a command prompt/terminal in the root of a WildFly Swarm project (for this example, a Maven project), and executing the heroku create
command.
$>heroku create Creating app... done, stack is cedar-14 https://mighty-temple-xxxxx.herokuapp.com/ | https://git.heroku.com/mighty-temple-xxxxx.git
This creates a Heroku application, adding a git remote, heroku
, ready for deploying your application.
Defining the Java Runtime
Heroku can automatically determine that your application is Java based, but needs to be told which version of Java to run. To define this, create a file called system.properties
in the root of the project containing a single line indicating the version of Java required.
java.runtime.version=1.8
How To Execute The Application
Heroku uses a Procfile
to determine how your application should be exeuted. This file should also be located in the root of your project. To run a web application, we need to tell Heroku to run a Web Dyno. We also need to tell it what command to run and what port to run on.
In Heroku, the port that applications must listen on is defined by the $PORT
environment variable. A default WildFly Swarm application runs on port 8080, but this can be changed by adding the swarm.http.port
environment variable. To execute a WildFly Swarm application, the Procfile
should look something like
web: java -Dswarm.http.port=$PORT -jar target/swarm-rs-1.0-SNAPSHOT-swarm.jar
Since we’re running a WildFly Swarm “fat” Jar, there are no additional class path entries required – all that is needed is the name of the Jar file containing the application, swarm-rs-1.0-SNAPSHOT-swarm.jar
in this example.
Deploying The Application
That’s all that is required to get going with Heroku and WildFly Swarm. You can see that we’ve made no changes to the application itself other than adding a system.properties
file to determine which Java runtime to use, and a Procfile
to define how to start the application.
To deploy the application on Heroku, ensure these files are added and committed to the local Git repository and then push the changes to Heroku.
$>git push heroku master remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] BUILD SUCCESS remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] Total time: 01:14 min remote: [INFO] Finished at: 2016-02-07T21:49:57+00:00 remote: [INFO] Final Memory: 36M/389M remote: [INFO] ------------------------------------------------------------------------ remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 96.9M remote: -----> Launching... remote: Released v4 remote: https://mighty-temple-xxxxx.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.... done. To https://git.heroku.com/mighty-temple-xxxxx.git * [new branch] master -> master
To verify that the application works, browse to the /api/fruit
Url of the application. The Url of the application is displayed on the console after pushing to Heroku.
Conclusion
I’ve given an overview of how to deploy WildFly Swarm applications to Heroku. Hopefully you’ll agree that this is a straightfoward process that allows you to be quickly up and running on Heroku.
Reference: | Deploying WildFly Swarm Applications To Heroku from our JCG partner David Salter at the David Salter’s Blog blog. |