使用与MySQL交互的Google Web Toolkit创建应用程序

时间:2011-02-28 05:47:18

标签: java mysql google-app-engine gwt

我使用Google Web Toolkit(GWT)在Java中创建了一个Web应用程序。在客户端,GWT生成一个输入框,并(使用GWT搜索API)进行网络搜索。我想将网络搜索中的一些信息推送到MySQL数据库中,以便可以使用机器学习应用程序(Weka)进行分析。我有一个与服务器端代码交互的RPC运行。在该服务器端代码中,我尝试建立与MySQL数据库的连接。

我目前正在本地运行该项目,因此,据我所知,谷歌应用引擎正在托管它。这得到以下事实的支持:当我运行应用程序时,我收到以下消息:

Initializing AppEngine server
Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger  
The server is running at http://localhost:8888/

但是,虽然我能够使用应用程序的搜索部分,但在尝试连接MySql数据库时会抛出异常。

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.  
Caused by: java.security.AccessControlException: access denied (java.net.SocketPermission mysql.database.location resolve)  

我已经从常规(非基于Web)的Java程序测试了数据库连接,并且从Web应用程序外部连接到它是没有问题的。我相信我收到此错误是因为Google应用引擎不允许连接到外部数据库。

总之我的问题是:
1.虽然我使用的是Google App Engine,但是可以使用服务器端代码连接到MySQL吗? (我假设没有,但这是理想的。) 2.是否可以切换到另一台服务器(如Tomcat)?如果是这样,有人能指出我如何做到这一点的参考?我发现如何使用Tomcat(http://stackoverflow.com/questions/2208181/gwt-app-deploying-on-tomcat-or-any-other-servlet-container)一个老问题,计算器,但它不再引导到包含有关使用其他服务器的信息的地方。

感谢您的帮助,如果您希望我提供更多信息,请随时提出跟进问题。

1 个答案:

答案 0 :(得分:3)

  1. GAE禁止访问其他服务器。您可以使用URLFetch服务,但它可能不是您想要的,并且您无法将其用于MySQL连接。顺便说一句,您可以创建自己的基于http的协议,以便与其他模块进行交互,但这可能过于复杂。

  2. GWT编译为javascript,它仅适用于客户端,因此无论你在服务器端使用什么都没关系,它可以用于任何编程语言和任何网络服务器(请记住您可以使用JSON进行通信,而不是默认协议)。它只是使用java servlet的默认 RPC构建实现,你可以在任何java web容器中使用它,包括tomcat。 GWT是在GAE之前几年开发的,它是完全独立的项目,并且不需要在服务器端使用GAE。