覆盖HttpServletResponse sendError或setStatus

时间:2014-02-19 13:34:03

标签: java servlets jboss

我正在开发一个项目,我们将代码从Jetty迁移到Jboss。此代码用作API,其中不同的服务正在调用服务,服务执行操作并返回数据,但如果在此过程中出现问题,则抛出异常并最终捕获到顶级类。

使用Jetty时效果很好,因此Jetty servlet引擎将发送到HttpServletResponse sendError函数的消息添加到状态行。 但在Jboss中,默认状态是添加:

码头: return:500:我的自定义错误

Jboss:500:内部服务器错误

我无法将* USE_CUSTOM_STATUS_MSG_IN_HEADER *添加到Jboss,所以我想我可以通过创建一个HttpServletResponseWrapper来自定义响应,并覆盖sendError或setStatus消息以执行我需要的操作并返回内容我需要的方式。

但是,我不确定如何执行此操作,或者是否有更好的解决方案。

最好的, 亨利克

1 个答案:

答案 0 :(得分:0)

要包装HttpServletResponse,您需要创建一个Filter来创建HttpServletResponseWrapper并将其传递给链,而不是传递给doFilter(..)的原始响应:

@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
    HttpServletResponseWrapper wrapper = new MyHttpServletResponseWrapper(resp);
    chain.doFilter(req, wrapper);
}

private static class MyHttpServletResponseWrapper extends HttpServletResponseWrapper {
    ...
}