|
@@ -117,13 +117,15 @@ public class JMXJsonServlet extends HttpServlet {
|
|
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
|
|
- // ----------------------------------------------------- Instance Variables
|
|
|
|
/**
|
|
/**
|
|
* MBean server.
|
|
* MBean server.
|
|
*/
|
|
*/
|
|
- protected transient MBeanServer mBeanServer = null;
|
|
|
|
|
|
+ protected transient MBeanServer mBeanServer;
|
|
|
|
|
|
- // --------------------------------------------------------- Public Methods
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Json Factory to create Json generators for write objects in json format
|
|
|
|
+ */
|
|
|
|
+ protected transient JsonFactory jsonFactory;
|
|
/**
|
|
/**
|
|
* Initialize this servlet.
|
|
* Initialize this servlet.
|
|
*/
|
|
*/
|
|
@@ -131,6 +133,7 @@ public class JMXJsonServlet extends HttpServlet {
|
|
public void init() throws ServletException {
|
|
public void init() throws ServletException {
|
|
// Retrieve the MBean server
|
|
// Retrieve the MBean server
|
|
mBeanServer = ManagementFactory.getPlatformMBeanServer();
|
|
mBeanServer = ManagementFactory.getPlatformMBeanServer();
|
|
|
|
+ jsonFactory = new JsonFactory();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -149,53 +152,45 @@ public class JMXJsonServlet extends HttpServlet {
|
|
response)) {
|
|
response)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ JsonGenerator jg = null;
|
|
|
|
+ try {
|
|
|
|
+ response.setContentType("application/json; charset=utf8");
|
|
|
|
|
|
- response.setContentType("application/json; charset=utf8");
|
|
|
|
-
|
|
|
|
- PrintWriter writer = response.getWriter();
|
|
|
|
|
|
+ PrintWriter writer = response.getWriter();
|
|
|
|
+ jg = jsonFactory.createJsonGenerator(writer);
|
|
|
|
+ jg.useDefaultPrettyPrinter();
|
|
|
|
+ jg.writeStartObject();
|
|
|
|
|
|
- JsonFactory jsonFactory = new JsonFactory();
|
|
|
|
- JsonGenerator jg = jsonFactory.createJsonGenerator(writer);
|
|
|
|
- jg.useDefaultPrettyPrinter();
|
|
|
|
- jg.writeStartObject();
|
|
|
|
- if (mBeanServer == null) {
|
|
|
|
- jg.writeStringField("result", "ERROR");
|
|
|
|
- jg.writeStringField("message", "No MBeanServer could be found");
|
|
|
|
- jg.close();
|
|
|
|
- LOG.error("No MBeanServer could be found.");
|
|
|
|
- response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // query per mbean attribute
|
|
|
|
- String getmethod = request.getParameter("get");
|
|
|
|
- if (getmethod != null) {
|
|
|
|
- String[] splitStrings = getmethod.split("\\:\\:");
|
|
|
|
- if (splitStrings.length != 2) {
|
|
|
|
- jg.writeStringField("result", "ERROR");
|
|
|
|
- jg.writeStringField("message", "query format is not as expected.");
|
|
|
|
- jg.close();
|
|
|
|
- response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
|
|
|
+ // query per mbean attribute
|
|
|
|
+ String getmethod = request.getParameter("get");
|
|
|
|
+ if (getmethod != null) {
|
|
|
|
+ String[] splitStrings = getmethod.split("\\:\\:");
|
|
|
|
+ if (splitStrings.length != 2) {
|
|
|
|
+ jg.writeStringField("result", "ERROR");
|
|
|
|
+ jg.writeStringField("message", "query format is not as expected.");
|
|
|
|
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ listBeans(jg, new ObjectName(splitStrings[0]), splitStrings[1],
|
|
|
|
+ response);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- listBeans(jg, new ObjectName(splitStrings[0]), splitStrings[1],
|
|
|
|
- response);
|
|
|
|
- jg.close();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- // query per mbean
|
|
|
|
- String qry = request.getParameter("qry");
|
|
|
|
- if (qry == null) {
|
|
|
|
- qry = "*:*";
|
|
|
|
|
|
+ // query per mbean
|
|
|
|
+ String qry = request.getParameter("qry");
|
|
|
|
+ if (qry == null) {
|
|
|
|
+ qry = "*:*";
|
|
|
|
+ }
|
|
|
|
+ listBeans(jg, new ObjectName(qry), null, response);
|
|
|
|
+ } finally {
|
|
|
|
+ if (jg != null) {
|
|
|
|
+ jg.close();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- listBeans(jg, new ObjectName(qry), null, response);
|
|
|
|
- jg.close();
|
|
|
|
-
|
|
|
|
- } catch ( IOException e ) {
|
|
|
|
|
|
+ } catch (IOException e) {
|
|
LOG.error("Caught an exception while processing JMX request", e);
|
|
LOG.error("Caught an exception while processing JMX request", e);
|
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
- } catch ( MalformedObjectNameException e ) {
|
|
|
|
|
|
+ } catch (MalformedObjectNameException e) {
|
|
LOG.error("Caught an exception while processing JMX request", e);
|
|
LOG.error("Caught an exception while processing JMX request", e);
|
|
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
}
|
|
}
|