在Apache CXF和JAX-RS中配置的RequestHandler的执行顺序

时间:2012-06-15 22:55:11

标签: rest cxf jax-rs

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

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

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

<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 始终

我没有发现RequestHandler以及ResponseHandler s的调用顺序。

提前致谢。

1 个答案:

答案 0 :(得分:2)

想出来了。

它按照<jaxrs:providers>中声明bean的顺序调用。因此,如果提到有问题,将在authorizationFilter之前调用licenseFilter。