【问题标题】:Cxf Failure Interceptor for one service bean in multi-bean service多 bean 服务中一个服务 bean 的 Cxf 故障拦截器
【发布时间】:2016-06-16 14:43:53
【问题描述】:

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

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

【问题讨论】:

    标签: java spring rest jax-rs cxf


    【解决方案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">
    

    如果您无法做到,您可以在拦截器中确定哪个是源服务 bean(分析方法名称或 uri)并触发特定的拦截器管理器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多