Perfect π β hereβs a clear, complete, copy-and-save deployment guide for your Jakarta EE (GlassFish 7) project. It includes all commands, what each one does, and the expected output or result β so you can follow it anytime in the future.
This guide explains how to build, deploy, stop, and redeploy a Jakarta EE web project manually using Maven and GlassFish 7.
Before starting, make sure you have:
-
Java 17+ installed
java -version
-
Maven 3.8+ installed
mvn -v
-
Your Jakarta EE project created (for example:
jakarta-api-demo)~/Desktop/coding/java/day1/jakarta-api-demo/
From your project root:
cd ~/Desktop/coding/java/day1/jakarta-api-demo
mvn clean package- Cleans old builds
- Compiles your Java source code
- Packages it into a WAR file
You should see a new file here:
target/jakarta-api-demo.war
wget https://download.eclipse.org/ee4j/glassfish/glassfish-7.0.4.zipunzip glassfish-7.0.4.zipThis creates a folder named:
glassfish7/
Go to the bin folder that contains the asadmin command-line tool:
cd glassfish7/glassfish/binStart the built-in domain (domain1):
./asadmin start-domain- Starts the GlassFish server
- Default HTTP port β
8080 - Admin Console β
http://localhost:4848
Waiting for domain1 to start ...................
Successfully started the domain : domain1
domain Location: /.../glassfish7/glassfish/domains/domain1
Log File: /.../glassfish7/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
Deploy your newly built WAR file:
./asadmin deploy ~/Desktop/coding/java/day1/jakarta-api-demo/target/jakarta-api-demo.war- Copies your WAR file into the GlassFish domain
- Deploys it under
/jakarta-api-demo - Makes it accessible at
http://localhost:8080/jakarta-api-demo/
Application deployed with name jakarta-api-demo.
Command deploy executed successfully.
Open in browser:
http://localhost:8080/jakarta-api-demo/index.html
or if your app has REST endpoints, try:
http://localhost:8080/jakarta-api-demo/api/users
To gracefully stop the running GlassFish domain:
./asadmin stop-domainWaiting for the domain to stop ................
Command stop-domain executed successfully.
GlassFish supports multiple domains.
If you want to control a specific one (like domain1), use:
./asadmin start-domain domain1
./asadmin stop-domain domain1When you modify your code and rebuild it, you have two options:
./asadmin undeploy jakarta-api-demo
./asadmin deploy ~/Desktop/coding/java/day1/jakarta-api-demo/target/jakarta-api-demo.war./asadmin deploy --force=true ~/Desktop/coding/java/day1/jakarta-api-demo/target/jakarta-api-demo.warβ This replaces the old version automatically.
List all deployed applications:
./asadmin list-applicationsExample output:
jakarta-api-demo <enabled> (root)
Command list-applications executed successfully.
If GlassFish behaves strangely or youβve changed configs:
./asadmin restart-domainβ This will:
- Stop the domain
- Restart it automatically
- Keep all previous deployments
| Purpose | Path |
|---|---|
| Project Root | ~/Desktop/coding/java/day1/jakarta-api-demo/ |
| Build Output (WAR) | ~/Desktop/coding/java/day1/jakarta-api-demo/target/jakarta-api-demo.war |
| GlassFish Home | ~/Desktop/coding/java/day1/glassfish7/ |
| Admin Tool | ~/Desktop/coding/java/day1/glassfish7/glassfish/bin/asadmin |
| Default Domain | glassfish7/glassfish/domains/domain1 |
| Server Log | glassfish7/glassfish/domains/domain1/logs/server.log |
| Admin Console | http://localhost:4848 |
| App URL | http://localhost:8080/jakarta-api-demo/ |
| Action | Command |
|---|---|
| Build WAR | mvn clean package |
| Start server | ./asadmin start-domain |
| Deploy app | ./asadmin deploy <path-to-war> |
| List apps | ./asadmin list-applications |
| Undeploy app | ./asadmin undeploy jakarta-api-demo |
| Redeploy app | ./asadmin deploy --force=true <path-to-war> |
| Stop server | ./asadmin stop-domain |
| Restart server | ./asadmin restart-domain |
You can automate this by saving the following as deploy.sh:
#!/bin/bash
PROJECT=~/Desktop/coding/java/day1/jakarta-api-demo
WAR=$PROJECT/target/jakarta-api-demo.war
GF=~/Desktop/coding/java/day1/glassfish7/glassfish/bin
cd $PROJECT
mvn clean package
$GF/asadmin deploy --force=true $WARMake it executable:
chmod +x deploy.shRun it anytime with:
./deploy.shβ Thatβs your full Jakarta EE + GlassFish deployment workflow β from build β deploy β stop β redeploy, all explained step by step.
Would you like me to format this as a clean Markdown document (README.md) so you can drop it directly into your project folder for future reference?