我正在开发一个项目,我们将代码从Jetty迁移到Jboss。此代码用作API,其中不同的服务正在调用服务,服务执行操作并返回数据,但如果在此过程中出现问题,则抛出异常并最终捕获到顶级类。
使用Jetty时效果很好,因此Jetty servlet引擎将发送到HttpServletResponse sendError函数的消息添加到状态行。 但在Jboss中,默认状态是添加:
码头: return:500:我的自定义错误
Jboss:500:内部服务器错误
我无法将* USE_CUSTOM_STATUS_MSG_IN_HEADER *添加到Jboss,所以我想我可以通过创建一个HttpServletResponseWrapper来自定义响应,并覆盖sendError或setStatus消息以执行我需要的操作并返回内容我需要的方式。
但是,我不确定如何执行此操作,或者是否有更好的解决方案。
最好的, 亨利克
答案 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 {
...
}