Getting Started
Screen Cast
Before exploring the code, it may be helpful to view a demo of the application functionality. The video below demos the major functionality of the Eclipse Cargo Tracker application. It is intended to be a helpful point to start exploring how the application implements Domain-Driven Design (DDD) using Jakarta EE.
The following is the functionality highlighted in the demo:
-
Tracking cargo using the public interface
-
Monitoring cargo using both the static dashboard and live map
-
Booking and routing cargo
-
Registering cargo life-cycle events using the mobile interface
-
Registering cargo life-cycle events in bulk using the batch file processing interface
Exploring the Code
All of the code is available on GitHub. You can download it as a zip or browse the repository online.
Running the Application
The project is Maven based, so you should be able to easily build it or set it up in your favorite IDE. We currently have instructions for Visual Studio Code.
You can also run the application directly from the command line using the Cargo Maven plugin. All you need to do is navigate to the project source root and type the following (please make sure you have Java SE 11/Java SE 17 and JAVA_HOME set correctly):
mvn clean package cargo:run
Once the application starts up, just open up a browser and navigate to http://localhost:8080/cargo-tracker/.
This will run the application with Payara Server by default. The project also has Maven profiles to support GlassFish and Open Liberty. For example you can run using GlassFish using the following command:
mvn clean package -Pglassfish cargo:run
Similarly, you can run using Open Liberty using the following command:
mvn clean package -Popenliberty liberty:run
Cloud Demo
Cargo Tracker is deployed to Kubernetes on the cloud using GitHub Actions workflows. You can find the demo deployment on the Scaleforce cloud at https://cargo-tracker.j.scaleforce.net. This project is very thankful to our sponsors Jelastic and Scaleforce for hosting the demo! The deployment and all data is refreshed nightly.