Hibernate 如何将环境细节移到耳朵外
我们的项目是一个中等规模的web应用程序,在WAS6.1/hibernate/struts上使用RAD7.0开发,并已投入生产。目前,我们在属性文件中硬编码了生产系统的ip地址,在hibernate配置文件中硬编码了数据库模式的详细信息 我们的客户希望我们提出一种解决方案,将环境细节保留在EAR之外,以便他们将来可以在不打开EAR的情况下更改环境/db细节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
任何指针都会非常有用。谢谢。您可以为此使用JNDI。您应该创建适当的条目,并在代码中这样读取它们:
Context initialContext = new InitialContext();
URL ip = (URL) initialContext.lookup("java:comp/env/myip");
请参阅关于如何在hibernate配置文件中使用JNDI数据源的文章。您可以尝试这些,我坚持使用项目中的第一个解决方案
您可以在服务器上ear之外的目录中维护配置,当应用程序启动时(通常使用在应用程序启动时调用的servlet),将配置读入单例或静态类。为应用程序中的管理员用户提供一个实用程序,以便从文件中重新加载配置,以便在最新配置发生更改时可以重新加载。我从其他论坛得到一个答案,即使用web服务器设置中提供的类路径设置,我们可以执行此操作 指定存储属性文件的目录路径,并重新启动存储该文件的服务器 但是我必须试试这个
有没有办法将hibernate cfg文件移出EAR,或者只将hibernate cfg中提到的db配置详细信息移出EAR?一定要将JNDI用于数据库,然后将数据库用于任何其他属性。外部属性文件对于单个实例来说并不可怕,但是如果您想要集群,那么让它们保持同步会变得一团糟。直接从JNDI读取字符串值和/或IP地址怎么样?