2013-07-16 87 views
0

我的自簽名applet完美適用於applet查看器和本地Web瀏覽器。但是,當我根據網站服務器上mysql數據庫的db名稱,用戶名和密碼更改連接字符串並通過ftp將項目上載到服務器時,applet無法連接到數據庫。 applet代碼是:客戶端計算機上的Applet JDBC連接失敗

public void init() { 
JPanel panel = new JPanel(); 
panel.add(new JLabel("Start")); 
revalidate(); 
// TODO start asynchronous download of heavy resources 
String driver = "com.mysql.jdbc.Driver"; 
String url = "jdbc:mysql://www.mywebiste.com:3306/database"; 
String user = "user"; 
String password = "password"; 


try { 
    Class.forName(driver);       
    Connection con = DriverManager.getConnection(url,user,password); 

    String sql4 = "Select * from form where Il='Ankara'"; 

        //System.out.println(password + " " + userName); 
       Statement stmt = con.createStatement(); 
       ResultSet rs = stmt.executeQuery(sql4); 
    panel.add(new JLabel("Connection")); 
    revalidate(); 
} 
catch(Exception e) { 
    panel.add(new JLabel("Not Connected")); 
    revalidate(); 
} 

Container content = getContentPane(); 
      content.setLayout(new GridBagLayout()); 
      content.add(panel); 

}

+1

可否請您發佈stacktrace? –

+0

以及爲什麼要使用小程序?我認爲這沒有任何意義。嘗試使用罐子奧德的Java在webstart –

+0

它不是一個Web應用程序,因此它不具有堆棧跟蹤 – user1570194

回答

1

你是同源策略的犧牲品。

這種情況有解決辦法通過簽署小應用程序,但我會強烈建議不要打擾。由於最近涉及Applets和JNLP的Java中的所有安全問題,這項技術已經和dodo一樣死灰復燃。越來越多的系統默認禁用java小程序,越來越多的用戶正在自行禁用它(或他們的IT部門)。

最好去與在服務器上你的web應用一些輕量級REST服務,並在瀏覽器(或者,如果你真的堅持一個applet),一些JavaScript它通過HTTP使用這些服務。那麼你也不需要將數據庫暴露給網絡。

即使是一個內部應用程序我想給它認真思考(或推到誰是問)。

+0

小程序已經簽署,並在本地瀏覽器在我的電腦工作。我必須讓它工作。我無法理解問題是什麼,它應該通過鏈接連接信息並通過ftp將其上載到網站的客戶端機器上來工作,該網站又是本地主機。 – user1570194

+0

這是一個學校任務嗎?如果是的話,他們真的需要重新審視課程和教學人員。無論如何,既然你是在處罰檢查,所有的應用程序的罐子簽署。確保瀏覽器接受用於簽署罐子的證書。不要忘記localhost是「me」的計算機術語,applet意味着瀏覽器的計算機。檢查瀏覽器計算機上Java控制面板的安全設置。並從瀏覽器中的Java控制檯發佈堆棧跟蹤。 –

相關問題