1

我有一个与 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 文件运行,我有一个配置文件:http .ebextensions: //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 环境,您必须在 Java 代码中调用 DriverManager.getConnection() 之前使用 Class.forName() 显式加载驱动程序。

因为我使用 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

4

1 回答 1

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
于 2013-07-22T23:31:10.853 回答