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.

Evaluated Mar 06, 2026 (0d ago) v4.x
Homepage ↗ Repo ↗ Developer Tools java rest microservices jetty jersey jackson metrics health-checks yaml
⚙ Agent Friendliness
62
/ 100
Can an agent use this?
🔒 Security
82
/ 100
Is it safe for agents?
⚡ Reliability
83
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
80
Error Messages
82
Auth Simplicity
82
Rate Limits
85

🔒 Security

TLS Enforcement
90
Auth Strength
80
Scope Granularity
75
Dep. Hygiene
82
Secret Handling
82

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

Uptime/SLA
85
Version Stability
82
Breaking Changes
80
Error Recovery
85
AF Security 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

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: bearer_token basic
OAuth: No Scopes: No

Dropwizard provides auth via dropwizard-auth bundle — BasicAuthentication, OAuthCredentialAuthFilter. Custom Authenticator/Authorizer implementation required. JWT support via dropwizard-auth with custom JWT filter.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

Dropwizard is Apache 2.0 licensed, community-maintained. Free for all use.

Agent Metadata

Pagination
custom
Idempotent
Full
Retry Guidance
Not documented

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.

$99

Scores are editorial opinions as of 2026-03-06.

5208
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered