Jersey JAX-RS中特定于URI的异常标记

Jersey JAX-RS中特定于URI的异常标记,jersey,jax-rs,guice,Jersey,Jax Rs,Guice,我使用Jersey和Guice作为IOC容器。我想知道是否可以将ExceptionMapper与特定URI相关联。这样做的原因是,我希望根据访问的URI对同一异常进行不同的映射。例如,假设我的自定义异常有以下两个异常映射器: public class MyExceptionMapperForFirstURI implements ExceptionMapper<MyException> {..return response based on first URI..} publi

我使用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..}

如何绑定
MyExceptionMapperForFirstURI
MyExceptionMapperForSecondURI
,以便它们与正确的URI关联。这可能吗?如果可能的话:这是正确的方法吗?

不确定应用程序的URI是什么样子,但如果可以将应用程序拆分为两个servlet或筛选器,然后您可以这样做-即,让一个servlet/过滤器服务于一组资源并包含第一个映射器,让另一个servlet/过滤器服务于另一组资源并包含另一个映射器


如果这些是自定义异常,您也可以将请求作为参数传递给异常,并且只有一个映射器-根据映射器中的请求uri决定响应。

这是一个很晚的答案;-)但是你总是可以在上面注入UriInfo和分支。所以

@Context
UriInfo uriInfo;


谢谢你的回复。问题是我没有任何servlet,因为我使用Jersey来服务我的资源。我使用了
UriInfo
(注入了
@Context
)来确定最后如何构建准确的错误响应。Jip,这就是我最后所做的(请参阅我对下面答案的评论)。我会将此标记为正确答案,以便为其他人突出显示。您将此代码放在哪里?在
例外标记中
?Jip。现在有一个
exceptionapper
子类可以访问上面提到的
UriInfo
,我使用它来进行分支。
@Context
UriInfo uriInfo;
if (matchesA(uriInfo.getAbsolutePath())) {
    // do something
}