2011-03-21 38 views
1

我正在處理一個需要調用「身份驗證」方法的Web服務,並將返回的令牌放置在特殊頭文件中,以便每次執行下一個操作。嘗試在CXF攔截器中執行此操作似乎很合理。我會看到它工作爲CXF客戶端攔截器總是首先調用另一個方法?

注入業務邏輯對象的CXF客戶端對象。業務邏輯對象調用操作A.攔截器確定操作B需要先被調用並調用操作B,然後將標題添加到原始調用A然後它是傳出。

很明顯,這可能是自動或潛在遞歸地做到這一點(如果攔截器知道對Op B的調用通過)。我想避免的一個難看的,駭人的方式是讓攔截器對服務有循環依賴。我也想避免這種醜陋的方式,基本上站起來兩個客戶對象,並且有一個攔截而另一個不是。似乎應該有一些方法來做到這一點,事實上我知道Service類有一個方法調度程序,但我不知道如何調用將導致傳出調用的操作。

回答

0

我意識到這是一個非常古老的問題,@jcalvert早已到達解決方案或其他職業。

第一次臉紅,我懷疑在攔截器鏈中執行I/O的智慧,其中在失敗時傳播有意義的信息可能是一個挑戰,而不必介意在每次操作時都需要重新驗證的低效率。

是的,可以創建一個狀態完全攔截​​器來維護實際上是一個會話令牌,但客戶端必須有一個「註銷」操作來處理關聯。

我的第一個建議是處理應用層的情況:改變客戶端的接口,使得每個操作都需要授權令牌。如果不存在,則Web服務獲取一個並在所有操作中返回它。