簡體   English   中英

Google Cloud App Engine中的獨立Java應用程序已連接到Google Cloud SQL數據庫

[英]Standalone Java application in Google Cloud App Engine connecting to Google Cloud SQL database

目標:在雲中運行獨立的Java和數據庫應用程序以提高性能,可伸縮性和高可用性

申請詳情

  • 基於Spring Boot的Java應用程序被git克隆到Google App Engine標准環境中的文件夾中。
  • 創建了Google Cloud SQL第二代實例

注意: Cloud Shell與Cloud SQL位於同一Google Cloud項目中

Google Cloud Shell

user@${PROJECT_ID}:~$ cd git

user@${PROJECT_ID}:~$ cd myapplication

使用Maven運行應用程序會引發無法連接到Cloud SQL數據庫的異常

user@${PROJECT_ID}:~$ mvn exec:java

使用不同的JDBC連接字符串和JDBC驅動程序無濟於事。

application.properties

# Use MySQL database
#etl.datasource.url=jdbc:mysql://${IP:Instance_name}/${database}?autoReconnect=true&useSSL=false
#etl.datasource.url=jdbc:google:mysql://${INSTANCE_CONNECTION_NAME}/${database}
etl.datasource.url=jdbc:mysql://google/${database}?cloudSqlInstance=${INSTANCE_CONNECTION_NAME}&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false
#etl.datasource.driver-class-name=com.mysql.jdbc.Driver
etl.datasource.driver-class-name=com.mysql.jdbc.GoogleDriver
etl.datasource.username=${user}
etl.datasource.password=${password}

2017-08-03 10:40:59.477錯誤381 --- [MyApplication.main()] oatomcat.jdbc.pool.ConnectionPool:無法創建池的初始連接。 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:無法創建與數據庫服務器的連接。 嘗試重新連接3次。 放棄。

2017-08-03 12:16:23.525錯誤1048 --- [MyApplication.main()] oatomcat.jdbc.pool.ConnectionPool:無法創建池的初始連接。 java.sql.SQLException:無法從ClassLoader:java.net.URLClassLoader@13b428de;加載Class:com.mysql.jdbc.GoogleDriver; ClassLoader:java.net.URLClassLoader@13b428de

即使添加src / webapp / WEB-INF / appengine-web.xml也無濟於事。

AppEngine上-web.xml中

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <threadsafe>true</threadsafe>
    <use-google-connector-j>true</use-google-connector-j>
</appengine-web-app>

問題

  1. Google App Engine是否僅適用於基於Web的應用程序?
  2. Google App Engine靈活環境是否適合非基於Web控制台的Java應用程序?
  3. 還是我應該使用Google Compute Engine VM平台來運行此類非Web控制台應用程序,並且類似於在本地計算機上運行的應用程序?
  4. 是否可以為com.mysql.jdbc.GoogleDriver添加Maven依賴項?

您嘗試做的事情絕對應該可以在App Engine上實現。 實際上,您可以為Google驅動程序獲取Maven依賴項:

    <dependency>
        <groupId>com.google.cloud.sql</groupId>
        <artifactId>mysql-socket-factory</artifactId>
    </dependency>

另外,由於您使用的是Spring Boot,因此建議您嘗試一下Spring Cloud GCP 那里有一個簡單的Cloud SQL示例 ,可以幫助您快速入門。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM