我在項目中使用apache cxf來實現Jax-rs實現。我有以下地址定義的服務: http://ip:port/myservice/ {操作}Apache CXF - 處理操作中丟失的路徑參數
考慮一個操作的定義如下
@Override
@GET
@Path("operation1/{x}/{y}")
@Produces("application/xml")
public String operation1(@PathParam("x") final String x, @PathParam("y") final String y) {
return null;
}
在請求者使得與一些操作名稱的請求的情況下這個服務器未在myservice中定義,它將返回404,這是預期的行爲。但是,在正確請求操作名稱但路徑參數不正確的情況下,我得到了相同的404。如果請求中缺少{x}或{y}路徑參數,我想創建一個適當的錯誤。但我無法找到一種優雅的方式,我可以根據操作處理異常情況。在這種情況下,CXF從不映射到操作。
我有此異常映射:
}
將處理所有的錯誤情況,但它不提供任何資料的請求在異常哪個網址。 有沒有辦法可以在不定義路徑參數的情況下爲不同的操作處理異常? 對於例如:我想處理以下請求與一些自定義邏輯僅爲operation1定義。 http://ip:port/myservice/operation1/20
我怎樣才能把過濾器放在CXF中的特定URL模式? – ishan
你可以查看這篇文章https://www.safaribooksonline.com/library/view/java-ee-7/9781449370589/ch04.html或http://www.developerscrappad.com/1781/java/java -ee/rest-jax-rs/java -ee-7-jax-rs-2-0 -cors-on-rest-how-to-make-rest-apis-accessible-from-a-different-domain/ – VladS
我看着攔截器,發現它們過於複雜。我沒有時間理解CXF中的整個攔截機制(您必須),但我仍然認爲這將是更好的方法來處理錯誤。 – ishan