Hibernate configuration for Elastic Beanstalk (AWS)



我正在使用Hibernate开发一个Java应用程序。我想把它部署在Elastic Beanstalk (Amazon Web Services)上,以便能够相应地扩展。

RDS是我要使用的数据库。

然而,我不知道如何将我的配置设置给Elastic Beanstalk。显然,现在可以不创建AMI并为每个新服务器使用该AMI(当自动伸缩时)。

我使用:

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

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

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

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>

请查看如何'开关'从MySQL到Amazon RDS,对应用程序的影响最小?

我可以看到一个方法,但是它不是很漂亮。

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

您还有另一个问题,您需要编写的实际配置必须包括RDS的主机名、用户名和密码等内容,而这些内容在开发过程中是没有的。AWS通过系统属性将这些信息公开给Java,因此这些信息必须在机器的某个地方。如果你能找到它,当你把它拼接到context.xml中时,你可以把它混合到配置中。

虽然这可能是可能的,正如我所说的,它并不漂亮。感觉就像一个黑客。一定有更好的办法。

最新更新