首先是什么 - InjectableProvider(s)或ExceptionMapper(s)?

时间:2012-05-21 09:01:50

标签: java jersey jax-rs

我还没有找到上述问题的答案。我如何从InjectableProvider抛出异常,并在ExceptionMapper 中获取,以便提供自定义响应?

1 个答案:

答案 0 :(得分:1)

Alex Pavel

我自己尝试过:

  • Joda DateTime注射剂提供者:PerRequestTypeInjectableProvider<PathParam, DateTime>
  • 一个映射器,它将异常转换为可以客户端接受的格式(XML,JSON等)序列化的对象:ExceptionMapper<WebApplicationException>

根据我的实验,似乎WebApplicationException 中抛出的任何InjectableProvider都会绕过异常映射器,因此格式不正确。

我也尝试过:

  • 添加ExceptionMapper<ParamException>
  • 重命名类,希望这些类的连接顺序遵循字母顺序,

但到目前为止没有运气。

@ Pavel /来自泽西岛的任何人:欢迎任何建议!

谢谢,

马克。


<强>更新

如果您将InjectableProvider中的逻辑包裹在try / catch块中,那么在catch块中,诀窍是:

  1. 创建可序列化的POJO /您的自定义响应,
  2. 将其包装为具有相应状态代码和/或媒体类型的javax.ws.rs.core.Response
  3. 将其作为实体参数传递给WebApplicationException
  4. @ Pavel /来自泽西岛的任何人:任何可以避免这种额外逻辑并让事情“正常”的替代方案?