Jersey 支持 ExceptionMappers 作为一般处理坏事的一种方式,但这仅在调用到达我的代码时才有效。如果有人喜欢这个 URL,比如说,http://host/fubar
而不是http://host/foobar
,那么它会返回一个通用的 404。
我需要获取那些经过优化的 URL 并重定向到我选择的页面,但几个小时后,我似乎无法找到正确的配置来实现这一点。我一直在浏览调试器,但我没有找到可以挂接某些配置以将此类 404 重定向到我选择的页面的位置。
编辑:请注意,任何 WebApplicationException 的自定义异常映射器都会被 Jersey(1.17.1)忽略。相反,它被路由到不同的处理方法。下面是 Jersey 的 ContainerResponse.java 的代码片段:
if (cause instanceof WebApplicationException) {
mapWebApplicationException((WebApplicationException)cause);
} else if (!mapException(cause)) { ... }
那 mapWebApplicationException((WebApplicationException)cause) 是 Jersey 自己的处理,所以它永远不会遇到调用自定义映射器的 elseif 中的 mapException(cause) 方法。