[jboss-user] [JBossWS] - Re: change HTTP status code in a WS fault
axstevens
do-not-reply at jboss.com
Mon Jun 25 19:37:11 EDT 2007
Something along the following lines if you can configure in a filter.
But to a previous posters point. How do you get a filter configured when @WebService is a Session Bean, nice <web-app> example in user guide is for POJO. I guess use HTTP request/response context properties in SOAPHandler? Haven't looked to see if they are popuated yet.
But anyway kind of problemattic with a lot of servlet filter resources already written for authentication, etc.
public class AdobeStatusFilter implements Filter {
| Logger log = Logger.getLogger(AdobeStatusFilter.class);
| private FilterConfig filterConfig = null;
|
| public void init(FilterConfig filterConfig) throws ServletException {
| this.filterConfig = filterConfig;
| }
|
| public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
| AdobeResponseWrapper wrapper = new AdobeResponseWrapper((HttpServletResponse) resp);
| HttpServletResponse response = (HttpServletResponse)resp;
| chain.doFilter(req, wrapper);
| }
|
| public void destroy() {
| this.filterConfig = null;
| }
|
| }
public class AdobeResponseWrapper extends HttpServletResponseWrapper {
|
| private int statusCode;
| public AdobeResponseWrapper(HttpServletResponse response) {
| super(response);
| }
| public int getStatus() {
| return statusCode;
| }
| public void sendError(int errorCode) throws IOException {
| this.statusCode = adjust(errorCode);
| super.sendError(this.statusCode);
| }
| public void sendError(int errorCode, String errorMessage) throws IOException {
| this.statusCode = adjust(errorCode);
| super.sendError(this.statusCode, errorMessage);
| }
| public void setStatus(int statusCode) {
| this.statusCode = adjust(statusCode);
| super.setStatus(this.statusCode);
| }
| public void setStatus(int statusCode, String message) {
| this.statusCode = adjust(statusCode);
| super.setStatus(this.statusCode, message);
| }
|
| private int adjust(int errorCode) {
| return errorCode == HttpServletResponse.SC_INTERNAL_SERVER_ERROR ?
| HttpServletResponse.SC_OK : errorCode;
| }
|
|
| }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4057524#4057524
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4057524
More information about the jboss-user
mailing list