JAX-RS中的跨领域问题

mck*_*mey 5 java security jax-rs cross-cutting-concerns

我正在寻找JAX-RS(JSR-311)中的机制,以便我能够提炼出一些我的应用程序特有的横切关注点.例如,我的应用程序具有为每个请求查找或构建的特定上下文.我希望能够在集中的位置执行这种类型的逻辑,然后以某种方式附加到上下文,以供各种资源用于请求的其余部分.如果我只对一些URL子集执行这些类型的操作会更好.

JAX-RS为路径段,cookie,标题等提供的默认注入是很好的但是那些部分的自定义解释呢?我真的不想每次需要时都要构建它.我宁愿有办法指定它是如何构建的,然后只是将上下文组件作为资源方法的一部分注入.

有没有这样的钩子?我可以操纵提供者模型来执行此操作吗?顺便说一句,我希望尽可能长时间保持与实现无关(Jersey,RESTEasy等).

提前感谢您的任何见解.

mck*_*mey 0

在某种奇怪的扭曲中,标准以一种奇妙的可组合方式协同工作(JAX-RS 和 CDI),IBM 编写了一个教程,可以涵盖我的具体问题。作为有关组合 CDI 和 JAX-RS 的大型教程的一部分,本文专门讨论使用 CDI(Java 上下文和依赖注入)装饰器和方法拦截器来实现 JAX-RS 资源中的横切关注点:

更新:我刚刚能够让它在GlassFish 3.1中工作。关键(我发现的所有示例都没有显示)是您必须确保 CDI 管理资源实例的生命周期(以便它可以用拦截器包装)。实例化自己然后在 Application.getSingletons() 方法中返回是行不通的

我要回去看看是否也能把它带到码头。

更新 2: Jetty(以及可能任何其他非 J2EE servlet 容器,如 Tomcat)使用 CDI 进行设置有点痛苦。我认为 GlassFish 的集成要容易得多。下面是一篇博客,概述了 Jetty 所需的一些步骤: