我正在使用 Apache CXF JAX-RS v(2.30) 实现 REST API 服务器。我使用弹簧作为容器。我正在考虑利用org.apache.cxf.jaxrs.ext.RequestHandler
实现一些功能,如许可证检查、身份验证、授权(所有这些都有自定义代码)。我的想法是将此代码隔离在各个实现类(实现RequestHandler
)中,并将其配置为基本 REST url 之类的/rest/*
。作为 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
s 和ResponseHandler
s 的调用顺序。
提前致谢。