2012-06-20 58 views
1

我們有一個應用服務器,它公開了大量的web服務。我們在使用JSF應用程序中的這些Web服務來提供用戶界面的同時運行一個tomcat。假設我們有一個bean,它有一個方法「getWebservice()」,它返回jaxws用來和webservice通信的代理類。這使我們能夠用最小的努力web服務交互:使用wsimport的生成,然後用#{} myBean.webservice.myProperty等JSF中的JAXWS緩存

但是你可以看到重用公開的方法時,這將需要Web服務交互的很多 。在我們的用例中,大多數方法都是靜態的,至少在@RequestScoped bean期間是這樣的,所以大多數方法的交互應該被調用(至少對於一個請求)。

目前我們的設置是在bean創建包裝服務,每個包裝不完全一樣的東西:

if (methodResponse == null) 
    methodResponse = getWebservice().getMethod(); 
return methodResponse; 

你可以看到,這會非常無聊非常快。有沒有一種方法來註釋緩存的jaxws方法?或者我可以根據接口生成自己的代理類,並以某種方式將它「鏈接」到jaxws使用的代理(並執行泛型緩存),或者我可以創建自己的執行緩存的註釋嗎?

回答

1

您可以創建另一個緩存Proxy在你Web服務客戶端代理對象,併爲它提供InvocationHandler,即緩存方法調用的結果。

檢出this blog post查看完整的步驟指令和下載示例代碼。

+0

我還沒有時間根據教程實際創建一個代理,但我已經掃描了這篇文章,它似乎正是我所需要的。謝謝! – nablex