Java 类com.codahale.metrics.jvm.ThreadDump 实例源码
项目:monitoring-center
文件:MonitoringCenterServlet.java
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
boolean disableAuthorization = Boolean.TRUE.toString().equalsIgnoreCase(servletConfig.getInitParameter(DISABLE_AUTHORIZATION_INIT_PARAM));
if (!disableAuthorization) {
String credentials = null;
String username = servletConfig.getInitParameter(USERNAME_INIT_PARAM);
String password = servletConfig.getInitParameter(PASSWORD_INIT_PARAM);
if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
credentials = username.trim() + ":" + password.trim();
} else {
credentials = DEFAULT_CREDENTIALS;
}
this.encodedCredentials = BaseEncoding.base64().encode(credentials.getBytes());
}
this.objectMapper = new ObjectMapper()
.registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.MICROSECONDS, false))
.registerModule(new HealthCheckModule())
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.setTimeZone(TimeZone.getDefault())
.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"));
this.graphiteMetricFormatter = new GraphiteMetricFormatter(TimeUnit.SECONDS, TimeUnit.MICROSECONDS);
try {
this.threadDumpGenerator = new ThreadDump(ManagementFactory.getThreadMXBean());
} catch (NoClassDefFoundError ignore) {
}
ServletContext servletContext = servletConfig.getServletContext();
String servletSpecVersion = servletContext.getMajorVersion() + "." + servletContext.getMinorVersion();
this.serverInfo = ServerInfo.create(servletContext.getServerInfo(), servletSpecVersion);
}
项目:metrics-plugin
文件:MetricsRootAction.java
/**
* Binds the thread dump to the CORS aware URL {@code /metrics/threads} where the metrics access key is
* provided in the form field {@code key} or an {@code Authorization: Jenkins-Metrics-Key {key}} header
*
* @param req the request
* @param key the key from the form field.
* @return the {@link HttpResponse}
* @throws IllegalAccessException if the access attempt is invalid.
*/
@SuppressWarnings("unused") // stapler binding
@Restricted(NoExternalUse.class) // stapler binding
@RequirePOST
public HttpResponse doThreads(StaplerRequest req, @QueryParameter("key") String key) throws IllegalAccessException {
requireCorrectMethod(req);
if (StringUtils.isBlank(key)) {
key = getKeyFromAuthorizationHeader(req);
}
Metrics.checkAccessKeyThreadDump(key);
return Metrics.cors(key, new ThreadDumpResponse(new ThreadDump(ManagementFactory.getThreadMXBean())));
}
项目:jooby
文件:ThreadDumpHandlerTest.java
@Test
public void dump() throws Exception {
byte[] bytes = new byte[0];
new MockUnit(Request.class, Response.class, ByteArrayOutputStream.class)
.expect(unit -> {
ThreadMXBean tmxb = unit.mock(ThreadMXBean.class);
unit.mockStatic(ManagementFactory.class);
expect(ManagementFactory.getThreadMXBean()).andReturn(tmxb);
ByteArrayOutputStream stream = unit.constructor(ByteArrayOutputStream.class).build();
expect(stream.toByteArray()).andReturn(bytes);
ThreadDump td = unit.constructor(ThreadDump.class)
.args(ThreadMXBean.class)
.build(tmxb);
td.dump(stream);
unit.registerMock(ThreadDump.class, td);
})
.expect(unit -> {
Response rsp = unit.get(Response.class);
expect(rsp.type(MediaType.plain)).andReturn(rsp);
expect(rsp.status(Status.OK)).andReturn(rsp);
expect(rsp.header("Cache-Control", "must-revalidate,no-cache,no-store")).andReturn(rsp);
rsp.send(bytes);
})
.run(unit -> {
new ThreadDumpHandler().handle(unit.get(Request.class), unit.get(Response.class));
});
}
项目:werval
文件:Tools.java
public Outcome threadDump()
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
new ThreadDump( ManagementFactory.getThreadMXBean() ).dump( baos );
return outcomes().ok( baos.toByteArray() ).asTextPlain().build();
}
项目:metrics-plugin
文件:MetricsRootAction.java
public ThreadDumpResponse(ThreadDump threadDump) {
this.threadDump = threadDump;
}
项目:metrics-plugin
文件:MetricsRootAction.java
/**
* Web binding for {@literal /threads}
*
* @return the response
*/
@Restricted(NoExternalUse.class) // only for use by stapler web binding
public HttpResponse doThreads() {
return new ThreadDumpResponse(new ThreadDump(ManagementFactory.getThreadMXBean()));
}