====== Dropwizard ====== ===== HTTP ===== The port settings of the Jetty server can also be done via the configuration file. server: applicationConnectors: - type: http port: 18080 adminConnectors: - type: http port: 18081 ===== Logging ===== The logging of the server and services is also done via the configuration file. server: requestLog: timeZone: UTC appenders: - type: file currentLogFilename: /var/log/areacodes/access.log threshold: ALL archive: true archivedLogFilenamePattern: /var/log/areacodes/access.%d.log.gz archivedFileCount: 14 logging: level: INFO appenders: - type: console threshold: WARN target: stderr - type: file currentLogFilename: /var/log/areacodes/broker.log archivedLogFilenamePattern: /var/log/areacodes/broker.%d.log.gz archivedFileCount: 14 timeZone: UTC ===== Metrics ===== The [[http://metrics.codahale.com/ | Metrics]] library is used to get an insight view into the running server. ==== Adding additional metrics ==== To add additional metrics a ''MetricRegistry'' is needed. It can be obtained during the bootstrap phase. @Override public void initialize(Bootstrap bootstrap) { metricRegistry = bootstrap.getMetricRegistry(); } ===== Jetty ===== ==== Adding additional HTML pages ==== If you want to add additional HTML pages (like a welcome page) then you can do this in the ''initialize'' method of the Application class. Found on Stackoverlow [[http://stackoverflow.com/questions/22543007/configure-dropwizard-to-server-index-html-for-almost-all-routes | Configure dropwizard to server index.html for (almost) all routes?]]
I've done this without changing my configuration. In fact, it only took me one line of code, to be put in the initialize method of my Application class: bootstrap.addBundle(new AssetsBundle("/app", "/", "index.html", "static")); Which basically says to serve anything under /app inside my JAR file under the URL pattern /, with index.html as the default file. This bundle will be named static, but you could pick whatever name you like. Note that I'm using version 0.7.0-rc2 of Dropwizard, I'm not sure whether it works for earlier versions as well.
===== Serialization ===== [[http://wiki.fasterxml.com/JacksonHome | Jackson]] is used for de-/serialization of the data. ''@JsonProperty'' is used to annotate field or method for serialization. If a field should be ignored during the serialization process the annotation ''@JsonIgnore'' can be used or the field can be marked as ''transient''. ===== Swagger ===== Swagger can be used to document the REST services registered the dropwizard instance. ==== Add Maven Dependency ==== io.federecio dropwizard-swagger 0.5.2 ==== Register Swagger UI ==== private final SwaggerDropwizard swaggerDropwizard = new SwaggerDropwizard(); @Override public void initialize(Bootstrap bootstrap) { ... swaggerDropwizard.onInitialize(bootstrap); } @Override public void run(TestConfiguration configuration, Environment environment) throws Exception { ... swaggerDropwizard.onRun(configuration, environment); } ==== Annotate Resources ==== Swagger only scans resources which have an @Api annotation on them. Resources need to be annotated to be listed by swagger. ==== Annotate Methods ==== At least one method must be annotated for the resource to be visible for swagger. ==== Links ==== * https://github.com/federecio/dropwizard-swagger * https://github.com/swagger-api/swagger-core/wiki/JavaDropwizard-Quickstart {{tag>devel java dropwizard}}