Jersey 非OK状态的响应不符合producer批注中的内容类型

Jersey 非OK状态的响应不符合producer批注中的内容类型,jersey,jackson,jersey-2.0,Jersey,Jackson,Jersey 2.0,我在穿运动衫时遇到了一个奇怪的问题。。 我为整个资源类提供了@Producer(MediaType.APPLICATION_JSON)。 我有一个类CustomerResponse,这很正常) 如果我在客户端返回Response.status(status.OK).entity(customerResponse.build()),我将收到预期的json实体。 但是,如果我返回Response.status(status.BAD_REQUEST).entity(customerResponse.b

我在穿运动衫时遇到了一个奇怪的问题。。 我为整个资源类提供了@Producer(MediaType.APPLICATION_JSON)。 我有一个类CustomerResponse,这很正常) 如果我在客户端返回Response.status(status.OK).entity(customerResponse.build()),我将收到预期的json实体。 但是,如果我返回Response.status(status.BAD_REQUEST).entity(customerResponse.build()),则内容类型将变为text/html

如果我将Producer更改为APPLICATION_XML,同样的事情也会发生。在我看来,只有400的响应才会返回@Producer注释中指定的内容类型。对于所有带有其他状态代码的响应,它只返回text/html


有人能帮我吗?非常感谢。

我们使用如下:

Response.status(Response.Status.BAD_REQUEST).entity(myObject)
            .type(MediaType.APPLICATION_JSON_TYPE).build()

这真的很有趣。 我使用以下代码启动了grizzly servlet而不是grizzly服务器

WebappContext webappContext = new WebappContext("GRIZZLY Web Server WebappContext");
ServletRegistration servletRegistration = webappContext.addServlet("JerseyServletContainer", ServletContainer.class);
servletRegistration.setInitParameter("jersey.config.server.provider.packages", WebServiceConstants.ROOT_PACKAGE);
servletRegistration.addMapping("/*");
webappContext.deploy(grizzlyWebServer);
startGrizzlyWebServer(grizzlyWebServer);
servlet似乎以某种方式将所有非OK(非400)http响应的内容类型转换为type=text/html;字符集=ISO-8859-1


如果我启动grizzly http服务器,一切正常

当然。但我的方法也应该有效。事实上,它确实有效。这似乎与泽西岛的客户有关。如果我使用curl,那么所有响应都是JSON内容类型。但是,如果我使用Jersey客户端,似乎Jersey客户端会将内容类型转换为text/html以获得非OK响应。但是,我还没有弄清楚如何删除覆盖。