【问题标题】:Unable to connect to MySQL Amazon RDS from Java app on Elastic Beanstalk, java.sql.SQLException: No suitable driver无法从 Elastic Beanstalk 上的 Java 应用程序连接到 MySQL Amazon RDS,java.sql.SQLException:没有合适的驱动程序
【发布时间】:2013-07-23 15:48:22
【问题描述】:

我有一个与 mysql 数据库通信的 Java Web 应用程序 (REST API)。

它在我的本地主机和运行 Tomcat 和 MySql 的独立 EC2 服务器上完美运行,但是当我在 AWS Elastic Beanstalk 上部署时,它无法连接到 Amazon Relational Data Service

我收到以下错误消息:

22:09:18,757 DEBUG BasicResourcePool:1831 - An exception occurred while acquiring a poolable resource. Will retry.
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:289)
at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:224)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPerTaskAsynchronousRunner$TaskThread.run(ThreadPerTaskAsynchronousRunner.java:255)

我正在运行 Mysql 5.5,它是一个 Java 7 应用程序。

要运行 Java 7 WAR 文件,我在 .ebextensions 中有一个配置文件,如下所示: http://qslack.com/2012/12/using-java-1-7-on-amazon-aws-elastic-beanstalk/

我已经审核了http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Java.rds.html,唯一没有做的是

要连接到 Tomcat RDS 环境,您必须加载驱动程序 在调用之前显式使用 Class.forName() Java 代码中的 DriverManager.getConnection()。

因为我使用 Spring (3.2.0) 和 Hibernate (4.1.9) 来建立数据库连接。话虽如此,我确实尝试将其添加到我的一种方法中作为测试,但没有奏效。

我已经从弹性 beanstalk ec2 实例的命令行成功连接,也从我的个人计算机成功连接,所以这不是权限/访问问题。

我的 WebContent/WEB-INF/lib 目录中有 mysql 连接器/j jar 文件 (mysql-connector-java-5.1.25-bin.jar)。我也尝试手动将此 jar 文件复制到 /usr/share/tomcat7/lib,但这没有帮助。

这似乎是几个人都遇到过的问题,但所提出的解决方案似乎都不起作用。例如:

https://forums.aws.amazon.com/thread.jspa?messageID=413533 https://forums.aws.amazon.com/thread.jspa?messageID=285923&tstart=0#285923

【问题讨论】:

    标签: java mysql driver amazon-elastic-beanstalk rds


    【解决方案1】:

    问题在于 Elastic Beanstalk 在我传入的 JDBC_CONNECTION_STRING 环境变量周围添加了引号。

    此线程中描述了问题和解决方案: https://forums.aws.amazon.com/thread.jspa?threadID=115043

    (将以下内容添加到我的 .ebextensions 配置中解决了该问题):

    commands: 
         patch_tomcat:
             command: sed -i.bak s#\"/usr/sbin/tomcat7\"#\"/usr/sbin/tomcat7-elasticbeanstalk\"#g /etc/init.d/tomcat7
    

    【讨论】:

      猜你喜欢
      • 2015-05-07
      • 2014-03-06
      • 1970-01-01
      • 2016-01-09
      • 2013-12-21
      • 2020-06-25
      • 2021-08-04
      • 2021-07-13
      • 2016-09-12
      相关资源
      最近更新 更多