2011-07-12 92 views
7

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

是否有这样做的动态方式,因此在部署应用程序时,属性文件也安装在部署文件夹下并且从那里读取?

非常感谢

回答

5

不需要把文件在其他地方另一种选择应用程序将读取它是使用通用文件加载覆盖: http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/config.htm#i1066493

这包括创建一个目录,这将是您的部署的根目录下,姑且称之为FooApplication有FooApplication.ear和FooWeb.war。这被称为应用程序安装目录。你的应用程序进入FooApplication/app子目录,无论它是一个档案文件(比如.ear,.war,jar),还是它是其中一个档案的分解版本。您的可选部署计划(您必须有一个才能使用此功能,它可能是一个计划,除了指定配置根元素和文档中描述的值之外,没有太多的工作)进入FooApplication/plan。您可以将您想要覆盖应用程序的属性放在FooApplication/plan/AppFileOverrides目录结构中。 http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/deployunits.htm#sthref9

一旦部署这种风格做,你从你的应用程序中编写这样的代码和myApp.properties的内容,您可以通过FooApplication /计划读/ AppFileOverrides/FooWeb.war/myApp.properties将实际读入的文件。

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

这是通过在文档中解释的类中加入类加载器来完成的。初始化配置看起来可能很乏味,但它是一个直接满足原始问题的功能,仅适用于特定的应用程序。

1

方法#1

更新服务器启动脚本中通过以下系统变量JVM(下面是例如在Windows OS)

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

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

1

当你说“我在网站上阅读了很多文章,但我不想硬编码属性文件的路径”我假设你说你不想在你的硬编码中Java代码。如果是这样,那么请参阅下面

在这里找到答案:

有办法读取的WebLogic类路径属性中的Java文件

一(位于WebLogic域属性文件):删除属性文件在Domain目录中。通过这种方式,属性文件会自动添加到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 /文件/物业/ some.properties

希望它有帮助!

3

您可以在类路径中设置一个目录,并将您的自定义属性文件放在该文件夹/目录中。因此,整个目录以及属性文件将位于classpath中。 要设置目录在classpath在WebLogic 10.3.x中

  • %DOMAIN_HOME%\config\文件夹中创建一个文件夹。示例appConfig
  • 将您的自定义属性文件(比如说config.properties)放在appConfig目录/文件夹中。
  • 通过设置%DOMAIN_HOME%\config\appConfig作为价值EXT_POST_CLASSPATH(这个变量在setDomainEnv.cmd文件中定义)修改setDomainEnv.cmd(Windows)中,包括在classpath appConfig变量如下:

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

你可以访问该文件在你的Java代码如下:

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties"); 
    Properties prop = new Properties(); 
    prop.load(inputStream); 
    String value = prop.getProperty("key"); 

希望这会有所帮助。

相关问题