Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何将环境细节移到耳朵外_Hibernate_Web Applications_Jakarta Ee - Fatal编程技术网

Hibernate 如何将环境细节移到耳朵外

Hibernate 如何将环境细节移到耳朵外,hibernate,web-applications,jakarta-ee,Hibernate,Web Applications,Jakarta Ee,我们的项目是一个中等规模的web应用程序,在WAS6.1/hibernate/struts上使用RAD7.0开发,并已投入生产。目前,我们在属性文件中硬编码了生产系统的ip地址,在hibernate配置文件中硬编码了数据库模式的详细信息 我们的客户希望我们提出一种解决方案,将环境细节保留在EAR之外,以便他们将来可以在不打开EAR的情况下更改环境/db细节 任何指针都会非常有用。谢谢。您可以为此使用JNDI。您应该创建适当的条目,并在代码中这样读取它们: Context initialConte

我们的项目是一个中等规模的web应用程序,在WAS6.1/hibernate/struts上使用RAD7.0开发,并已投入生产。目前,我们在属性文件中硬编码了生产系统的ip地址,在hibernate配置文件中硬编码了数据库模式的详细信息

我们的客户希望我们提出一种解决方案,将环境细节保留在EAR之外,以便他们将来可以在不打开EAR的情况下更改环境/db细节


任何指针都会非常有用。谢谢。

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

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

请参阅关于如何在hibernate配置文件中使用JNDI数据源的文章。

您可以尝试这些,我坚持使用项目中的第一个解决方案

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

  • 使您的应用程序读取具有这些详细信息的属性文件,并且在应用程序启动时,代码引用EAR之外的该文件。它们更改数据并重新启动应用程序


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

    我从其他论坛得到一个答案,即使用web服务器设置中提供的类路径设置,我们可以执行此操作

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

    但是我必须试试这个


    有没有办法将hibernate cfg文件移出EAR,或者只将hibernate cfg中提到的db配置详细信息移出EAR?

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