2013-12-20 1 views
2

Я создаю 2 контейнера REST, используя. Я хочу сохранить некоторые распространенные вещи, такие как поставщики JSON, проверку перехватчика, обработку исключений с использованием шины cxf. ниже мой контекст приложения.«org.apache.cxf.jaxrs.bus.providers» не работает

<cxf:bus> 
    <cxf:properties> 
     <entry key="org.apache.cxf.jaxrs.provider" key-ref="busProviders"/> 
    </cxf:properties> 
</cxf:bus> 

    <util:list id="busProviders"> 
    <ref bean="requestInterceptor"/> 
    <ref bean="jsonProvider"/> 
    <ref bean="exceptionHandler"/> 
    </util:list> 

<bean id="requestInterceptor" class="com.sample.interceptor.ServiceValidationInterceptor"/> 
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" /> 
<bean id="exceptionHandler" class="com.sample.exception.ExceptionHandler" /> 

<!-- ======================== REST Container for Service1 ======================================= --> 
<jaxrs:server id="restContainer" address="/service1"> 
     <jaxrs:serviceBeans> 
      <ref bean="endecaService"/> 
     </jaxrs:serviceBeans> 
     <jaxrs:inInterceptors> 
      <ref bean="logInbound"/> 
      <bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpInInterceptor"> 
      <property name="callbackParam" value="callback"/> 
      </bean> 
     </jaxrs:inInterceptors> 
     <jaxrs:outInterceptors> 
      <ref bean="logOutbound"/> 
      <bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpPreStreamInterceptor"> 
      <property name="mediaType" value="application/json"/> 
      </bean> 
      <bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpPostStreamInterceptor"> 
      <property name="paddingEnd" value=")"/> 
      </bean> 
     </jaxrs:outInterceptors> 
    </jaxrs:server> 

    <!-- ======================== REST Container for Service2========================================== --> 
<jaxrs:server id="restContainerForHelpcenter" address="/service2"> 
    <jaxrs:serviceBeans> 
     <ref bean="helpCenter"/> 
    </jaxrs:serviceBeans> 
     <jaxrs:inInterceptors> 
      <ref bean="logInbound"/> 
      <bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpInInterceptor"> 
      <property name="callbackParam" value="callback"/> 
      </bean> 
     </jaxrs:inInterceptors> 
     <jaxrs:outInterceptors> 
      <ref bean="logOutbound"/> 
      <bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpPreStreamInterceptor"> 
      <property name="mediaType" value="application/json"/> 
      </bean> 
      <bean class="org.apache.cxf.jaxrs.provider.jsonp.JsonpPostStreamInterceptor"> 
      <property name="paddingEnd" value=")"/> 
      </bean> 
     </jaxrs:outInterceptors> 
    </jaxrs:server> 

Если я объединить выше 2 в один с 2-сервисной фасолью, то она отлично работает, но не в этом случае. Кто-нибудь использовал функцию cxf: bus для двух разных контейнеров REST, пожалуйста, дайте мне знать.

ответ

0

Уведомление s в конце имени свойства org.apache.cxf.jaxrs.bus.provider s