简体   繁体   English

GWT MySQL 连接问题

[英]GWT Problem with MySQL Connection

I am working on a GWT project in which I need to make some MySQL queries.我正在研究 GWT 项目,我需要在其中进行一些 MySQL 查询。 I have handled RPC properly and in the server-side I am trying to make a mysql connection but am running into an exception:我已经正确处理了 RPC,并且在服务器端我正在尝试建立 mysql 连接,但遇到了异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建与数据库服务器的连接。 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:120) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at Z4D236D9A2D102C5FE6AD1C50D在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 在 java.lang.reflect.Constructor.newInstance(Unknown Source) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:120) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at Z4D236D9A2D102C5FE6AD1C50D A4BEC50Z.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2412) at com.mysql.Z84BEFFD3A0D49636A A4BEC50Z.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2412) at com.mysql.Z84BEFFD3A0D49636A 58CE6080CAA87C7Z.ConnectionImpl.createNewIO(ConnectionImpl.java:2154) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:792) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) at com.google.appengine.tools.developmen 58CE6080CAA87C7Z.ConnectionImpl.createNewIO(ConnectionImpl.java:2154) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:792) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Unknown Source) at Z4D236D9A22Capp5D102C5ZFE6AD1. .tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) 在 com.google.appengine.tools.developmen t.agent.runtime.Runtime.newInstance(Runtime.java:120) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source). t.agent.runtime.Runtime.newInstance(Runtime.java:120) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source). . . . . more.更多的。 . . . .

I created a very simple java class to test out my code to confirm that my connection syntax and use is proper, and have confirmed that syntax is not a problem because with the very same code in a simple only main method java app I can create a connection and query the database properly.我创建了一个非常简单的 java class 来测试我的代码,以确认我的连接语法和使用是正确的,并确认语法不是问题,因为在一个简单的唯一主要方法 Z93F725A07423FE1C8896F48连接并正确查询数据库。 I have made sure to have mysql-connector-java-5.1.16-bin.jar in the classpath as well as the /lib folder in the WEB-INF folder.我已确保在类路径中具有 mysql-connector-java-5.1.16-bin.jar 以及 WEB-INF 文件夹中的 /lib 文件夹。

Here is the class that I am using in order to create a connection:这是我用来创建连接的 class:

public class DB_Connection {公共 class DB_Connection {

protected Connection getConnection() { Connection conn = null;受保护的连接 getConnection() { 连接连接 = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance();试试{ Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection("jdbc:mysql:///", "", ""); conn = DriverManager.getConnection("jdbc:mysql:///", "", "");
} catch (Exception ex) { ex.printStackTrace(); } 捕捉(异常前){ ex.printStackTrace(); } }

  return conn;

} }

} }

public class Login extends DB_Connection {公共 class 登录扩展 DB_Connection {

public User getUser(String email) { User user = new User(); public User getUser(String email) { User user = new User(); user.setUserEmail(email); user.setUserEmail(电子邮件); String query = "";字符串查询 = "";

  try {
     Connection conn = getConnection();
     Statement statement = conn.createStatement();
     ResultSet result = statement.executeQuery(query);
     while(result.next()) {
        user.setUserId(result.getInt("rvuser_id"));
        System.out.println(user.getUserId());
     }
  }
  catch (Exception ex)
  {
     ex.printStackTrace();
  }

  return user;

} }

It seems my problem happens all the way at the beginning in DB_Connection.看来我的问题一直发生在 DB_Connection 的开头。 Does anyone know what is making this happen?有谁知道是什么导致了这种情况发生? It is strange to me, because as a standalone the code works fine.这对我来说很奇怪,因为作为一个独立的代码工作正常。

Another thing I just realized that I am at home now and don't even have access to that database server as it is on a local network and I am not connected through VPN.另一件事我刚刚意识到我现在在家,甚至无法访问该数据库服务器,因为它位于本地网络上,并且我没有通过 VPN 连接。 So it must be failing somehow before it even attempts to make the connection.因此,它必须在尝试建立连接之前以某种方式失败。

Thanks!谢谢!

com.google.appengine.. Does it means you are deploying on Google App Engine? com.google.appengine ..这是否意味着您正在Google App Engine上部署? If so, MySQL,JDBC and many other things are restricted.如果是这样,MySQL,JDBC 和许多其他东西都会受到限制。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM