2012-03-03 94 views
0

因此,我編寫了一個JApplet,它連接到MySQL服務器並執行一些操作。 當我在Eclipse中測試它時,它工作得很好。我有IP地址,數據庫名稱,我正在使用的用戶名(root)以及此時硬編碼到程序中的密碼。 如果我有IP作爲本地主機,或127.0.0.1(同樣的事情,但是)或192.168.x.x(我的電腦的本地地址),JApplet從Eclipse運行時將連接到MySQL服務器沒有問題。另外,如果我打開另一個終端並以這種方式登錄到mysql,它也可以工作。但是,如果我使用Eclipse對項目進行jar打包,請將mysql驅動程序包含在HTML applet標記中,並通過同一臺計算機上的Web瀏覽器運行它,但它不起作用。JApplet通過Eclipse連接到localhost Mysql,但不通過web瀏覽器

這裏是我使用的HTML標籤:

<applet code="mysqlApp.MysqlInterface.class" 
    archive="LoginDemo.jar, mysql-connector-java-5.1.18-bin.jar" 
    height="150" width="450"> 
    Your browser does not support the <code>applet</code> tag. 
</applet> 

我與我的路由器和我的軟件防火牆的轉發端口3306試圖在Firefox 10 *關閉。此外,MySQL服務器綁定到0.0.0.0(它接受所有接口上的連接嘗試)並啓用TCP/IP(不使用跳過網絡選項)。我得到一個消息對話框說沒有SQL連接可以(我編程,它做的事),我得到的Java控制檯以下異常:

SQLException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver 
has not received any packets from the server. 
SQLState: 08S01 
VendorError: 0 

我也試圖在互聯網的最新版本Explorer for Windows 7 x64,當我點擊應該連接到服務器的按鈕時,網頁會凍結。

沒有打印出到mysqld正在運行

沒有任何人有任何想法(我用的mysqld --console運行它與管理員終端)控制檯?我一直在尋找一個解決方案,但是我發現,似乎可能有效的一個或兩個小細節使其不適用於我的問題。

是的,我知道如果這是用於生產代碼(主要安全問題),我不應該讓小程序直接與數據庫通信,但我正處於這樣做的早期階段,並且試圖這出於測試目的。

謝謝。

+0

小程序是否數字簽名?是否有任何異常在代碼中被捕獲並被忽略?順便說一句 - 一個applet不應該直接訪問數據庫。 – 2012-03-03 22:22:32

+0

沒有小應用程序沒有數字簽名,但是我在讀取權限時遇到了java.security問題,並且我編輯了本地java.policy文件以解決問題。我試圖找出如何簽署它來解決這個問題,雖然我發現jarsigner應用程序,我無法弄清楚如何創建一個密鑰庫等使用它。不,我認爲我沒有忽視任何例外。是的,我知道這個applet應該和PHP或其他東西進行交流,不過我現在剛剛處於測試階段。謝謝 – JavaNovice14085 2012-03-03 23:33:02

+0

嗯,我轉發了我的路由器上的端口3306,關閉了我的軟件防火牆,並對程序的三個不同的jar(每個都有一個不同的IP,用於硬編碼的mysql服務器:127.0.0.1,192.168.xx和一個外部IP)。我嘗試了每個簽名的jar,但仍然無法連接運行在localhost上的mysql服務器,儘管我可以通過Eclipse。我不明白這個問題是什麼。 – JavaNovice14085 2012-03-04 22:18:20

回答

1

你應該讓你的applet通過ajax與一些後端(java或php)通信。然後使用後端與mysql進行通信。阿賈克斯的好地方是http://prototypejs.org/assets/2010/10/12/prototype.js

+0

我知道這是我應該做的(讓MySQL服務器向整個互聯網開放是一個安全問題),但是由於我處於早期階段,我正試圖讓這個工具用於測試目的。 – JavaNovice14085 2012-03-03 23:32:11