2012-04-21 15 views
0

Google App Engineが初めてのので、GAEを使用してアプリケーションを作成する必要があります。Eclipseを使用してMySQLをGoogle App Engineに接続する

私はデータベースをMySQLにします。限られたプレビューでGoogle Cloud SQLにサインアップしましたが、一方でローカルで(オフラインで)作業したいと思います。 Google Cloud SQLにまだアクセスしていなくても可能ですか?もしそうなら、それを実現するためにJDBCスクリプトを私に提供してもらえますか?また、必要に応じて任意のライブラリ。

私は通常これでローカルDBに接続します。

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 
+0

何の問題あなたが今持っていますか? –

+0

次のエラーがあり、ローカルデータベース "java.lang.ClassNotFoundException:com.mysql.jdbc.Driver"に接続していません 例外が発生しました!java.lang.NullPointerException " – user1031152

+0

mysqlドライバjarファイルが' WEB-INF/lib'? –

答えて

0
>> Could not create connection to database server. 
>> access denied ("java.net.SocketPermission" "localhost" "resolve") 

たくさんのApp Engineを使用すると、ソケットを開くことができ、そして当然のようにされていません。デプロイされると、そのような低レベルのメカニズムにアクセスすることは決してありません。

はここに文書化:https://developers.google.com/appengine/docs/java/runtime#The_Sandbox

アンApp Engineアプリケーションは、ソケットを開いたり、別のホスト にアクセスすることはできません 直接

+0

私はphpmyadminを使用しています。私はユーザー名/パスワードを間違って確認してデータベース名が正しいことを個人的に確認するため、パスワードを速く削除しました。また、私は以前にそれが働いていて、データベースにアクセスしていて、私は同じファイルをあちこちに持っています。それはGoogle App Engineアプリケーションなのではないでしょうか? – user1031152

+0

はい、私は明らかにあなたがそれを読んだ直後に私の答えを改訂しました;-) –

+0

私は何をすべきですか?それはアプリケーションをローカルでテストできないということですか? – user1031152

関連する問題