2012-03-14 49 views
2

我對從Domino服務器端操作每30秒輪詢一次外部Web服務提出了一些建議。30秒週期性任務,用於輪詢外部Web服務和緩存數據

背景的快一點......

我們跟蹤汽車的直通TomTom的API的位置。我們現在有要求在我們的網絡應用程序中顯示此信息,並將其覆蓋到地圖上(谷歌,bing等),並與我們的應用程序中的其他數據混合在一起。把它看作是派遣出租車的電話,我們想把這些電話分配給出租車(......它不是出租車\電話,但它是類似的過程)。我們相當積極地刷新調度控制器屏幕,以便他們可以查看所有對象的狀態並將其分配給最近的車輛。如果我們觸發用戶屏幕刷新中的數據拉取,我們會進入一些棘手的控制服務器端,否則我們會每分鐘向TomTom API發出最大允許請求數。

本來我打算安排一個代理來輪詢Web服務,寫入我們的應用程序中的緩存對象,刷新調度控制器屏幕從我們的緩存中提取數據....很好,除了用戶要求是我們的緩存必須每30秒更新一次。我可以創建一個每1分鐘運行一次的程序文檔,但仍然不夠積極。

所以我們目前只剩下:我們的.NET傢伙會創建一個民意調查的TomTom每30secs,我們從他的服務檢索服務,或我想出一個辦法,在Domino中的事。在Domino數據庫中執行這些操作是非常好的,而不是一些獨立的java應用程序或.net,以便在一個系統(Domino)中保留儘可能多的邏輯。

我們在系統中大量使用備份bean。我會在這以後的今天,我希望測試,但這樣做似乎是一個明智的路線走下來..? Spawning threads in a JSF managed bean for scheduled tasks using a timer ...或者是他們的侷限性,我不知道,有沒有人在之前的Domino該解決或有任何意見?

由於提前,

尼克

回答

0

如果你在一個bean(應用程序或會話範圍的)緩存數據。有一個包含上次刷新日期的日期對象。當請求數據時,請根據當前時間檢查上次緩存日期。如果超過/等於30秒,請刷新數據。

0

這樣做是寫它在應用程序範圍內創建一個託管bean的方法(也就是隻能有一個..)。在這種管理豆你照管好老的Java Web服務實現和Java線程的web服務的30秒輪詢,你開始在像

public class ServicePoller{ 
    private static myThread = null; 

public ServicePoller(){ 
    if(myThread == null){ 
    myThread = new ServicePollThread(); 
(new Thread(myThread)).start()); 

} 
    } 


} 

class ServicePollThread implements Runnable(){ 

    private hashMap yourcache = null; 

    public ServicePollThread(){ 

    } 


    public void run(){ 
    while(running){ 
     doPoll(); 
     Thread.sleep(4000); 
    } 
    } 
    .... 
} 

這種管理則bean將輪詢創造託管豆什麼的每30秒一次web服務並將其結果保存在散列圖或其他一些託管bean類中。這樣你就不需要運行代理或類似的東西,並且當你使用調度屏幕從緩存中檢索數據時,你就可以實現這一點。

另一種選擇是寫它執行線程和閱讀服務,爲您的小服務程序(這將是可能與EXTLIB,但我現在不能找到所需的信息)。然後在你的數據庫中,你應該能夠讀取servlet的緩存並在需要的地方使用它。

8

退房DOTS(多米諾OSGi的微進程服務):http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OSGI%20Tasklet%20Service%20for%20IBM%20Lotus%20Domino

它可以讓你與沒有性能的定義Domino服務器上有代理商的所有優點(可以預定或觸發)java後臺任務或維護問題。

+0

Tim,Niklas,Tommy, – 2012-03-15 08:55:34

+0

Tim,@Niklas,Tommy,非常感謝您的回覆,也感謝jjtbsomhorst。 3個Domino \ Xpages最大的打擊者回答我的問題......幾乎可以保證建議是一流的。現在你已經給了我解決方案,我會在一週左右的時間內回覆,並告訴你如何去做。再次感謝。 – 2012-03-15 09:07:42