【问题标题】:How to move the environment details outside the EAR如何将环境细节移到 EAR 之外
【发布时间】:2009-01-29 05:32:09
【问题描述】:

我们的项目是在 WAS 6.1/hibernate/struts 上使用 RAD 7.0 开发的中型 Web 应用程序,该应用程序已投入生产。目前,我们已经在属性文件中硬编码了生产系统的 IP 地址,在休眠配置文件中硬编码了数据库架构详细信息。

我们的客户希望我们提出将环境详细信息保留在 EAR 之外的解决方案,以便他们将来可以在不打开 EAR 的情况下更改环境/数据库详细信息。

任何指针都会非常有帮助。谢谢。

【问题讨论】:

    标签: hibernate web-applications jakarta-ee


    【解决方案1】:

    您可以为此使用 JNDI。您应该创建适当的条目并在您的代码中像这样读取它们:

    Context initialContext = new InitialContext();
    URL ip = (URL) initialContext.lookup("java:comp/env/myip");
    

    请参阅this 文章,了解如何在休眠配置文件中使用 JNDI 数据源。

    【讨论】:

    • 绝对将 JNDI 用于数据库,然后将数据库用于任何其他属性。外部属性文件对于单个实例来说并不可怕,但如果你想要集群,让它们保持同步就会变得一团糟。
    • 直接从 JNDI 读取字符串值和/或 IP 地址怎么样?
    【解决方案2】:

    你可以试试这些,我在我的项目中坚持第一个解决方案。

    1. 将所有这些信息放在一个捆绑在 EAR 中的属性文件中。当他们想要更改信息时,他们必须重新部署 EAR。这就是我使用的方式,我们可以在 SCM 中进行变更控制。

    2. 让您的应用程序读取包含这些详细信息的属性文件,并且在应用程序启动时,代码引用该文件,该文件在 EAR 之外。他们更改数据并重新启动应用程序。

    【讨论】:

      【解决方案3】:

      您可以在服务器上的一个目录中维护配置,当应用程序启动时(通常使用在应用程序启动时调用的 servlet),将配置读入单例或静态类。向应用程序中的管理员用户提供一个实用程序,以从文件中重新加载配置,以便在最新配置发生更改时重新加载。

      【讨论】:

        【解决方案4】:

        我从其他论坛得到一个答案,使用网络服务器设置中可用的类路径设置我们可以做到这一点

        指定您存储属性文件的目录路径并重新启动服务器

        但必须尝试一下

        有什么方法可以将 hibernate cfg 文件移出 EAR,或者只是将我们在 hibernate cfg 中提到的 db 配置详细信息移出 EAR?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-12
          • 1970-01-01
          相关资源
          最近更新 更多