Properties 带有Weblogic的外部属性文件

Properties 带有Weblogic的外部属性文件,properties,weblogic,weblogic-10.x,Properties,Weblogic,Weblogic 10.x,我正在寻找将要部署在Weblogic 10.3服务器上的应用程序使用外部属性文件的最佳方法。我在网站上读了很多文章,但我不想硬编码属性文件的路径,也不想把文件放在domains/mydomain文件夹中 在部署应用程序时,是否有一种动态方法来执行此操作?属性文件也会安装在部署文件夹下,并从中读取 非常感谢方法#1 更新服务器启动脚本,将下面的系统变量传递给JVM(下面是Windows操作系统上的示例) 使用这个指向配置目录的变量,从那里读取配置。您需要在要部署应用程序的每台服务器上进行此设置。方

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

在部署应用程序时,是否有一种动态方法来执行此操作?属性文件也会安装在部署文件夹下,并从中读取

非常感谢

方法#1

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

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

方法#2

使用Weblogic共享库

遵循以下步骤

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

另一种不需要将文件放置在其他应用程序将读取的位置的替代方法是使用通用文件加载覆盖:

这涉及到创建一个目录,该目录将是部署的根目录,我们称之为FooApplication,其中包含FooApplication.ear和FooWeb.war。这称为应用程序安装目录。您的应用程序位于FooApplication/app子目录中,无论它是归档文件(如.ear、.war、jar),还是这些归档文件的分解版本。您的可选部署计划(您必须有一个部署计划才能使用此功能,它可以是一个除了指定配置根元素和文档中描述的值之外没有多大作用的计划)位于FooApplication/plan中。您可以在FooApplication/plan/AppFileOverrides目录结构中的应用程序中放置要覆盖的属性。

一旦完成了这种类型的部署,您就可以从应用程序中编写这样的代码,并且从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);
这是通过向应用程序添加类加载器来实现的,如文档中所述。最初配置可能看起来很乏味,但这是一项直接满足原始问题的功能,并且仅适用于该特定应用程序。

当您说“我在网站上读了很多文章,但我不想硬编码属性文件的路径”时我想您是说不想在Java代码中硬编码它。如果是这样,请参见下文

答复如下:

有几种方法可以从weblogic类路径读取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_选项

设置JAVA\u选项=%JAVA\u选项%-DpropFileLocation=/dev/file/properties/some.properties


希望有帮助

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

  • %DOMAIN\u HOME%\config\
    文件夹中创建一个文件夹。示例
    appConfig
  • 将自定义属性文件(比如
    config.properties
    )放在
    appConfig
    目录/文件夹中
  • 通过将
    %DOMAIN\u HOME%\config\appConfig
    设置为
    EXT\u POST\u classpath
    (此变量已在
    setdomainev.cmd
    文件中定义)变量,修改
    setdomainev.cmd
    (Windows)以将
    appConfig
    包含在类路径中,如下所示:

    set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
    
        InputStream inputStream = Thread.currentThread ().getContextClassLoader().getResourceAsStream ("config.properties");
        Properties prop = new Properties();
        prop.load(inputStream);
        String value = prop.getProperty("key");
    
您可以在java代码中访问该文件,如下所示:

set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
    InputStream inputStream = Thread.currentThread ().getContextClassLoader().getResourceAsStream ("config.properties");
    Properties prop = new Properties();
    prop.load(inputStream);
    String value = prop.getProperty("key");

希望这有帮助。

如何使用wlst/jython中的创建属性将配置JAR部署为脱机共享库?