2012-11-20 125 views
3

我工作的一個Swing GUI應用程序的遠程數據庫服務器的客戶端應用程序通信是除其他事項外,作爲一個數據庫客戶端讀取和寫入到MySQL數據庫。 目前我使用JDBC實現了與數據庫的交互(按照此處的指示:http://www.kitebird.com/articles/jdbc.html),它通過指定顯式數據庫主機名(IP地址)直接連接到數據庫。與Java在互聯網上

只要我在作爲組織本地網絡一部分的PC上運行GUI客戶端應用程序,因此我可以通過指定部署在其上的計算機的IP地址來訪問MySQL數據庫。

但是我不知道什麼是實現與數據庫的交互,如果GUI客戶端應用程序是這樣的組織網絡之外的計算機上運行的正確方法(通信在互聯網上)?

我能想到的兩種方法是:

  1. 配置數據庫服務器是通過互聯網使用MySQL的默認端口(3306)上,然後我就可以繼續連接到通過指定數據庫服務器的IP地址,從GUI客戶端應用程序獲取數據庫。

  2. 創建一個Web服務(基於可能REST API),將數據庫服務器的機器上運行,並作爲GUI客戶端和MySQL數據庫之間的中間人。

我懷疑正確的做法是第二個選項,使用web服務,但我沒有在執行任何的經驗。

所以我的底線的問題是:

什麼是實現與數據庫在互聯網通信的正確方法,如果涉及到使用Web服務,我應該在哪裏開始呢?什麼是用於實現這些事情的通用庫或框架?

非常感謝的人誰有耐心看完這一切。

+1

最好的辦法是在數據庫所在的同一本地網絡上運行REST服務。 –

+0

[here](http://stackoverflow.com/questions/9065125/how-to-access-a-remote-mysql-database-using-java)你會找到一些關於哪一個最好的答案。 – Vinay

+0

謝謝你倆的評論。維尼感謝您的鏈接,我會從那裏學習材料。 – Rony

回答

0

聽起來像是一個很大的任務,我不確定是否有任何簡單的答案。你當然應該而不是暴露連接到您的數據庫到互聯網,因爲這將是潛在的攻擊者的強大載體。

Web服務將是一個非常好的解決方案。 RESTful web服務的Java標準是 JCR(JSR-170),其參考實現是Apache Jackrabbit(http://jackrabbit.apache.org/)。它非常容易設置,並有各種選項來保證這種服務。

編輯:沒問題!我的意思是JAX-RS和Jersey(http://jersey.java.net/)。抱歉!

+0

非常感謝您的回答。我會考慮澤西島。 – Rony

0

最簡單的解決辦法是建立一個VPN允許遠程客戶端連接到同一個數據庫。這需要考慮安全性和基礎設施方面的考慮因素,並且不需要更改應用程序。

的基於服務的方法是第二喜歡的 - 它是應用程序的一個根本上重新建造,通常帶來了很多棘手的性能和可擴展性的問題。我建議閱讀Martin Fowler的企業集成模式以獲得推薦 - 這是一個更爲複雜的問題,您可以期望回答這個問題。

不要打開你的MySQL數據庫到更廣泛的互聯網 - 安全風險太大了。

+0

非常感謝您的回答。直到現在我還沒有想到VPN。肯定會研究這個選項。 – Rony