Everything a Java app needs in production, built in, not bolted on.
From deploy to monitoring to failover, every piece of the JavaGrove platform is designed around how Java applications actually run.
Deploy the way your team already builds.
Push to a Git remote for automatic build-and-deploy, upload a WAR or EAR directly, or wire your existing CI pipeline (GitHub Actions, GitLab CI, Jenkins) into our deploy API. Maven and Gradle builds run in an isolated builder with your dependency cache retained between deploys.
- Git push-to-deploy with zero-downtime rolling restarts
- Direct WAR / EAR upload via SFTP or web console
- Staging environments that mirror production config
[INFO] BUILD SUCCESS
$ grove deploy target/app.war --env staging
✓ uploaded (18.2 MB)
✓ deployed to staging · 0s downtime
→ https://staging.checkout.javagrove.app
See what the JVM is actually doing.
Every container ships with JMX access, live heap and garbage-collection metrics, on-demand thread dumps, and streaming application logs: the diagnostics you'd expect from a Java-literate host, available from day one.
- JMX/JConsole & VisualVM-compatible remote access
- Heap, GC pause, and thread-count dashboards
- One-click thread dumps and heap snapshots
gc G1 · 3 collections/min · 4ms avg pause
threads 42 live · 0 blocked
$ grove logs checkout-api --follow
INFO o.a.c.startup.Catalina.start Server startup in 891 ms
Isolated by default, patched without you asking.
Each JVM container is a separate process with its own filesystem boundary and resource limits. Free TLS certificates, a managed application firewall, and scheduled JDK/runtime security patching come standard, and you can also opt into a manual patch window if your app needs advance notice.
- Free, auto-renewing TLS on every domain
- Managed firewall and DDoS mitigation
- Scheduled JDK & runtime CVE patching
✓ TLS: valid, auto-renews in 62 days
✓ JDK: 21.0.9 (patched 4 days ago)
✓ WildFly: 31.0.2 (patched 4 days ago)
firewall 3 rules active · WAF: on
Wire up your data layer without fighting connection pools.
Managed MySQL, PostgreSQL, and MariaDB instances connect via JNDI datasources pre-configured in your runtime, with pooling tuned to your container size. Bring your own external database instead, if you prefer.
- MySQL, PostgreSQL & MariaDB, provisioned in seconds
- Pre-wired JNDI datasources & connection pooling
- Automated daily backups with point-in-time restore
<connection-url>jdbc:postgresql://db.internal/app</connection-url>
<pool max-pool-size="25"/>
</datasource>
Grow from one container to a cluster.
Resize a container's heap and CPU without downtime, add JVM containers behind a load balancer, or move to WildFly domain-mode or Payara clustering when a single instance isn't enough. You scale the pieces that need it, not the whole account.
- Live vertical resizing (heap, CPU) per container
- Load-balanced horizontal scaling across containers
- WildFly domain mode & Payara clustering on Canopy+
✓ resized, restarted in 6s (rolling)
$ grove cluster status
node-1 active node-2 active node-3 active
Backed by an uptime SLA and engineers who know the JVM.
Automated backups, health checks with auto-restart, and an uptime SLA with service credits come on every plan. When something needs a human, you're talking to someone who can read a thread dump, not a script.
- 99.9%+ uptime SLA with automatic service credits
- Automated backups with configurable retention
- Support engineers who specialize in Java, not a general script
uptime (90d) 99.98%
last backup 14 min ago · retained 14 days
support priority queue · avg reply < 15 min