2012-03-14 75 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