Skip to content

Instantly share code, notes, and snippets.

@sandor-nemeth
Last active June 21, 2016 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sandor-nemeth/eaabb4649f2c2cbe39fefa0746b9642a to your computer and use it in GitHub Desktop.
Save sandor-nemeth/eaabb4649f2c2cbe39fefa0746b9642a to your computer and use it in GitHub Desktop.
Dropwizard Jetty configuration configuration for Spring Boot
package com.github.sandornemeth;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.jetty9.InstrumentedHandler;
import org.eclipse.jetty.server.Server;
import org.springframework.boot.context.embedded
.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded
.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.jetty
.JettyEmbeddedServletContainerFactory;
/**
* {@link EmbeddedServletContainerCustomizer} implementation providing
* Dropwizard metrics for the embedded Jetty in spring-boot.
* <p>
* By default prefixes every metric with <i>jetty9</i>.
* </p>
* <p>
* Usage:
* </p>
* <pre>
* <code>
* @Bean public EmbeddedServletContainerCustomizer metricCustomizer
* ({@link MetricRegistry} registry) {
* return new JettyServlectContainerCostumizer(registry,
* "a-prefix");
* }
* </code>
* </pre>
*
* @author sandornemeth
*/
public class JettyServletContainerCostumizer implements
EmbeddedServletContainerCustomizer {
private static final String DEFAULT_PREFIX = "jetty9";
private MetricRegistry registry;
private String prefix;
/**
* Constructor.
*
* @param registry the metric registry
*/
public JettyServletContainerCostumizer(MetricRegistry registry) {
this(registry, DEFAULT_PREFIX);
}
/**
* Constructor.
*
* @param registry the metric registry
* @param prefix the prefix to be used
*/
public JettyServletContainerCostumizer(MetricRegistry registry,
String prefix) {
this.registry = registry;
this.prefix = prefix;
}
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
JettyEmbeddedServletContainerFactory factory =
(JettyEmbeddedServletContainerFactory) container;
factory.addServerCustomizers(this::customize);
}
protected void customize(Server server) {
InstrumentedHandler handler =
new InstrumentedHandler(registry, prefix);
handler.setHandler(server.getHandler());
server.setHandler(handler);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment