我正在将我的应用程序移动到AWS ElasticBeanStalk,并花费无数个小时试图让我的数据库连接工作,我反复失败。Tomcat,Hibernate,ElasticBeanStalk,RDS,MySql数据库连接
第一次尝试,
我目前在使用,我想继续使用现有的RDS数据库。我尝试使用普通的旧jdbc连接来连接它,如下所示。
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://masdfwe.czwweehqejmbr.us-east-1.rds.amazonaws.com:3306/project</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">xxxxx</property>
但在日志中发现以下异常。
产生的原因:java.sql.SQLException中:在java.lang.DriverManager中3306 /项目 :找到了JDBC没有合适的驱动程序:MySQL的://masdfwe.czwweehqejmbr.us-east-1.rds.amazonaws.com .getConnection(DriverManager.java:596) 在java.sql.DriverManager.getConnection(DriverManager.java:187) 在org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192) at org.hibernate.internal.AbstractSessionImpl $ NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) ... 125更多
mysql驱动程序是在lib目录中的deff,所以我不知道为什么我看到这个异常。
我需要创建一个JNDI连接吗?如果是这样,我该如何改变ElasticBeanStalk上tomcat7中的配置文件?我想ssh进入ec2实例,或者我做到ElasticBeanStalk实例吗?
我会在我的hibernate.cfg.xml
文件中使用类似的东西吗?
<property name="hibernate.connection.datasource">java:comp/env/jdbc/project</property>
的web.xml
<resource-ref>
<description>MyDatabase Description</description>
<res-ref-name>jdbc/project</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
我只是不知道在哪里,什么我假设是配置。任何帮助将不胜感激,我很困惑。
在此先感谢。
是的,我也不明白,我开始认为这是一个防火墙问题,但我对aws肯定不够了解。我没有驱动程序的newInstance,我使用的是hibernate.cfg.xml。 –
不,从日志消息我会说这不是防火墙问题。在某些情况下,您需要更新RDS实例的安全组的防火墙规则,以允许来自Elastic Beanstalk应用程序的连接。但是,在这种情况下你会得到的错误更多的是超时,因为你将无法得到主机的响应......你确定你的JDBC.jar在/ WEB-你的.war文件的INF/lib? – joker
可以在/ WEB-INF/lib中找到mysql-connector-java-5.1.27.jar,并且确实已将RDS配置为使用我的EC2安全组。我可以在连接到本地数据库时更改JDBC URL并在本地运行应用程序。也许我错了,希望你能确认,但我的印象是,我的hibernate.cfg.xml包含我的jdbc连接信息和lib目录中的mysql jar应该是所需的所有这些才能正常工作,对吧?或者您是否知道是否必须对tomcat或Beanstalk GUI进行任何手动配置,如果需要,那么需要在EC2实例中进行这些更改。 –