Overview
This is a repackaged software product wherein additional charges apply for hardening, security configuration, and support.
WHAT IS APACHE TOMEE
Apache TomEE is the Apache Software Foundation's Jakarta EE application server: Apache Tomcat at its core, with the enterprise APIs assembled on top that Tomcat alone does not provide. It implements the Jakarta EE 10 specifications - Enterprise Beans for transactional business logic, Contexts and Dependency Injection for wiring, Persistence for object-relational mapping, RESTful and SOAP Web Services, Messaging, Faces for server-side UI, and Bean Validation. Applications deploy as ordinary WAR or EAR archives. This image ships the official Plume distribution (the full profile, built on EclipseLink for Persistence and Mojarra for Faces), verified against the upstream SHA-512 checksum and running on OpenJDK 17 as a non-root service. One JVM process, no external database, cache tier or container runtime. Apache-2.0 license, no vendor lock-in.
WHAT THIS AMI ADDS
Security hardening:
- HTTP connector bound to 127.0.0.1:8080 (loopback only); nginx terminates TLS on port 443 and reverse-proxies to it - port 8080 is never exposed
- Manager and Host-Manager webapps are never reachable from the internet: nginx returns 403 at the perimeter, and TomEE additionally restricts them to localhost connections
- Manager admin password generated uniquely at first launch, written to /root/tomee-credentials.txt (mode 600) - nothing is baked into the image
- Only the required listeners are enabled - the AJP connector and the secondary HTTPS connector remain disabled
- The bundled message broker binds no TCP listener until an application configures one
- Runs as a non-root tomee system user with UMask 0027
- JVM heap (-Xms/-Xmx) sized from the instance RAM at first launch
- UFW firewall pre-configured (only ports 22, 80 and 443 open; 80 serves the HTTPS redirect and certificate renewal)
- certbot pre-installed - one command swaps the self-signed certificate for a CA-signed one
- CVE scan - every image is scanned for vulnerabilities before release
OS hardening (CIS Level 1):
- CIS Ubuntu 24.04 LTS Level 1 benchmark applied via ansible-lockdown
- auditd, fail2ban, AppArmor, SSH key-only, kernel hardening, IMDSv2 enforced
Compliance artifacts:
- SBOM - CycloneDX 1.6 at /etc/lynxroute/sbom.json
- CIS Conformance Report at /etc/lynxroute/cis-report.html
- CIS Tailored Profile at /usr/share/doc/lynxroute/CIS_TAILORED_PROFILE.md
- Jakarta EE verification application at /usr/share/lynxroute/tomee-sample.war - shipped but not deployed, so you can confirm the enterprise stack works on your own instance in one command
Highlights
- TomEE security baked in: the HTTP connector is bound to loopback behind an nginx TLS perimeter on 443, the Manager and Host-Manager apps are blocked at the perimeter and protected by a password generated at first launch, only the required listeners are enabled, and the server runs as a non-root user with the JVM heap sized from your instance RAM.
- CIS Level 1 hardened Ubuntu 24.04 LTS: auditd, fail2ban, AppArmor, SSH key-only, IMDSv2 enforced. CVE-scanned before every release. SBOM (CycloneDX) and CIS Conformance Report included.
- Full Jakarta EE 10 profile on OpenJDK 17: Enterprise Beans, CDI, Persistence, REST, SOAP, Messaging and Faces in one JVM process. Drop a WAR or EAR into /opt/tomee/webapps to deploy. Apache-2.0 license - fully auditable, no vendor lock-in.
Details
Introducing multi-product solutions
You can now purchase comprehensive solutions tailored to use cases and industries.
Features and programs
Financing for AWS Marketplace purchases
Pricing
Free trial
Dimension | Cost/hour |
|---|---|
t3.medium Recommended | $0.05 |
t3.large | $0.05 |
t3.small | $0.03 |
m6i.large | $0.05 |
Vendor refund policy
We do not offer refunds for this product. AWS infrastructure charges (EC2, EBS, data transfer) are billed separately by AWS and are not refundable by us.
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
64-bit (x86) Amazon Machine Image (AMI)
Amazon Machine Image (AMI)
An AMI is a virtual image that provides the information required to launch an instance. Amazon EC2 (Elastic Compute Cloud) instances are virtual servers on which you can run your applications and workloads, offering varying combinations of CPU, memory, storage, and networking resources. You can launch as many instances from as many different AMIs as you need.
Version release notes
Apache TomEE 10.2.0 - Initial release (August 2026)
- Apache TomEE 10.2.0 Plume on Ubuntu 24.04 LTS (OpenJDK 17, full Jakarta EE 10 profile)
- CIS Level 1 hardening applied (ansible-lockdown/UBUNTU24-CIS)
- CVE-scanned before every release
- HTTP connector bound to 127.0.0.1:8080; nginx terminates TLS on port 443
- Manager / Host-Manager never exposed on the public perimeter; admin password generated at first launch
- Only the required listeners enabled; the bundled message broker opens no TCP port by default
- Runs as a non-root tomee user (UMask 0027); JVM heap sized from the instance RAM at first launch
- Jakarta EE verification application included at /usr/share/lynxroute/tomee-sample.war (not deployed)
- certbot pre-installed for CA-signed TLS certificates
- UFW firewall pre-configured (ports 22, 80, 443 only)
- fail2ban, auditd, AppArmor pre-configured
- SBOM (CycloneDX 1.6) at /etc/lynxroute/sbom.json
- CIS Conformance Report (OpenSCAP) at /etc/lynxroute/cis-report.html
- IMDSv2 enforced
Additional details
Usage instructions
- Launch instance (t3.medium recommended; t3.small minimum)
- Open Security Group - allow TCP 443 from your IP (and TCP 80 if you plan to request a CA-signed certificate)
- SSH: ssh -i key.pem ubuntu@<PUBLIC_IP>
- Read credentials: sudo cat /root/tomee-credentials.txt
- Open https://<PUBLIC_IP>/ in your browser - accept the self-signed certificate warning. The default TomEE landing page is served over TLS.
- Confirm the Jakarta EE stack with the bundled sample application: sudo install -o tomee -g tomee -m 0640 /usr/share/lynxroute/tomee-sample.war /opt/tomee/webapps/sample.war curl -k https://<PUBLIC_IP>/sample/api/hello It answers {"status":"ok","ejb":"jakarta-ee-ok"} - a REST resource backed by a CDI-injected stateless session bean, so a reply confirms the REST, CDI and Enterprise Beans containers are all working. Remove it when done: sudo rm -rf /opt/tomee/webapps/sample.war /opt/tomee/webapps/sample
- Deploy your own application: copy a .war or .ear into /opt/tomee/webapps/ (for example myapp.war auto-deploys), then browse https://<PUBLIC_IP>/myapp/
- Manage the server via the Manager app (bound to localhost, never exposed on 443) over an SSH tunnel: ssh -i key.pem -L 8080:127.0.0.1:8080 ubuntu@<PUBLIC_IP> open http://127.0.0.1:8080/manager/html (user admin, password from the credentials file)
The HTTP connector is bound to 127.0.0.1:8080; nginx terminates TLS on port 443 and reverse-proxies to it. The Manager admin password is generated at first launch and saved to /root/tomee-credentials.txt. The JVM heap is sized automatically from the instance RAM.
To check the TomEE version the server itself reports: sudo /usr/local/sbin/tomee-version.sh (The bundled /opt/tomee/bin/version.sh leads with the embedded Apache Tomcat version, which is a different number.)
Replace the self-signed TLS certificate with a CA-signed certificate for production use: sudo certbot --nginx -d yourdomain.com Certificate issuance and renewal need inbound TCP 80 reachable, so allow it in the Security Group first.
Resources
Vendor resources
Support
Vendor support
Visit us online: https://lynxroute.com
For TomEE documentation:
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.
Similar products
