GVKun编程网logo

在Java Appengine开发期间使用Google Cloud SQL(而不是本地MySQL实例)

5

这篇文章主要围绕在JavaAppengine开发期间使用GoogleCloudSQL和而不是本地MySQL实例展开,旨在为您提供一份详细的参考资料。我们将全面介绍在JavaAppengine开发期间使

这篇文章主要围绕在Java Appengine开发期间使用Google Cloud SQL而不是本地MySQL实例展开,旨在为您提供一份详细的参考资料。我们将全面介绍在Java Appengine开发期间使用Google Cloud SQL的优缺点,解答而不是本地MySQL实例的相关问题,同时也会为您带来App Engine Java Servlet无法连接到Cloud SQL、Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API、Google App Engine的Google Cloud SQL(第2代)出现“请求TLS但服务器不支持TLS”错误?、Google AppEngine开始Java支持测试的实用方法。

本文目录一览:

在Java Appengine开发期间使用Google Cloud SQL(而不是本地MySQL实例)

在Java Appengine开发期间使用Google Cloud SQL(而不是本地MySQL实例)

我(有时)不希望在Java Appengine开发期间使用本地MySQL实例,而希望使用真实的Google Cloud
SQL实例(例如,使用真实的东西进行调试)。

可以从IntelliJ =>数据库打开JDBC连接,但是当我在Maven
POM中使用此URL时,它无法正常工作…在这种情况下,我已经在使用appengine驱动程序而不是本地mysql连接器。

为什么这不起作用?我应该如何配置我的POM?使用本地MySQL实例时,我使用以下配置;

<extraJvmArgs> -Xmx512M -Xms512M -XX:MaxPermSize=128M \ -Dappengine.user.timezone.impl=UTC \ -Drdbms.server=local \ -Drdbms.driver=com.mysql.jdbc.Driver \ -Drdbms.url=jdbc:mysql://localhost:3306/mydb?user=root</extraJvmArgs>

和我无法使用的Google Cloud SQL实例尝试;

<extraJvmArgs> -Xmx512M -Xms512M -XX:MaxPermSize=128M \ -Dappengine.user.timezone.impl=UTC \ -Drdbms.server=local \ -Drdbms.driver=com.mysql.jdbc.Driver \ -Drdbms.url=jdbc:google:rdbms://domain.com:myportal:myportal/mydb?user=root</extraJvmArgs>

要么

<extraJvmArgs> -Xmx512M -Xms512M -XX:MaxPermSize=128M \ -Dappengine.user.timezone.impl=UTC \ -Drdbms.server=local \ -Drdbms.driver=com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver \ -Drdbms.url=jdbc:google:rdbms://domain.com:myportal:myportal/mydb?user=root</extraJvmArgs>

我所有的(远程)尝试都导致连接超时…

答案1

小编典典

不建议使用’jdbc:google:rdbms’的连接方式,从外部应用程序连接到Cloud
SQL的首选方法是通过’jdbc:mysql’(docs)使用IP连接。

App Engine Java Servlet无法连接到Cloud SQL

App Engine Java Servlet无法连接到Cloud SQL

我已经使用应用引擎创建了一个Java Web
Servlet,该Servlet向数据库发出了请求。我已经使用本地数据库在本地测试了servlet,并且运行良好,然后继续在本地测试了servlet,但是我访问了Cloud
SQL数据库,但是也运行得很好。

我部署servlet后出现了我的问题。部署后,所有数据库请求都将返回以下内容:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not 
received any packets from the server.

我在云控制台中进行了检查,并且我的应用已正确添加到访问控制选项卡下的云SQL授权的App Engine应用中。

是否有人在部署的应用程序引擎servlet中遇到类似的问题?有解决方案或建议吗?我将不胜感激!

更新:

上面的错误是使用以下代码访问数据库生成的

Class.forName("com.mysql.jdbc.Driver");
Url = "jdbc:mysql://<ip-address-cloudsql>:3306/<dbname>";
Connection con = DriverManager.getConnection (Url,"root",<password>);

使用此代码也可以得到相同的错误,请注意,它与此处示例中显示的代码非常相似https://developers.google.com/appengine/docs/java/cloud-
sql/

Class.forName("com.mysql.jdbc.GoogleDriver");
Url = "jdbc:google:mysql://<appID:instanceID>/<dbname>? 
user=root&password=<password>";
Connection con = DriverManager.getConnection (Url);

当我使用appid和实例ID设置url时,我遵循了这个stackoverflow帖子中显示的格式设置技巧:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

使用此代码会导致以下不同的错误:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

我假设它说的是localhost,因为我的cloudsql数据库设置为遵循应用引擎servlet。另外,请知道当在本地运行servlet并访问cloud
sql数据库时,这两种方法都可以正常工作。

有什么想法吗?我不知道还能尝试什么:[

Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API

Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API

如何解决Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API?

不知道是否可以直接从应用程序停止和启动一个 Flex Google App 版本的版本?

不是由 gcloud 客户端...

显然它是通过 gcloud 命令工作的:gcloud app versions stop/start <version>

...就像在 Google Web 界面中一样...

我查看了按钮启动/停止运行良好的 Google Web 服务。请求被传递到 url :

https://console.cloud.google.com/m/operations?operationType=cloud-console.appengine.stopStartVersions&pid=<PROJECT-NAME>&hl=fr

有了这个数据:

 {"pid":"<PROJECT-NAME>","serviceId":"<SERVICE-ID>","versionId":"<VERSION-ID>","serving":true,"descriptionLocalizationKey":"gaeStopStartVersions","descriptionLocalizationArgs":{"serving":"true","versionId":"<VERSION-ID>"}}

...但通过 Python API

我尝试遵循有关修补版本的文档。此代码或示例:

from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
appengine = discovery.build(''appengine'',''v1'',credentials=credentials)
apps = appengine.apps()
apps.services().versions().patch(appsId=''<ID-APP>'',servicesId=''<ID-SERVICE>'',versionsId="<ID-VERSION>",body = {''servingStatus'': ''STOPPED''},updateMask=''servingStatus'').execute()

这是有效的。版本停止和实例关闭。但是,当我对 SERVING 执行相同操作时,版本会打开,但不会创建实例。

有人已经成功地做到了这一点吗?

预先感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Google App Engine的Google Cloud SQL(第2代)出现“请求TLS但服务器不支持TLS”错误?

Google App Engine的Google Cloud SQL(第2代)出现“请求TLS但服务器不支持TLS”错误?

在尝试连接到 Google Cloud SQL 生成一个实例时,重新使用我的连接字符串(在这里解决… 无法使用SSL +Golang从Google App Engine连接到Google Cloud SQL )时遇到问题连接到第二代实例。我收到此错误:TLS requested but server does not support TLS

我不知道如何解决这个问题, 而且文档非常稀缺。

我发现了第二Instance connection name代遵循不同结构的事实,但这似乎并不是问题所在。有人解决了吗?我正在从Golang连接。

Google AppEngine开始Java支持测试

Google AppEngine开始Java支持测试

"一开始Google就表示Google App Engine会支持更多的语言,经过一年的等待,今天终于在Google App Engine的主页上出现了对Java的支持,想用GAE玩Java的赶紧,有人数限制(前10,000名)。"

bennycompile 写道 "您能使用标准的java技术建立web应用程序放在一个高扩展的google框架中,该运行环境提供java 6的JVM,Servelet接口,还支持Appengine的Datastore接口和服务,如JDO,JPA,JavaMail和JCache,标准 化可以使你的开发更加轻易和便捷,而且可以把你的servelet环境直接移植上去。

关于在Java Appengine开发期间使用Google Cloud SQL而不是本地MySQL实例的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于App Engine Java Servlet无法连接到Cloud SQL、Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API、Google App Engine的Google Cloud SQL(第2代)出现“请求TLS但服务器不支持TLS”错误?、Google AppEngine开始Java支持测试的相关信息,请在本站寻找。

本文标签: