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

时间:2014-05-23 17:48:51

标签: java java-ee properties websphere websphere-8

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

6 个答案:

答案 0 :(得分:8)

讨论中只有2美分。

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

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

答案 1 :(得分:7)

与(目前)接受的答案相反,我认为将任何内容置于WAS_HOME/classes之下是一种沮丧的做法。 IBM经常使用此目录来放置被认为是" internal"的类/ JAR文件。到WAS和相关产品(例如,某些版本的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 :(得分:1)

试试这个

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

答案 3 :(得分:1)

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

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

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

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

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

答案 4 :(得分:0)

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

检查Class loaders page.

答案 5 :(得分:0)

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