Estoy trabajando en una aplicación de Java Google App Engine, y cuando despliego mi aplicación y la abro en mi navegador me sale el error anterior. iworks_db es el nombre de mi base de datos, y por alguna razón mi aplicación no puede conectarse a la misma. Estoy usando la guía de encontrar aquí: https://cloud.google.com/sql/docs/mysql/connect-app-engine .
Mi método createConnectionPool:
private DataSource createConnectionPool() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));
config.setUsername(DB_USER);
config.setPassword(DB_PASS);
config.setDriverClassName("org.hsqldb.jdbc.JDBCDriver");// This line does NOT exist on the guide
// I added it because I was getting "failed
// to get driver instance" error
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);
config.addDataSourceProperty("useSSL", "false");
config.setMaximumPoolSize(5);
config.setMinimumIdle(5);
config.setConnectionTimeout(10000); // 10 seconds
config.setIdleTimeout(600000); // 10 minutes
config.setMaxLifetime(1800000); // 30 minutes
DataSource pool = new HikariDataSource(config);
return pool;
}
Las dependencias en mi archivo pom.xml:
<!-- Compile/runtime dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>1.9.59</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.2</version>
</dependency>
Cualquier ayuda sería muy apreciada!
Su URL es una dirección URL MySQL, mientras que su conductor es HyperSQL base de datos (hsqldb). Esa es la razón por la que obtiene la excepción relativa a JDBCURL no es aceptable.
Su base de datos es Google Cloud MySQL, que creo que es el caso ya que el resto de su código de fábrica usan MySQL (com.google.cloud.sql.mysql.SocketFactory), a continuación, cambiar el nombre de clase del controlador a continuación:
config.setDriverClassName("com.mysql.jdbc.GoogleDriver");
También reemplazar la dependencia hsldb experto con
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory-connector-j-8</artifactId>
<version>1.0.14</version>
</dependency>
El com.google.cloud.sql.mysql.SocketFactory
se proporciona en el mysql-socket-factory-connector-j-8
artefacto experto.
Actualizar:
También puede probar a no utilizar el driverClassName en absoluto.
Trate de añadir las dos dependencias anteriores y eliminar la línea setDriverClassName.