2013-07-04 82 views
1

我有一個Java web應用程序(REST API)與mysql數據庫交談。無法從Elastic Beanstalk上的Java應用程序連接到MySQL Amazon RDS,java.sql.SQLException:沒有合適的驅動程序

它在我的本地主機以及運行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環境,必須在調用 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

回答

1

的問題是,彈性魔豆是將周圍的JDBC_CONNECTION_STRING環境變量的報價,我是路過的

的問題和解決方案在此線程描述: https://forums.aws.amazon.com/thread.jspa?threadID=115043

(加入以下我的.ebextensions配置修正了is sue):

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