Experimental change for #260 to allow looking up Dropwizard MetricRegistry or HealthCheckRegistry via JNDI (for example in Tomcat).

pull/264/head
Brett Wooldridge 10 years ago
parent 956e6a4bb8
commit 196632b82e

@ -13,14 +13,6 @@
<parent> <parent>
<groupId>com.zaxxer</groupId> <groupId>com.zaxxer</groupId>
<artifactId>HikariCP-parent</artifactId> <artifactId>HikariCP-parent</artifactId>
<version>2.3.2-SNAPSHOT</version> <version>2.3.3-SNAPSHOT</version>
</parent> </parent>
<dependencies>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.3.2-SNAPSHOT</version>
</dependency>
</dependencies>
</project> </project>

@ -26,11 +26,16 @@ import java.util.TreeSet;
import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.zaxxer.hikari.util.PropertyBeanSetter; import com.zaxxer.hikari.util.PropertyBeanSetter;
import com.zaxxer.hikari.util.UtilityElf; import com.zaxxer.hikari.util.UtilityElf;
@ -496,9 +501,23 @@ public abstract class AbstractHikariConfig implements HikariConfigMBean
*/ */
public void setMetricRegistry(Object metricRegistry) public void setMetricRegistry(Object metricRegistry)
{ {
if (metricRegistry != null && !metricRegistry.getClass().getName().contains("MetricRegistry")) { if (metricRegistry != null) {
throw new IllegalArgumentException("Class must be an instance of com.codahale.metrics.MetricRegistry"); if (metricRegistry instanceof String) {
try {
InitialContext initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
metricRegistry = (MetricRegistry) envCtx.lookup((String) metricRegistry);
}
catch (NamingException e) {
throw new IllegalArgumentException(e);
}
}
if (!(metricRegistry instanceof MetricRegistry)) {
throw new IllegalArgumentException("Class must be an instance of com.codahale.metrics.MetricRegistry");
}
} }
this.metricRegistry = metricRegistry; this.metricRegistry = metricRegistry;
} }
@ -519,9 +538,23 @@ public abstract class AbstractHikariConfig implements HikariConfigMBean
*/ */
public void setHealthCheckRegistry(Object healthCheckRegistry) public void setHealthCheckRegistry(Object healthCheckRegistry)
{ {
if (healthCheckRegistry != null && !healthCheckRegistry.getClass().getName().contains("HealthCheckRegistry")) { if (healthCheckRegistry != null) {
throw new IllegalArgumentException("Class must be an instance of com.codahale.metrics.health.HealthCheckRegistry"); if (healthCheckRegistry instanceof String) {
try {
InitialContext initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
healthCheckRegistry = (MetricRegistry) envCtx.lookup((String) healthCheckRegistry);
}
catch (NamingException e) {
throw new IllegalArgumentException(e);
}
}
if (!(healthCheckRegistry instanceof HealthCheckRegistry)) {
throw new IllegalArgumentException("Class must be an instance of com.codahale.metrics.health.HealthCheckRegistry");
}
} }
this.healthCheckRegistry = healthCheckRegistry; this.healthCheckRegistry = healthCheckRegistry;
} }

@ -4,7 +4,7 @@
<groupId>com.zaxxer</groupId> <groupId>com.zaxxer</groupId>
<artifactId>HikariCP-parent</artifactId> <artifactId>HikariCP-parent</artifactId>
<version>2.3.2</version> <version>2.3.3-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>HikariCP-parent</name> <name>HikariCP-parent</name>

Loading…
Cancel
Save