2

谁能告诉我如何在 JBoss AS 7 中自定义 http 代码和原因短语?

基本上我有一个 REST Web 服务,它返回一个非标准状态代码“499”,原因是“应用程序错误”

standalone.xml中,我将 设置org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADERtrueunder systemproperties,但 AS 仍然会覆盖 HTTP 错误消息。

4

2 回答 2

1

JBoss 文档中似乎有一个错误,正确的属性名称是:

org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER

所以在独立版中你应该有这样的东西:

<system-properties>
    <property name="org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER" value="true"/>
</system-properties>
于 2014-08-18T12:17:23.670 回答
0

我假设使用 RestEasy 解释 REST 服务。

这提供了一个很好的特性,即使用@Context注入 HTTP 响应对象:

@Context 注释允许您注入 javax.ws.rs.core.HttpHeaders、javax.ws.rs.core.UriInfo、javax.ws.rs.core.Request、javax.servlet.HttpServletRequest、javax.servlet 的实例。 HttpServletResponse、javax.servlet.ServletConfig、javax.servlet.ServletContext 和 javax.ws.rs.core.SecurityContext 对象。

@Path("/")
public class MyService {
    @Context org.jboss.resteasy.spi.HttpResponse response;

    @GET @Path("/") public void myMethod(){
        response.sendError(499, "The file was censored by NSA.") 
    }
}

但也许您应该考虑使用专有的 HTTP 标头:

        response.getOutputHeaders().putSingle("X-MyApp-Error", 
              "499 Our server is down and admin is on holiday. Mañana.");
于 2013-07-07T05:26:34.350 回答