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個服務bean的單個,那麼它工作正常,但在這種情況下不能。 有沒有人爲2個不同的REST容器使用了cxf:bus功能,請讓我知道。