Weblogic的外部属性文件

时间:2011-07-12 12:17:10

标签: properties weblogic weblogic-10.x

我正在寻找将外部属性文件与将要部署在Weblogic 10.3服务器上的应用程序一起使用的最佳方法。我在网站上阅读了很多文章,但我不想硬编码属性文件的路径或将文件放在domains / mydomain文件夹中。

有没有动态的方法这样做,所以在部署应用程序时,属性文件也会安装在例如deployments文件夹下并从那里读取?

非常感谢

5 个答案:

答案 0 :(得分:5)

另一个不需要将文件放在其他应用程序将读取它的位置的替代方法是使用通用文件加载覆盖: http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/config.htm#i1066493

这涉及创建一个目录,该目录将作为部署的根目录,让我们称之为具有FooApplication.ear和FooWeb.war的FooApplication。这称为应用程序安装目录。您的应用程序进入FooApplication / app子目录,无论它是存档(如.ear,.war,jar)还是它是其中一个存档的爆炸版本。您的可选部署计划(您必须拥有一个使用此功能的计划,它可能是一个除了指定配置根元素和文档中所述的值之外没有做太多的计划)在FooApplication / plan中。您可以在FooApplication / plan / AppFileOverrides目录结构中将要覆盖的属性放在应用程序中。 http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/deployunits.htm#sthref9

完成这种部署方式后,您可以从应用程序中编写这样的代码,并从FooApplication / plan / AppFileOverrides / FooWeb.war / myApp.properties中读取myApp.properties的内容将是实际的文件。读入。

Properties myAppProps = new Properties();
InputStream iostream =
Thread.currentThread().getContextClassLoader().getResourceAsStream("myCfg/myApp.properties");
myAppProps.load(iostream);

这是通过在文档中解释的向应用程序添加类加载器来实现的。初始配置似乎很乏味,但它是一个直接满足原始问题的功能,仅适用于该特定应用。

答案 1 :(得分:3)

您可以在类路径上设置目录,并将自定义属性文件放在该文件夹/目录中。这样,整个目录和属性文件将在classpath上。 在weblogic 10.3.x中的类路径上设置目录

  • %DOMAIN_HOME%\config\文件夹中创建一个文件夹。例如appConfig
  • 将您的自定义属性文件(假设为config.properties)放在appConfig目录/文件夹中。
  • 通过将setDomainEnv.cmd设置为值appConfig,修改%DOMAIN_HOME%\config\appConfig(Windows)以在类路径中包含EXT_POST_CLASSPATH(此变量已在{ {1}} file)变量如下:

    setDomainEnv.cmd

您可以使用以下java代码访问该文件:

set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig

希望这有帮助。

答案 2 :(得分:1)

方法#2

使用Weblogic共享库

http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html

按照以下步骤

  • 在构建过程中将所有配置打包为单独的JAR
  • 将配置JAR部署为共享库
  • 从您的EAR / WAR
  • 中引用上述共享库
  • 部署EAR / WAR(配置将在类路径中提供)

答案 3 :(得分:1)

当你说"我在网站上阅读了很多文章,但我不想硬编码属性文件的路径#34;我假设您说您不想在Java代码中对其进行硬编码。如果是这样,那么请看下面

在这里回答:

有很多方法可以从weblogic classpath

中读取Java中的属性文件

一个(位于weblogic域中的属性文件):删除域目录中的属性文件。这样,属性文件就会自动添加到weblogic类路径中,我们可以使用resourceAsStream从Java中读取。

两个(来自用户定义位置的属性文件):这种方法的优点是属性文件可以驻留在JAR或EAR文件之外,并且可以方便地修改。

package com.test;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertyFileExample {

private static Properties prop;

public static void myMethod() {

InputStream is = null;

try {

prop = new Properties();

String propFilePath = System.getProperty(“propFileLocation“);

InputStream iStream = PropertyFileExample.class.getClassLoader().getResourceAsStream(propFilePath);

prop.load(iStream);
prop.getProperty(“dbuser”);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}
}

在weblogic setDomainEnv(在bin下)我们需要将属性文件的位置作为-D参数传递给JAVA_OPTIONS

设置JAVA_OPTIONS =%JAVA_OPTIONS%-DpropFileLocation = / dev / file / properties / some.properties

希望它有所帮助!

答案 4 :(得分:0)

方法#1

更新服务器启动脚本,将下面的系统变量传递给JVM(下面是Windows操作系统上的示例)

call "%DOMAIN_HOME%\bin\startWebLogic.cmd" "-Dcom.mycompany.myapp.EXTERNAL_CONFIG_PATH=/mycompany/myapp/config" %*

使用指向配置目录的变量,从那里读取配置。您需要在要部署应用程序的每台服务器上进行此设置。