This REST API provides some basic data about the Apollo missions. It is meant as a sample Java REST API to be used within the ISAAC Developer Blog posts.
Endpoints regarding the Apollo Missions:
- /missions/manned
- /missions/manned/{missionId}
Endpoints that can be used when experimenting with AWS EC2 Auto Scaling Service and using Elastic Load Balancing Service:
- /longComputation
- /health
To compile and run this application you will need:
- JDK 1.8+
- GraalVM (if you intend to make a native executable)
Make sure that the JAVA_HOME
environment variable has been set,
and that a JDK 1.8+ java
command is on the path.
Make sure that the GRAALVM_HOME
environment variable has been set.
See the Building a Native Executable guide for help setting up your environment.
Launch the Maven build on the checked out sources of this application:
./mvnw package
The Maven Quarkus plugin provides a development mode that supports live coding. To try this out:
./mvnw quarkus:dev
This command will leave Quarkus running in the foreground listening on port 8080. Append the endpoints to the base URL http://127.0.0.1:8080.
When you're done iterating in developer mode, you can run the application as a conventional jar file.
First compile it:
./mvnw package
Then run it:
java -jar ./target/apollo-missions-api-1.0.0-runner.jar
You can also create a native executable from this application without making any source code changes. A native executable removes the dependency on the JVM: everything needed to run the application on the target platform is included in the executable, allowing the application to run with minimal resource overhead.
Compiling a native executable takes a bit longer, as GraalVM performs additional
steps to remove unnecessary codepaths. Use the native
profile to compile a
native executable:
./mvnw package -Dnative
After the compilation is done, you'll be able to run this executable directly:
./target/apollo-missions-api-1.0.0-runner
First compile it:
./mvnw package
Then, build the image with:
docker build -f src/main/docker/Dockerfile.jvm -t isaacdeveloperblog/apollo-missions-api:1.0.0 .
Then run the container using:
docker run -i --rm -p 8080:8080 isaacdeveloperblog/apollo-missions-api:1.0.0
First compile it:
./mvnw package -Pnative -Dquarkus.native.container-build=true
Then, build the image with:
docker build -f src/main/docker/Dockerfile.native -t isaacdeveloperblog/apollo-missions-api-native:1.0.0 .
Then run the container using:
docker run -i --rm -p 8080:8080 isaacdeveloperblog/apollo-missions-api-native:1.0.0