Elastic Beanstalk(AWS)的Hibernate配置

时间:2012-12-29 14:49:05

标签: java hibernate amazon-web-services elastic-beanstalk hibernate.cfg.xml

我正在使用 Hibernate 开发Java应用程序。 我想将其部署在 Elastic Beanstalk (亚马逊网络服务)上,以便能够进行相应的扩展。

RDS是我想要使用的数据库。

但是,我不知道如何将配置设置提供给Elastic Beanstalk。显然现在可以,无需创建AMI并为每个新服务器使用此AMI(自动扩展时)。

我用:

  • hibernate.cfg.xml
  • server.xml(链接到hibernate.cfg.xml)

但我想轻松扩展,所以没有“手动配置EC2实例”来输入这些文件。 那么如何在没有这两个文件的情况下将这些设置提供给我的应用程序呢?

如何使用这些信息在Elastic Beanstalk上部署?

2 个答案:

答案 0 :(得分:2)

Amazon Relational Database Service(RDS)是一种用于在云中设置关系数据库的Web服务。 RDS支持关系数据库引擎,如MySQL,Oracle,SqlServer。对于MySQL,更改hibernate.cfg.xml,如下所示

<session-factory>
    <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property
name="connection.url">jdbc:mysql://my_sports_entertainment_db_url/news</property>
    <property name="connection.username">my_username</property>
    <property name="connection.password">my_password</property>
  </session-factory>

同时检查How to 'switch' from MySQL to Amazon RDS with minimal application impact?

答案 1 :(得分:0)

我可以看到一种方法来做到这一点,但它并不漂亮。

您的实例配置文件可以包含container commands。这些在安装容器和应用程序之后但在应用程序启动之前运行。此时,可以编辑Tomcat context.xml文件以添加数据源。您需要添加的文字是the usual datasource configuration。您的问题是您必须从脚本中执行此操作。最简单的方法是编写配置并将其与您的应用程序一起交付,然后使用容器命令应用强大的sed将其拼接到context.xml

您还有另一个问题,即您需要编写的实际配置必须包含RDS的主机名,用户名和密码等内容,这些内容在开发过程中不会出现。 AWS确实通过system properties将这些信息暴露给Java,因此信息必须位于计算机上的某个位置。如果您能找到它,则可以在将其拼接到context.xml时将其混合到配置中。

虽然这可能是有可能的,正如我所说,它并不漂亮。感觉就像一个黑客。必须有更好的方法来做到这一点。