2016-06-16 65 views
0

我在spring中聲明瞭兩個部署在同一個地址上的服務。我只想爲其中的一個聲明失敗攔截器,但有沒有簡單的方法可以在不改變兩個服務的地址的情況下執行此操作?我想讓他們在同一個地址。Cxf多bean服務中一個服務bean的失敗攔截器

<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

你可以聲明兩個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"> 

如果這是不可能給你,你可以d在作爲源服務bean的攔截器(分析方法名稱或uri)中確定並且觸發特定攔截器管理器