将属性文件放在IBM websphere 8.5中的最佳位置?

在我们现有的应用程序属性文件嵌入在jar文件中,我们决定将属性文件移到耳朵外(应用程序),在IBM websphere 8.5中放置属性文件的最佳位置是什么? 这样我就可以使用WAS环境变量检索路径,并且文件应该可用于集群中的所有节点。

您可以使用类加载器目录。 我将使用$ WEBSPHERE_HOME / AppServer / classes下的目录类(您可能需要创建)并删除您的属性。 您应该能够从任何应用程序/服务器中找到它们。

检查Class Loaders页面。

与(目前)接受的答案相反,我认为在WAS_HOME/classes下放置任何东西是一种沮丧的做法。 IBM通常使用此目录来放置被视为WAS和相关产品“内部”的类/ JAR文件(例如,某些版本的WebSphere Portal将JAR文件放在该目录中)。

此外,在WAS_HOME/classes放置项目使这些项目可用于在此WAS安装中创建的所有WAS配置文件上运行的所有应用程序 。 你无法改变这种行为; 这就是WAS的设计方式。 这是另一个理由得出结论WAS_HOME/classes应保留给WAS内部使用。

此参数可以推广到WAS_HOME下的任何位置:用户文件(即,软件供应商未提供的文件)不应驻留在由产品的安装程序/卸载程序管理的位置。 WAS_HOME层次结构由IBM Installation Manager(或WAS安装程序,具体取决于所讨论的WAS版本)进行管理。 我不会把任何文件放在那里。

现在,回到你的问题。 如果您必须将您的属性文件“松散”(即,不包含在任何特定的EAR中),您最好的办法是执行以下操作:

  1. 在WAS目录树之外创建一个目录并将文件放在那里。
  2. 在WAS中,创建共享库定义。
  3. 将您创建的目录添加到共享库。
  4. 将共享库附加到服务器或您希望属性文件可用的应用程序:

    • 要将共享库附加到服务器,请在服务器上创建一个新的Classloader元素,并将共享库附加到该服务器上。
    • 要将共享库附加到应用程序,请通过在管理控制台中编辑EAR的属性或通过脚本化部署参数来执行附件。

只是我在讨论中的2美分。

为了快速简便的解决方案,我将属性文件放在WAS_HOME /类中,而不是PROFILE_ROOT / properties – 这个文件夹位于类路径上,无论如何它都用于存储属性。 / classes的一个好处是作用于配置文件,因此如果您有不同的配置文件,例如测试或集成,它们可能有不同的设置。

对于“纯粹的”WebSphere解决方案,这将允许通过控制台管理属性,您可以检查资源环境提供程序(但它相当长而复杂的解决方案): http : //www.ibm.com/developerworks/websphere/library/techarticles /0611_totapally/0611_totapally.html

试试这个

  1. 创建一个目录(您选择的位置)来保存属性文件。
  2. 将目录添加到WebSphere CLASSPATH。
  3. 从CLASSPATH加载属性文件。

我使用的另一个解决方案是向应用程序web.xml添加URL资源引用。 例如“url / properties”。

然后使用管理控制台在Websphere中定义URL,以指向“file:///dev.properties”或“file:///test.properties”。

然后在部署时,将URL引用映射到相应的websphere URL定义。

现在,您的代码可以只对URL进行jndi查找。

这样做的好处是,您可以部署单个代码库,并在部署时自定义指向不同的URL。

如果属性值不是特定于群集的一个节点或属性值是密码,则数据库是放置属性的最佳位置。 对于像密码这样的属性,我建议你在WAS中将属性值设置为jndi属性。 使用commons配置从两个源读取。 在您的代码库中有一个.property文件,它将覆盖db和jndi中的值。 这样,您的开发人员可以在开发中覆盖db / jndi值。