gpt4 book ai didi

java - 使用 Java 和 Cloud SQL 的 AppEngine 托管虚拟机

转载 作者:行者123 更新时间:2023-12-01 10:19:37 30 4
gpt4 key购买 nike

我想要一个 Java Appengine 托管虚拟机应用程序连接到第二代 Cloud SQL 实例。文档中存在差异 - 我无法确定 Google 是否真正支持此功能!

https://cloud.google.com/appengine/docs/managed-vms/java/using-cloud-sql状态:

4:在控制台中,授予您的 App Engine 应用对 Google Cloud SQL 实例的访问权限。

但我看不出有什么办法可以做到这一点。在 Cloud SQL 管理控制台中,实例的属性下有:

授权应用程序:无

似乎没有办法授权应用程序?

然后在这个页面https://cloud.google.com/sql/docs/dev-access它指出:

Java App Engine 应用程序

Java 不支持使用 Cloud SQL 代理。

所以您似乎无法使用 Cloud SQL 代理。我让这一切正常工作的唯一方法是向世界开放 SQL 端口,以便托管虚拟机实例可以通过其公共(public) IP 地址连接到它,但这是一个可怕的解决方案!

是否有实际支持的方法来执行此操作? Google 的任何人都可以回答吗?

最佳答案

2016 年 4 月更新

我们有一个新的 Java 库,用于从托管虚拟机和其他环境连接到 Cloud SQL 实例:https://github.com/GoogleCloudPlatform/cloud-sql-mysql-socket-factory

它仍然非常新,因此通常的警告适用,但我们在测试中没有发现任何问题。

<小时/>

旧答案:

我认为现在最好的选择是使用 junixsocket 库,如这篇文章中所述:https://stackoverflow.com/a/34820600

如果您使用 maven-war-plugin 来打包您的应用程序,那么添加以下两个依赖项就足够了:

<dependency>
<groupId>com.kohlschutter.junixsocket</groupId>
<artifactId>junixsocket-mysql</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.kohlschutter.junixsocket</groupId>
<artifactId>junixsocket-native-common</artifactId>
<version>2.0.4</version>
</dependency>

对于 Play 框架,添加以下依赖项:

libraryDependencies += "com.kohlschutter.junixsocket" % "junixsocket-mysql" % "2.0.4"
libraryDependencies += "com.kohlschutter.junixsocket" % "junixsocket-native-common" % "2.0.4"

按如下方式配置您的 Play application.conf:

db.default.url="jdbc:mysql:///mydb?socketFactory=org.newsclub.net.mysql.AFUNIXDatabaseSocketFactory&junixsocket.file=/cloudsql/PROJECT_ID:REGION:INSTANCE_NAME"

我们希望将来提供一些不需要使用 junixsocket 或类似库的东西。

我们将审查/修复 https://cloud.google.com/appengine/docs/managed-vms/java/using-cloud-sql 处的文档因为它有一些问题。感谢您引起我们的注意。

关于java - 使用 Java 和 Cloud SQL 的 AppEngine 托管虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687687/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com