我编写了一个托管在外部 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;
}
}