多bean服务中一个服务bean的Cxf Failure Interceptor

时间:2016-06-16 14:43:53

标签: java spring rest jax-rs cxf

我在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>

1 个答案:

答案 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)并激活特定的拦截器管理器