在JBoss AS 7中自定义HTTP代码和错误消息

时间:2013-01-15 22:00:48

标签: http tomcat jboss status

谁能告诉我如何在JBoss AS 7中自定义http代码和推理词?

基本上我有一个REST Web服务,它返回一个非标准状态代码'499',其原因是“app error”

standalone.xml中,我在org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER下将true设置为systemproperties,但AS仍会覆盖HTTP错误消息。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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.");