【问题标题】:Order of execution of RequestHandlers configured in Apache CXF and JAX-RSApache CXF 和 JAX-RS 中配置的 RequestHandler 的执行顺序
【发布时间】:2012-06-19 00:33:16
【问题描述】:

我正在使用 Apache CXF JAX-RS v(2.30) 实现 REST API 服务器。我正在使用弹簧作为容器。我正在考虑使用org.apache.cxf.jaxrs.ext.RequestHandler 来实现一些功能,如许可证检查、身份验证、授权(所有这些都有自定义代码)。我的想法是将此代码隔离在各个实现类中(实现RequestHandler)并将其配置为类似/rest/* 的基本REST url。作为 Apache CXF 和 JAX-RS 的新手,我想了解以下内容。

  • 这种方法是实现我想要的功能的正确方法吗?
  • 如果是,那么声明RequestHandlers 的顺序就是它们的调用顺序吗?

例如,如果在我的定义中我声明:

<beans>
<jaxrs:server id="abcRestService" address="/rest">
    <jaxrs:serviceBeans>
      <bean class="com.abc.api.rest.service.FooService" />
    </jaxrs:serviceBeans>

    <jaxrs:providers>
      <ref bean="licenseFilter" />
      <ref bean="authorizationFilter" />
    </jaxrs:providers>

</jaxrs:server>

    <bean id="licenseFilter" class="com.abc.api.rest.providers.LicenseValidator">
        <!-- License check bean properties -->
    </bean>

    <bean id="authorizationFilter" class="com.abc.api.rest.providers.AuthorizationFilter">
        <!-- authorization bean properties -->
    </bean>
</beans>

那么licenseFilter总是会在authorizationFilter之前被调用吗?

我没有找到提到 RequestHandlers 和 ResponseHandlers 的调用顺序。

提前致谢。

【问题讨论】:

    标签: rest cxf jax-rs


    【解决方案1】:

    想通了。

    它按照&lt;jaxrs:providers&gt; 中bean 的声明顺序被调用。因此,在上述情况下,licenseFilter 将在 authorizationFilter 之前被调用。

    【讨论】:

    • 你有说明/定义的来源吗?
    • 没有。我根据我的测试推断出这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2014-03-10
    相关资源
    最近更新 更多