【问题标题】:using mysql driver for work with external mysql database from GAE Application使用 mysql 驱动程序处理来自 GAE 应用程序的外部 mysql 数据库
【发布时间】:2011-12-10 16:41:21
【问题描述】:

我在 Play 框架应用程序中使用 GAE 插件,它工作正常。另外我正在使用 MySQL 驱动程序来访问外部数据库。我在 GAE 中上传我的应用程序后,mysql 驱动程序无法开始工作:

执行异常 NoClassDefFoundError 发生:无法初始化类 com.mysql.jdbc.ConnectionImpl

原因:java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission modifyThreadGroup)

GAE 不支持在不同线程中工作 MySQL 驱动吗?

【问题讨论】:

    标签: mysql google-app-engine playframework


    【解决方案1】:

    在应用引擎上,您无法打开套接字。这就是您的 JDBC 驱动程序失败的原因。

    您可以考虑其他几个选项:

    • 使用 GAE 大表进行存储
    • 使用应用引擎提供的托管 SQL(这也是 mysql)
    • 如果您出于某种原因需要外部 MySQL,则必须为数据调用编写一个 HTTP 包装器,并使用 url fetch 服务从应用引擎调用它

    您可能还想了解应用引擎的播放框架支持:http://www.playframework.org/documentation/1.0/gae

    【讨论】:

    • 我使用 BigTable 仅存储我的应用程序的对象。但是我的应用程序需要使用 MySql 数据库,只有 SELECT 数据。我无法将超过 10Gb 的 MySql 数据导入 BigTable。如果导入完成,与真正的 mysql 数据库同步将非常困难。如果GAE Application可以是WEB Service,也可以是WEB Service客户端,为什么打不开socket???
    • @user975287 这是对 GAE 的限制,请向 Google 投诉 :) 您无法打开 jdbc 套接字,因为它已被列入黑名单。你只能做http请求。我认为 GAE 不是您项目的好平台。
    • 正如我之前所说,如果您希望您的应用程序在应用程序引擎上运行,请围绕您的 mysql 构建一个 web 服务并从 gae 调用它或将数据从 mysql 导入到大表中
    • 为什么不能将超过 10GB 的数据导入 Bigtable?这就是它的目的。而“webservice”意味着“web”——打开套接字不是其中的一部分。
    猜你喜欢
    • 2018-03-24
    • 2012-04-03
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2023-03-23
    相关资源
    最近更新 更多