首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql、Hibernate、ElasticBeanStalk、RDS、Tomcat数据库连接

问MySql、Hibernate、ElasticBeanStalk、RDS、Tomcat数据库连接
EN

Stack Overflow用户
提问于 2014-01-24 15:52:36
回答 3查看 1.9K关注 0票数 0

我正在将我的应用程序移动到亚马逊网络服务ElasticBeanStalk,在花费了无数个小时试图让我的数据库连接正常工作后,我一再失败。

第一次尝试,

我目前有一个现有的RDS数据库在使用中,我想继续使用。我尝试使用一个普通的旧jdbc连接来连接它,如下所示。

代码语言:javascript
复制
    <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.DriverManager.getConnection(DriverManager.java:596)在java.sql.DriverManager.getConnection(DriverManager.java:187)在org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192)在org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278)找不到适用于java.sql.SQLException的驱动程序org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) ...还有125个

mysql驱动程序是在lib目录中定义的,所以我不确定为什么会看到这个异常。

是否需要创建JNDI连接?如果是这样,我该如何在ElasticBeanStalk上修改tomcat7中的配置文件?我是应该ssh到ec2实例中,还是应该这样做到ElasticBeanStalk实例中?

我会在我的hibernate.cfg.xml文件中使用类似这样的内容吗?

代码语言:javascript
复制
<property name="hibernate.connection.datasource">java:comp/env/jdbc/project</property>

web.xml

代码语言:javascript
复制
 <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>

我只是不确定我应该在哪里或配置什么。任何帮助都将不胜感激,我很困惑。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2014-01-24 17:06:21

您不需要过多地使用JNDI就可以使RDS连接正常工作。从你的描述中,我还有点困惑于什么对你不起作用。我已经毫无问题地建立了JDBC/RDS连接,尽管我已经使用Spring访问数据库,因此细节由Spring的数据源处理。

这只是一个想法:你确实有一个

代码语言:javascript
复制
Class.forName ("com.mysql.jdbc.Driver").newInstance ();

在代码中加载JDBC驱动程序?

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2014-01-25 03:31:36

你的假设是正确的。使用Hibernate,您应该能够按原样使用您的配置。无需按名称实例化驱动程序,它适用于没有Hibernate的Java代码。

您的配置设置看起来很正确。

会不会是带有MySQL连接器的罐子不知何故被损坏了?堆栈跟踪中还有其他内容吗?

票数 0
EN

Stack Overflow用户

发布于 2014-01-30 07:14:09

我在RDS和MySQL上也遇到过类似的问题。我尝试复制驱动程序的jar文件并操纵类路径,但似乎没有必要这样做,也没有帮助。最后,我更改了初始化DataSource的代码,以传递连接字符串,而不是单独传递每个属性(例如,ds.setUser( xxx ))。这解决了我的问题。

因此,最后,我的属性文件包含以下属性:

代码语言:javascript
复制
app.jdbc.driverClassName=com.mysql.jdbc.Driver
app.jdbc.url=jdbc\:mysql\://xyz.rds.amazonaws.com:3306/schema?user=username&password=mypassword

和我的数据源配置:

代码语言:javascript
复制
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass( jdbcDriverClassName );
ds.setJdbcUrl( jdbcUrl );
// other ds configuration parameters follow

通过此更改,我能够克服“驱动程序”异常,并按预期连接到RDS数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21327234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档