2012-10-18 61 views
0

我是RMI和彈簧的新手,需要一點幫助才能使用我們正在實施的功能。使用RMI和彈簧從服務器彙集數據

我們正在創建與java聊天軟件,並希望與彈簧使用RMI。 我可以很容易地使用RMIServerExporter,接口等來設置客戶端服務器交互。

我可以得到我的頭的問題是客戶端需要從服務器中彙集數據。我們需要繼續檢查新消息。 由於其他原因,我們無法從服務器推送數據。

我該如何着手設置與彈簧的RMI,以便客戶端從服務器中彙集數據。我查了回調,但這涉及從服務器推!!

有沒有這樣做。讓我知道如果你需要我進一步解釋這個

+0

池或拉?我有點困惑,因爲兩者都不同。您是否需要在某處緩存郵件,或者您需要客戶按計劃自行從服務器中提取自己的郵件? – kolossus

回答

0

RMI只是一個傳輸協議用於客戶端 - 服務器通信。在客戶端,一旦您的RmiProxyFactoryBean已經在Spring容器中正確定義和初始化,那麼何時以及如何使用這個服務bean完全取決於開發人員。對於服務器池的實現,我們通常使用ScheduledThreadPoolExecutor安排RMI調用在給定的時間間隔,例如:

public class ChatClient { 
    // Defined and wired as RmiProxyFactoryBean in applicationContext.xml 
    private ChatService chatService; 

    private ScheduledExecutorService scheduleTaskService; 

    ... ... 

    // At some point during chat application running life cyle: 
    scheduleTaskService = Executors.newScheduledThreadPool(5); 

    // This schedule pooling task to run every 2 minutes: 
    scheduleTaskService.scheduleAtFixedRate(new Runnable() { 
    public void run() { 
     // Pooling server using RMI call: 
     chatService.poolingData(); 
    } 
    }, 0, 2, TimeUnit.MINUTES); 

    ... ... 

} 

對於越來越多的企業解決方案,我們通常使用Quartz,檢查出this blog post作爲一個活生生的例子。