2013-02-28 85 views
1

我在使用WebClient類(org.apache.cxf.jaxrs.client.WebClient)時使攔截器觸發時出現問題。在我調用RESTful服務的方法中,我添加了一個攔截器在out階段執行。我有意提供了無效的屬性,所以我可以看到攔截器失敗,但該方法成功完成。使JAX RS CXF攔截器與WebClient配合使用

這裏是我一起工作的代碼:

private String callService2(String webServiceUrl) { 

    JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean(); 
    bean.setAddress(webServiceUrl); 

    // setup properties 
    Map<String, Object> properties = new HashMap<String, Object>(); 

    properties.put("ws-security.signature.username", "client"); 
    properties.put("ws-security.signature.properties", 
        "client_nonexistantfile.properties"); 

    bean.setProperties(properties); 

    XmlSigOutInterceptor sigInterceptor = new XmlSigOutInterceptor(); 
    bean.getOutInterceptors().add(sigInterceptor); 

    // use WebClient (or proxy) as usual 
    WebClient wc = bean.createWebClient(); 
    TestInfoResponse response = wc.accept("application/xml").get(TestInfoResponse.class); 
    return response.getContents(); 
} 

我期待的XmlSigOutInterceptor邏輯失敗,因爲屬性文件不存在,但該方法成功完成。我在加入XmlSigOutInterceptor時做錯了什麼。

在此先感謝。

回答

0

這是我的不好。因爲沒有要簽名的文檔,因此執行get操作時XmlSigOutInterceptor不需要執行任何操作。所以攔截彈開始發射,它立即返回。

對不起。