多 bean 服务中一个服务 bean 的 Cxf 故障拦截器

Cxf Failure Interceptor for one service bean in multi-bean service

我在 spring 中声明了部署在同一地址的两个服务。我只想为其中一个声明故障拦截器,但是有没有一种简单的方法可以在不更改两个服务地址的情况下做到这一点?我想让他们在同一个地址。

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

您可以声明两个 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">

如果这对你来说不可能,你可以在拦截器中确定哪个是源服务 bean(分析方法名称或 uri)并触发特定的拦截器管理器