外部のopenSUSEサーバーでホストされるGWT Webアプリを作成しました。私は Google の GWT RPC を使用してサーバーと通信し、MySQL データベースが更新されるサーバーにクライアントからデータを送信します。すべてが Eclipse で完全に正常に動作しますが、/war ディレクトリをサーバー (java-connector に必要な mysql-connector-java-5.1.18-bin.jar ファイルを含む) に移動するとすぐに、私のローカル SQL データベースがサーバーが更新されていません。なぜ機能しないのですか?これは何らかの mysql 構成の問題ですか?
ローカル マシン (Eclipse でデバッグしていた場所) のデータベースとまったく同じ名前とテーブルを使用して、サーバー上にデータベースをセットアップしました。GWT からエラーは発生せず (サーバー アクセスは正常に機能します)、SQL ログ ファイルにもエラーは表示されません。
mysql の再起動を試み、mysql のポート 3306 が開いてリッスンしていることを確認し、ファイアウォールを無効にし、ホストに localhost と 127.0.0.1 の両方を試しました。
何が問題なのかわかりません。誰か助けてください! 私はここで夢中になる !
これは私のサーバー側のコードで、Eclipse では正常に動作しますが、サーバー上では動作しません!
package com.mycompany.mywebapp.server;
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements
GreetingService {
public String[] greetServer(String[] input) {
//Data is entered into MySQL database on server side
Connection con = null;
Statement st = null;
String url = "jdbc:mysql://127.0.0.1:3306/testdb";
String user = "username";
String password = "pass";
try{
con = DriverManager.getConnection(url,user,password); //establishes connection to database
st = con.createStatement(); //object for sending SQL statements to database
for (int i=0;i<input.length;i++){
String DataToSend = input[i];
String part1 = DataToSend.substring(0,DataToSend.indexOf("["));
String part2 = DataToSend.substring(DataToSend.indexOf("["),DataToSend.indexOf("]")+1);
//store values into mysql database
String query = "INSERT INTO boundingboxes(name, box) VALUES('"+part1+"','"+part2+"')";
st.executeUpdate(query);
}
}catch (SQLException ex){
Logger lgr = Logger.getLogger(Version.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
}finally{
//make sure to avoid null pointerexception
try{
if (st !=null){
st.close();
}
if (con != null){
con.close();
}
}catch (SQLException ex){
Logger lgr = Logger.getLogger(Version.class.getName());
lgr.log(Level.WARNING, ex.getMessage(), ex);
}
}
return input;
}
}