diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java index fad6fe29462..502b64451d7 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java @@ -51,6 +51,9 @@ @InterfaceAudience.LimitedPrivate({"YARN", "MapReduce"}) public abstract class WebApp extends ServletModule { private static final Logger LOG = LoggerFactory.getLogger(WebApp.class); + private static final String PACKAGES = + "com.sun.jersey.config.property.packages"; + private static final String JACKSON_JAXRS = "org.codehaus.jackson.jaxrs"; public enum HTTP { GET, POST, HEAD, PUT, DELETE }; @@ -188,6 +191,11 @@ protected void configureWebAppServlets() { params.put(FeaturesAndProperties.FEATURE_XMLROOTELEMENT_PROCESSING, "true"); params.put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, GZIPContentEncodingFilter.class.getName()); params.put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, GZIPContentEncodingFilter.class.getName()); + + // Put the Jackson package into the package properties list so that it + // gets pigked up as the JSON serializer. The default serializer + // generates malformed JSON. + params.put(PACKAGES, JACKSON_JAXRS); filter("/*").through(getWebAppFilterClass(), params); } }