我在Spring 2中声明了部署在同一地址的服务。我想只为其中一个声明失败拦截器,但有没有一个简单的方法可以做到这一点,而无需更改两个服务的地址?我想把它们放在同一个地址上。
<jaxrs:server id="service" address="http://0.0.0.0:${service.port:7070}/">
<jaxrs:serviceBeans>
<ref bean="firstService"/>
<ref bean="secondService"/>
</jaxrs:serviceBeans>
<jaxrs:outInterceptors>
<ref bean="failureInterceptor" />
</jaxrs:outInterceptors>
<jaxrs:features>
<cxf:logging/>
<ref bean="commonValidationFeature"/>
</jaxrs:features>
<jaxrs:providers>
<ref bean="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
答案 0 :(得分:1)
你可以声明两个jax-rs服务器,如果你能稍微调整服务的相对路径,每个服务器都有自己的拦截器
例如,您可以同等地使用
<jaxrs:server id="ServiceAImpl" address="/test/a">
<jaxrs:server id="ServiceBImpl" address="/test/b">
<jaxrs:server id="serviceImpl" address="/test">
<jaxrs:serviceBeans>
<ref bean="serviceABean"/> <!-- /test/a service -->
<ref bean="serviceBBean"/> <!-- /test/b service -->
但不允许
<jaxrs:server id="ServiceAImpl" address="/test">
<jaxrs:server id="ServiceBImpl" address="/test">
如果你不可能,你可以在interceptor确定哪个是源服务bean(分析方法名称或uri)并激活特定的拦截器管理器