2014-04-03 71 views
0

我對駱駝路由文件的cxf rest web服務的行爲感到困惑。我注意到控件永遠不會進入剩餘服務接口的實現類中。駱駝CXF Jaxrs服務實現類的方法未執行

以下是我對你的使用CXF JAXRS和駱駝

  1. 我已創建一個接口編寫Web服務的步驟。

    @Path("/licence") 
    public interface LicenceThresholdService { 
        @POST 
        @Consumes({MediaType.APPLICATION_JSON}) 
        @Path("/userThresholdBreached") 
        Boolean isUsersThresholdBreached(User user); 
    } 
    
  2. 實現類

    public class LicenceThresholdServiceImpl implements LicenceThresholdService { 
        @Override 
        public Boolean isUsersThresholdBreached(final OEMUser user) { 
         System.out.println("inside threshold breched method"); 
         return Boolean.FALSE; 
        } 
    } 
    
  3. 創建CXF JAXRS服務器

    <beans ... 
        xmlns:cxf="http://camel.apache.org/schema/cxf" 
        ... 
        xsi:schemaLocation=" 
        http://camel.apache.org/schema/cxf 
        http://camel.apache.org/schema/cxf/camel-cxf.xsd 
        ..."> 
        <cxf:rsServer id="userProfileService" 
         address="http://{{service.host}}:{{service.port}}/userProfile" 
         serviceClass="com.jato.esb.service.licence.LicenceThresholdServiceImpl" 
         loggingFeatureEnabled="true"> 
         <cxf:providers> 
          <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/> 
         </cxf:providers> 
        </cxf:rsServer> 
    </beans> 
    
  4. 注入了CXF rsServer豆駱駝路線終點

    <from uri="cxfrs://bean://userProfileService" /> 
    

現在我的問題是每當我打電話給這個服務的時候,控件永遠不會去isUsersThresholdBreached方法的LicenceThresholdServiceImpl類。正因爲如此,我無法充分利用cxf休息服務。

我已經嘗試過使用Mule esb和Spring應用程序文件的cxf rest服務,我已經注意到控件總是進入實現類的內部,但是這與駱駝路由不同。 我正在使用redhat fuse esb。

請幫我解決這個問題,這是我們跟駱駝一起去的嚴重問題。

回答

0

您剛剛使用的serviceClass將REST請求映射到java方法調用,調用信息將被傳遞到駱駝路由。這樣我們可以提供更通用的解決方案,您可以不需要使用ProducerTemplate將消息發送到駱駝路由。