2011-06-02 232 views
0

我正在開發一個連接到mysql數據庫的java applet,該applet可以在本地主機上正常工作,但是當我上傳它並嘗試運行時,我收到錯誤信息爲「通信鏈接失敗包成功發送到服務器爲0毫秒前。 驅動程序沒有收到從我試圖在x10hosting和主存的服務器」 任何數據包,如果有人知道的解決方案,請幫我...Applet無法連接到mysql服務器

回答

0

的小程序客戶端。如果你想直接連接到一個mysql服務器,這意味着每個打開該applet的用戶都應該安裝mysql或者具有對遠程數據庫的訪問權限和憑證。即使您的防火牆允許訪問,這也是一個非常糟糕的主意。如果你確實每個人都可以訪問你的數據庫。

因此,如果您想與遠程數據庫進行通信,請使用某些協議(http最簡單,通過Servlet)將請求發送到服務器並接收基於數據庫結果生成的響應。例如,調用http://yoursite.com/addRecord?name=foo&[email protected]可能會告訴服務器端應用程序打開到mysql的(本地)連接並插入記錄。

+0

是的,我想與遠程數據庫進行通信,但請你詳細說明如何做到這一點,因爲我是一個新手:( – Vipul 2011-06-02 08:36:13

+0

*「...意味着每個打開小程序的用戶都應該安裝mysql。」*爲什麼?你可以使用applet的庫來分發Connector/J,我並不是說這是一個*遠程*好主意,但用戶不需要安裝MySQL。 – 2011-06-02 08:36:27

+0

是的,我已經在我的applet庫中添加了Connector/J 。但是當我運行該程序,當它試圖連接到數據庫時,它給了我指定的錯誤 – Vipul 2011-06-02 08:37:36

1

你確定你的MySQL服務器端口真的對公衆開放嗎?例如,在可公開路由的IP地址上,不會被路由器/網絡阻止?很可能你的MySQL實例不能從外部訪問......

......這是怎麼回事。非常,非常非常適合有一個小程序直接與您的數據庫服務器對話。通常情況下,小程序會與Web服務器上的中間層進行通信,然後再與數據庫服務器通信。這有一個安全方面(你的中間層可以抵禦對你的數據庫的各種攻擊),並且有一個實用性的方面:你可能希望保持公共網絡上的聊天最少,並且你的服務器可以捲起來將多個操作的結果合併成一個包,然後發送給客戶端。

如果你的MySQL服務器確實可用於外部世界,它的主機是否與該applet加載的主機相同?這是(未簽名的)小程序的安全要求之一,它們只能打開與加載的主機的網絡連接。但是,如果這是問題,我會希望你得到一個安全異常(除非Connector/J隱藏它)。

+0

好吧,這可能是問題,但可以請詳細說明如何將我的數據庫連接到我的小程序... – Vipul 2011-06-02 08:41:58

+0

@Vipul:環顧Web應用程序體系結構示例。 Web應用程序是三層或n層體系結構的經典示例。客戶端項目(網頁,小應用程序)與您的Web服務器交談,該服務器與您的數據庫進行交談。你的數據庫不應該直接從外部訪問。 – 2011-06-02 08:43:44