Elastic Beanstalk (AWS) 的休眠配置

Posted

技术标签:

【中文标题】Elastic Beanstalk (AWS) 的休眠配置【英文标题】:Hibernate configuration for Elastic Beanstalk (AWS) 【发布时间】:2012-12-14 12:01:19 【问题描述】:

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

RDS 是我要使用的数据库。

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

我用:

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

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

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

【问题讨论】:

我读过的内容表明,这样做的方法是自定义 AMI,因此您可以通过 JNDI 获得数据源。然后,您可以将该一个 AMI 用于所有自动缩放的实例。是什么让您说“显然现在可以,无需创建 AMI”? 我在上一篇时事通讯中读到了这一点:“使用配置文件,您可以在您的环境中的 Amazon EC2 实例上配置软件,而无需创建自定义 AMI。”也许我误解了意思 表示该内容的新闻通讯应包含“要了解有关环境资源的更多信息,请访问 AWS Elastic Beanstalk 开发人员指南”的句子。该链接指向 Customizing Environment Resources 上的文档,该文档解释了如何配置 AWS 资源,例如队列和警报。遗憾的是,这与配置您自己的应用程序无关。 您可以尝试创建一个CloudFormation模板aws.amazon.com/cloudformation 【参考方案1】:

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?

【讨论】:

MySQL。我将我的应用程序与本地 mysql 数据库一起使用。我想用RDS,只是hibernate需要的配置设置,不知道在哪里添加(hibernate.cfg.xml) 但是我应该在哪里输入 hibernate.cfg.xml ?我希望我的应用程序具有可扩展性并自动使用多个实例。我不想手动访问EC2实例来输入server.xml【参考方案2】:

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

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

您还有一个问题,即您需要编写的实际配置必须包含诸如 RDS 的主机名、用户名和密码之类的内容,而您在开发期间不会拥有这些内容。 AWS 确实通过system properties 将这些信息暴露给Java,因此信息必须在机器上的某个地方。如果能找到,可以在拼接到context.xml时混入配置中。

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

【讨论】:

以上是关于Elastic Beanstalk (AWS) 的休眠配置的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk CLI 安装错误

HTTPS Elastic Beanstalk (AWS) 到 Android

text AWS Elastic Beanstalk

AWS Elastic Beanstalk

AWS Elastic Beanstalk 无法担任角色

AWS 和 Elastic Beanstalk