在weblogic中使用外部属性文件

时间:2009-08-07 17:17:36

标签: java java-ee properties weblogic classpath

我正在将我之前在JBOSS中部署的J2ee应用程序部署到Weblogic 10.3.1.0中。我遇到了外部属性文件的问题。在Jboss中我可以将属性文件放入$ JBOSS_HOME / server / default / conf中,然后将它们加载到系统类路径中,我可以毫无问题地访问它们。我能够将共享库放入$ MIDDLEWAREHOME / user_projects / domains / mydomain / lib中,并将它们加载到系统类路径中,没有任何问题,但我无法加载属性文件。

有谁知道如何在Weblogic中包含外部属性文件?

谢谢,

8 个答案:

答案 0 :(得分:14)

我想出来并让它以我期望的方式运作。首先,我尝试了上述建议。如果我将一个文件夹添加到我的类路径中,或者将属性文件放在我的类路径上的文件夹中,则会拾取文件中的jar,但不会拾取属性文件。如果我将我的属性文件放在一个jar中,并将它们放在我的类路径上的一个文件夹中,一切正常。但是每次做出改变时我都不想让我的文件变成jar。以下是我的环境中的作品。

如果我将属性文件放在%WEBLOGIC_HOME%/ user_projects / domains / MYDOMAIN中,那么它们就会被拾取,而不必放在jar文件中。

答案 1 :(得分:2)

在weblogic中,jar将从lib加载,非jar文件将从域文件夹中加载

答案 2 :(得分:2)

有很多方法可以从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);

    //Note that the propFilePath is a -Dparam defined below in the setDomainEnv
    prop.load(iStream);
    prop.getProperty(“dbuser”);

  } catch (FileNotFoundException e) {

    e.printStackTrace();

  } catch (IOException e) {

    e.printStackTrace();

  }
}
}

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

set JAVA_OPTIONS=%JAVA_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties

答案 3 :(得分:1)

您可以在类路径上设置目录,并将自定义属性文件放在该文件夹/目录中。这样,整个目录和属性文件将在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

希望这有帮助。

答案 4 :(得分:0)

虽然这可能需要额外的努力,但如果您将文件放入JAR中,然后将它们放入lib目录中,那么这应该可行。

答案 5 :(得分:0)

您可以在域文件中查看setDomainEnv.cmd(Windows)或setDomainEnv.sh(Unix / Linux)脚本,并查看在域的CLASSPATH中添加的位置。然后只需选择一个文件夹并将属性文件放在那里,如果您想要属性文件的特定位置,只需编辑脚本。

答案 6 :(得分:0)

最灵活的方法是使用weblogic部署计划和通用文件加载覆盖

External properties file with Weblogic

http://docs.oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188

答案 7 :(得分:0)

这是我的解决方案:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        InputStream is = null;

        String urlExte = System.getenv("DOMAIN_HOME")+"/properties/SmsBalanceadoWS/";


        org.springframework.core.io.Resource resource = ctx.getResource( "file:"+urlExte+"/application.properties");
        try {
            is = resource.getInputStream();
        } catch (IOException e) {
            LOGGER.debug("ERROR"+ e.getMessage());
        }