2010-12-09 16 views
0

問題想法來定義的Java體系擺動的JavaFX/RMI/EJB3.0應用

我們參與了一個新的項目,開發與幾個PC的應用程序,將作爲通用計算機。還有一臺計算機不時地作爲主控機器來控制客戶的所有過程。那臺計算機必須通過服務器機器向所有其他機器發送消息,請求註冊協助。那時,在客戶端機器上運行的進程必須獲得對計算機的控制,並且充當運行該應用程序的從機,直到從主機發送新消息釋放它們。之後,客戶機再次作爲通用計算機。

The following scheme試圖解釋通過服務器的CM(控制機)的SM(從機)的漲幅訪問之後發生了什麼(SRVR)

  1. 控制機器CM發送消息,註冊協助服務器 2 SRVR接收消息,記錄一些信息,並廣播所述寄存器輔助消息到SMS
  2. 的運行SM過程等待消息獲得總量控制在每個SM
  3. 用戶通過一個視圖中選擇的動作SM和機器發送一個響應於
  4. 的SRVR接收響應,並將其廣播到所有的機器,包括結果機(RM)來更新所述服務器(SRVR)與新的狀態的觀點
  5. 的CM發送結束寄存器的SRVR給SRVR的消息。
  6. SRVR將消息廣播到所有SM,應用程序視圖關閉,應用程序再次進入偵聽狀態。

指出:

  • 一切都需要某種形式的Java技術
  • 所有的機器都乳寧的GNU/Linux/GNOME(Ubuntu的)做
  • JPA是強制性用於日誌記錄和持久性
  • JavaFX將根據Oracle進行更改,因爲他們正在考慮放棄腳本語言

的問題是:

  1. 您應該使用哪個組合Java技術的一種觀點?我的意見是使用Swing,並可能通過SwingComponent.wrap(loginPanel)將其嵌入到FX中,以幫助平面設計師做出更好的視覺工作(這是此應用程序中的必備工具)。請考慮綁定選項JSR-295(現在已經死了,因爲我可以看到)或一些適當的選擇。

  2. 您將如何保持更新應用程序客戶端,我的意見是通過Java Web Start並將其作爲一個小程序提供。

  3. 如果SRVR使用Java EE與EJB 3.0訪問遠程對象,可以嗎?如果是這樣,你將如何整合/模型/ EJB與RMI。我對RMI/EJB集成沒有太大的經驗,我不確定它是否正確。特別是因爲EJB規範已經信任RMI。但是,那麼如何從會話Bean(我可以看到有狀態的)廣播消息來更新視圖?

  4. 在SM中選擇的任何選項必須在所有註冊爲觀察者的視圖(其他SM,RM和CM)中查看。你會爲此建議一個模型/架構/產品嗎?

  5. 一旦SM應用程序被喚醒,哪種方法可以使SM應用程序獲得完全控制權? - 請記住,它是Linux-

  6. 觀察者模式如何應用於分佈式環境?

  7. 硬件安排是否正確適用於此應用程序?

我知道這些都是很多的問題,我不是要開始這個討論,我知道可以有很多不同的意見,我希望聽到所有的人,包括實施細則。我正在尋找來自你們的一些反饋,你的意見將受到高度讚賞。提前致謝!

回答

0

那麼這就是我解決這個問題的方法。

1.您將使用哪種Java技術組合?我的意見是使用Swing,並可能通過SwingComponent.wrap(loginPanel)將其嵌入到FX中,以幫助平面設計師做出更好的視覺工作(這是此應用程序中的必備工具)。請考慮綁定選項JSR-295(現在已經死了,因爲我可以看到)或一些適當的選擇。

在這種情況下使用Swing,需要考慮的是它是一種最穩定的技術,並且如果畢竟JavaFX將成爲一個庫,它可以在應用後給予更好的方面,現在來看使用Swing定製LAF

2.您將如何保持更新應用程序客戶端,我的意見是通過Java Web Start並將其作爲小程序提供。

這個需求是通過shell腳本和ssh完成的。在某些更新之後,客戶端應用程序被重新部署到客戶端機器上

3.如果SRVR使用JEE和EJB 3.0訪問遠程對象,那麼可以嗎?如果是這樣,你將如何整合/模型/ EJB與RMI。我對RMI/EJB集成沒有太大的經驗,我不確定它是否正確。特別是因爲EJB規範已經信任RMI。但是,那麼如何從會話Bean(我可以看到有狀態的)廣播消息來更新視圖?

RMI架構很簡單。在這種情況下,JBoss A.S.應用程序是通過rmiregistry部署在每臺客戶端機器上的RMI服務器的客戶端。當客戶端應用程序繼續時,RMI存根是服務器和客戶端之間唯一的共享類,該接口允許您調用客戶端方法。請注意使您的JPA模型類可序列化。

4.在SM中選擇的任何選項必須在所有註冊爲觀察者的視圖(其他SM,RM和CM)中查看。你會爲此建議一個模型/架構/產品嗎?

它的實現方式與前面所述的相同,但重要的一點是RMI不支持多播消息傳遞,因此如果需要與許多註冊客戶端進行消息傳遞,請小心,因爲如果您有100臺機器互相廣播消息,這意味着通過網絡發送100x100消息。

5.一旦SM應用程序被喚醒後,哪種方法可以使SM應用程序獲得完全控制權?請注意,這是Linux-

那麼,Java Swing的JFrame有一種方法來維護窗口ALWAYS_ON_TOP。如果將其與UNDECORATED_FRAME結合使用,其他應用程序將繼續運行,但它們永遠不會實現焦點。

6.如何將觀察者模式應用於分佈式環境?

它以相同的方式應用,我們只需要注意何時註冊觀察者以及何時註銷它們。

7.硬件安排是否適用於此應用程序?

硬件安排按照問題中包含的圖形顯示的方式部署。

感謝所有那至少檢查了問題。