我们的项目是使用RAD 7.0在WAS 6.1 / hibernate / struts上开发的中型Web应用程序,后者已投入生产。目前,我们已经在hibernate配置文件中的属性文件和数据库架构详细信息中硬编码了生产系统的IP地址。
我们的客户希望我们提出将环境详细信息保留在EAR旁边的解决方案,以便他们可以在未打开EAR的情况下更改环境/数据库详细信息。
任何指针都会非常有用。感谢。
答案 0 :(得分:5)
您可以使用JNDI。您应该创建相应的条目,并在您的代码中读取它们:
Context initialContext = new InitialContext();
URL ip = (URL) initialContext.lookup("java:comp/env/myip");
请参阅this有关如何在hibernate配置文件中使用JNDI数据源的文章。
答案 1 :(得分:0)
你可以尝试这些,我坚持我的项目中的第一个解决方案。
在EAR中捆绑的属性文件中包含所有这些信息。当他们想要更改信息时,他们必须重新部署EAR。这就是我使用的方式,我们可以在SCM中进行更改控制。
使您的应用程序读取具有这些详细信息的属性文件,并在应用程序启动时,代码引用此文件,该文件位于EAR之外。他们更改数据并重新启动应用程序。
答案 2 :(得分:0)
您可以在服务器上的耳朵外的目录中维护配置,并在应用程序启动时(通常使用在应用程序启动时调用的servlet),将配置读取为单例或静态类。为应用程序中的admin用户提供一个实用程序,以便从文件中重新加载配置,以便每当有最新配置发生更改时都可以重新加载。
答案 3 :(得分:0)
我从其他论坛得到一个答案,即使用Web服务器设置中可用的类路径设置我们可以这样做
指定存储属性文件的目录路径并重新启动服务器
但必须尝试这个
是什么方法可以将hibernate cfg文件从EAR中移出,或者只是将我们在hibernate cfg中提到的db配置详细信息放在EAR旁边?