我正在使用Jersey,而Guice是我的IOC容器。我想知道是否可以将ExceptionMapper与特定URI相关联。这样做的原因是我想根据访问的URI来不同地映射相同的异常。例如,假设我的自定义异常有以下两个异常映射器:
public class MyExceptionMapperForFirstURI implements
ExceptionMapper<MyException> {..return response based on first URI..}
public class MyExceptionMapperForSecondURI implements
ExceptionMapper<MyException> {..return response based on second URI..}
据我所知,你可以在ServletModule中绑定一个ExceptionMapper,如下所示:
public class MyModule extends ServletModule {
@Override
public void configureServlets() {
super.configureServlets();
bind(MyCustomExceptionMapper.class);
}
}
如何绑定MyExceptionMapperForFirstURI
和MyExceptionMapperForSecondURI
以便它们与正确的URI相关联。这是可能的,如果可能的话:这是正确的方法吗?
答案 0 :(得分:4)
这是很晚的答案;-)但你可以随时注入UriInfo和分支。所以,
@Context
UriInfo uriInfo;
.....
if (matchesA(uriInfo.getAbsolutePath())) {
// do something
}
答案 1 :(得分:3)
不确定你的应用程序的URI是什么样的,但是如果可以将你的应用程序分成两个servlet或过滤器,那么你可以这样做 - 即有一个servlet /过滤器提供一组资源并包括第一个映射器,让另一个servlet / filter服务于另一组资源,并包含另一个映射器。
如果这些是自定义异常,您还可以将Request作为参数传递给异常并且只有一个映射器 - 根据映射器中的请求uri确定响应。