You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ey...@apache.org on 2011/10/05 18:09:28 UTC
svn commit: r1179287 - in
/hadoop/common/trunk/hadoop-common-project/hadoop-common: CHANGES.txt
src/main/java/org/apache/hadoop/jmx/JMXJsonServlet.java
Author: eyang
Date: Wed Oct 5 16:09:27 2011
New Revision: 1179287
URL: http://svn.apache.org/viewvc?rev=1179287&view=rev
Log:
HADOOP-7704. Reduce number of object created by JMXJsonServlet.
(Devaraj K via Eric Yang)
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/jmx/JMXJsonServlet.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1179287&r1=1179286&r2=1179287&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Wed Oct 5 16:09:27 2011
@@ -48,6 +48,9 @@ Trunk (unreleased changes)
HADOOP-7703. Improved excpetion handling of shutting down web server.
(Devaraj K via Eric Yang)
+ HADOOP-7704. Reduce number of object created by JMXJsonServlet.
+ (Devaraj K via Eric Yang)
+
Release 0.23.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/jmx/JMXJsonServlet.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/jmx/JMXJsonServlet.java?rev=1179287&r1=1179286&r2=1179287&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/jmx/JMXJsonServlet.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/jmx/JMXJsonServlet.java Wed Oct 5 16:09:27 2011
@@ -117,13 +117,15 @@ public class JMXJsonServlet extends Http
private static final long serialVersionUID = 1L;
- // ----------------------------------------------------- Instance Variables
/**
* 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.
*/
@@ -131,6 +133,7 @@ public class JMXJsonServlet extends Http
public void init() throws ServletException {
// Retrieve the MBean server
mBeanServer = ManagementFactory.getPlatformMBeanServer();
+ jsonFactory = new JsonFactory();
}
/**
@@ -149,53 +152,45 @@ public class JMXJsonServlet extends Http
response)) {
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;
}
- 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);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- } catch ( MalformedObjectNameException e ) {
+ } catch (MalformedObjectNameException e) {
LOG.error("Caught an exception while processing JMX request", e);
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
}