Dropwizard
Opinionated Java microservice framework — bundles Jetty (embedded HTTP server), Jersey (JAX-RS REST), Jackson (JSON), Hibernate Validator, Metrics (operational metrics), SLF4J/Logback (logging), and Liquibase (database migrations) into a single convention-over-configuration package. Dropwizard popularized the 'fat JAR' microservice pattern (single deployable JAR) before Spring Boot. Configuration via YAML. Built-in health check API (/healthcheck), metrics API (/metrics), and admin interface. Simpler than Spring Boot with fewer abstractions and explicit wiring.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
HTTPS via Jetty TLS configuration. dropwizard-auth for authentication. Hibernate Validator for input validation. No default CSRF protection (API-first). Admin port must be secured — not exposed publicly in production.
⚡ Reliability
Best When
You want a simple, opinionated Java REST framework with batteries included (metrics, health checks, fat JAR) and minimal Spring Boot complexity — especially for small teams or services that don't need Spring's breadth.
Avoid When
You need Spring ecosystem integration, reactive programming, or require the extensive auto-configuration ecosystem of Spring Boot. Dropwizard is simpler but less extensible.
Use Cases
- • Build production-ready Java REST agent APIs with minimal framework overhead — Dropwizard bundles everything needed (HTTP, JSON, validation, metrics) with clear conventions
- • Create agent microservices with built-in operational visibility — Dropwizard's /healthcheck and /metrics endpoints are production-ready without extra configuration
- • Deploy agent services as single self-contained fat JARs — java -jar agent-service.jar; no application server deployment needed
- • Write agent API integration tests against local embedded Jetty using Dropwizard Testing — DropwizardAppRule or DropwizardTestSupport spin up full app in tests
- • Configure agent service parameters via YAML configuration with environment variable substitution — Dropwizard's configuration model supports ${ENV_VAR:-default} in YAML
Not For
- • Teams already invested in Spring Boot ecosystem — Dropwizard's smaller ecosystem means fewer auto-configurations and starters than Spring Boot; Spring Boot is the industry standard
- • Reactive/non-blocking services — Dropwizard uses blocking Jersey/Jetty; use Micronaut, Quarkus, or Spring WebFlux for reactive agent services
- • Services needing Spring ecosystem integration (Spring Security, Spring Data, etc.) — Dropwizard doesn't integrate with Spring ecosystem; use Spring Boot if Spring dependencies are needed
Interface
Authentication
Dropwizard provides auth via dropwizard-auth bundle — BasicAuthentication, OAuthCredentialAuthFilter. Custom Authenticator/Authorizer implementation required. JWT support via dropwizard-auth with custom JWT filter.
Pricing
Dropwizard is Apache 2.0 licensed, community-maintained. Free for all use.
Agent Metadata
Known Gotchas
- ⚠ Application class must be registered — Dropwizard resource classes registered in Application.run() via environment.jersey().register(new AgentResource()); forgetting registration causes 404 for all endpoints
- ⚠ Configuration YAML binding to POJOs — configuration class fields must match YAML keys exactly; typos in YAML silently use default values not throw errors; validate config in Application.run()
- ⚠ Admin port runs separately — Dropwizard runs application on port 8080 and admin on port 8081 by default; health checks (/healthcheck) and metrics (/metrics) are on admin port; common mistake is sending health check requests to app port
- ⚠ Managed objects for lifecycle — database connections and background threads must implement Managed interface and registered via environment.lifecycle().manage(managed); un-managed resources don't clean up on shutdown
- ⚠ Jersey DI is HK2, not Spring — Dropwizard uses Jersey's HK2 DI, not Spring IoC; Spring @Autowired doesn't work; use constructor injection or AbstractBinder registration for Dropwizard resource DI
- ⚠ Testing requires complete application startup — DropwizardAppRule starts full Jetty/Jersey stack for integration tests; slow test startup compared to Spring MockMvc; use lightweight unit tests for resource logic, integration tests for endpoint contracts
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Dropwizard.
Scores are editorial opinions as of 2026-03-06.