I have developed a REST service using Apache CXF and notice that if I send invalid characters in the URL, the CXF servlet throws back the following exception before it gets to my code:
Servlet failed with Exception java.lang.IllegalArgumentException at java.net.URI.create(URI.java:841) at org.apache.cxf.transport.servlet.BaseUrlHelper.getBaseURL(BaseUrlHelper.java:49) at org.apache.cxf.transport.servlet.ServletController.getBaseURL(ServletController.java:73) at org.apache.cxf.transport.servlet.ServletController.updateDestination(ServletController.java:82) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:162) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:239) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:164) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:215) This results in a 500 status code being returned to the client. I would ideally like to intercept this exception and return a 400 Bad Request status code to the client but I am unable to work out how to do this. Any help much appreciated! Many thanks
