Java 使用Eclipse连接MySQL和Google应用程序引擎

Java 使用Eclipse连接MySQL和Google应用程序引擎,java,mysql,google-app-engine,jdbc,Java,Mysql,Google App Engine,Jdbc,我是谷歌应用程序引擎的新手,我需要用GAE制作一个应用程序 我希望数据库是MySQL。我注册了Google Cloud SQL进行有限预览,但我想同时在本地(离线)工作。即使我还没有访问谷歌云SQL,这可能吗?如果是这样的话,您能为我提供JDBC脚本来实现这一点吗?如果需要的话,还有任何图书馆 我通常通过以下方式连接到本地数据库: package acc; import java.sql.*; import com.google.appengine.api.rdbms.AppEngineDr

我是谷歌应用程序引擎的新手,我需要用GAE制作一个应用程序

我希望数据库是MySQL。我注册了Google Cloud SQL进行有限预览,但我想同时在本地(离线)工作。即使我还没有访问谷歌云SQL,这可能吗?如果是这样的话,您能为我提供JDBC脚本来实现这一点吗?如果需要的话,还有任何图书馆

我通常通过以下方式连接到本地数据库:

package acc;


import java.sql.*;
import com.google.appengine.api.rdbms.AppEngineDriver;

import java.io.IOException;
import java.sql.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * provide database connection 
 */
public class dbConnection {

   static Connection conn;
   static String url;

   public static Connection getConnection()
   {

      try
      {
          String url = "jdbc:mysql://localhost:3306/gp";


          Class.forName ("com.mysql.jdbc.Driver").newInstance ();

         try
         {
             String userName = "root";
             String password = "";


             conn = DriverManager.getConnection (url, userName, password);
             System.out.println ("Database connection established");
         }
         catch (Exception e)
         {
             System.err.println ("Cannot connect to database server");
         }
      }

      catch(ClassNotFoundException e)
      {
         System.out.println(e);
      } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

   return conn;
}
}
非常感谢

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:126)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:134)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.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:2464)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2207)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:126)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:134)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at acc.dbConnection.getConnection(dbConnection.java:35)
    at acc.DAO.getEmpList(DAO.java:40)
    at acc.SelectEmpServlet.doGet(SelectEmpServlet.java:27)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:369)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost" "resolve")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at java.security.AccessController.checkPermission(AccessController.java:555)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:252)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1048)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1203)
    at java.net.InetAddress.getAllByName(InetAddress.java:1127)
    at java.net.InetAddress.getAllByName(InetAddress.java:1063)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:247)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2385)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2422)
    ... 48 more
java.lang.NullPointerException
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建到数据库服务器的连接。
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:525)
在com.google.appengine.tools.development.agent.runtime.runtime.newInstance(runtime.java:126)上
位于com.google.appengine.tools.development.agent.runtime.runtime.newInstance(runtime.java:134)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:411)
位于com.mysql.jdbc.Util.getInstance(Util.java:386)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2464)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2207)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:797)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:525)
在com.google.appengine.tools.development.agent.runtime.runtime.newInstance(runtime.java:126)上
位于com.google.appengine.tools.development.agent.runtime.runtime.newInstance(runtime.java:134)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:411)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
位于java.sql.DriverManager.getConnection(DriverManager.java:579)
位于java.sql.DriverManager.getConnection(DriverManager.java:221)
在acc.dbConnection.getConnection(dbConnection.java:35)
在acc.DAO.getEmpList(DAO.java:40)
在acc.SelectEmpServlet.doGet(SelectEmpServlet.java:27)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
位于com.google.appengine.tools.development.headerficationfilter.doFilter(headerficationfilter.java:35)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
在com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter上(ServeBlobFilter.java:60)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
位于com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
位于com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
位于com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
位于com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78)
位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
位于com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:369)
位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
位于org.mortbay.jetty.Server.handle(Server.java:326)
位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
位于org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
位于org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
位于org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
位于org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
位于org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
原因:java.security.AccessControlException:拒绝访问(“java.net.SocketPermission”“localhost”“resolve”)
位于java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
在java.security.AccessController.checkPermission(AccessController.java:555)
在java.lang.SecurityManager.checkPermission(SecurityMan
>> Could not create connection to database server.
>> access denied ("java.net.SocketPermission" "localhost" "resolve")