2010-05-06 50 views
8

我做了一個Java Swing應用程序。現在我想讓它成爲一個客戶端 - 服務器應用程序。當服務器上的數據發生更改時,應通知所有客戶端,所以我不尋找Web服務。客戶端 - 服務器應用程序將在單個局域網上運行,這是一個商業應用程序。服務器將包含一個數據庫JavaDB。如何使我的Java Swing應用程序成爲客戶端 - 服務器應用程序?

什麼技術和圖書館最容易入門?我應該使用Sockets從頭開始實現它,還是應該使用Java RMI或JMS?還是有其他更容易開始的替代方案?

有沒有我應該使用的任何服務器庫? Jetty是另一種選擇嗎?

回答

2

Mina是一個很好的選擇作爲一個網絡應用程序框架,爲此構建一個簡單的服務器 - 這是一個比使用原始套接字更好的選擇。

http://mina.apache.org/

如果你真的需要一個應用程序服務器,那麼你可能需要看看JBoss的。它還提供了一個遠程組件(作爲替代像米娜):

http://www.jboss.org/jbossremoting

你可能不會有企業Java Bean儘管有很多的需求。在大多數情況下,簡單POJO基礎框架是綽綽有餘了 - 你可以完全使用依賴注入框架如吉斯配合這樣的:

http://code.google.com/p/google-guice/

春季。保持簡單,除非真的需要,否則不要使用J2EE服務器。希望有所幫助。

2

這是很多東西,J2EE做,但它是一個全新的學習曲線,因爲他們已經預先解決了許多你會遇到的問題和許多你可能不會因此增加了很多新技術。

但最基本的是,J2EE只是回答這個問題。

+0

我明白了,我以前從未使用過J2EE。但我認爲現在是時候去做了;)謝謝。如果沒有任何輕量級解決方案。 – Jonas 2010-05-06 19:37:00

+0

有許多輕量級的解決方案,但是您會遇到並解決J2EE已經遇到並解決的許多問題。我建議至少閱讀一下免費的J2EE框架,以便了解所有功能 - 這樣您可能會注意到可能遇到的問題,您可能會遇到它們可能已經解決的問題。如果您確實仍然感到安全,請使用RMI。 J2EE提供了(幾乎免費的)冗餘服務器和故障轉移功能,保證消息傳遞以及其他可能很難獲得的內容,如果您稍後決定需要它。 – 2010-05-06 19:52:58

+0

Java EE的問題在於,除了解決您遇到的問題之外,它還解決了許多您尚未解決的問題,但卻使您接受了這些問題。 – Ryan 2012-06-01 15:53:01

1

我在這樣的項目中工作過。我們用J2EE實現了客戶端Swing和Server端。我們使用了EJB,無狀態bean和消息驅動Bean。我也一直在設備跟蹤,管理項目中。我們的客戶是卡車+ Swing用戶,我們使用Servets + TCP/UDP,Apache Mina框架來處理和保持連接。

3

鑑於您已經擁有應用程序,最簡單的方法是確定客戶端和服務器之間所需的接口,首先重構應用程序以使用該接口在後端服務器之間進行通信,前端/前端在同一進程內

然後你就可以開始拆分這家公寓。一個簡單的解決方案是使用RMI分離它(因爲你正在談論Java對象並且有Java方法調用)。 Spring包含有用的工具來簡化/自動化接口的RMI暴露。

對於通知要求,簡單的UDP多播(或廣播)就足夠了。

請注意,只要您將應用程序分開,您就有問題了。維護數據的一致視圖,及時管理更新,處理服務器宕機時的情況,當你得到很多客戶端時可能加載問題等等。從某種意義上說,將應用程序分成客戶端和服務器只是新架構的開始處理。

0

我一直在Java Swing Client/Server應用程序工作近3年。我建議你去找RMI/EJB。我們開發的最初應用是使用RMI/EJB進行客戶端 - 服務器通信,並將WebLogic作爲服務器。

但是我們後來發現應用程序中會包含很多類似於瀏覽器的功能,例如會話超時等。因此,我們使用了通過HTTP封裝RMI調用的BrightSide框架。我們做的另一件事是我們用開源的JBoss服務器取代了Weblogic。

使用HTTP打包呼叫將變得非常方便,您可以使您的揮杆應用程序真正豐富。之後,當情況要求您嚴格使用網站時,您可以使用jnlp部署您的揮杆。

希望這有助於。

+0

但使用HTTP,我不能推出通知!? – Jonas 2010-05-06 21:21:43

相關問題