17

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

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

谢谢,

4

8 回答 8

16

我想通了,让它按我期望的方式工作。首先,我确实尝试了上述建议。如果我将一个文件夹添加到我的类路径中,或者将属性文件放在我的类路径上的文件夹中,则文件中的 jars 会被拾取,但不会拾取属性文件。如果我把我的属性文件放在一个罐子里,然后把它们放在我的类路径上的一个文件夹中,一切正常。但是我不想每次进行更改时都将我的文件放入 jar 文件中。以下适用于我的环境。

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

于 2009-08-12T14:28:20.763 回答
2

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

于 2013-02-18T09:47:57.130 回答
2

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

    //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 argumenttoJAVA_OPTIONS

set JAVA_OPTIONS=%JAVA_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties
于 2014-03-25T23:17:43.660 回答
1

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

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

    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");

希望这可以帮助。

于 2015-04-11T02:30:44.567 回答
1

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

带有 Weblogic 的外部属性文件

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

于 2017-03-07T20:18:01.370 回答
0

尽管这可能需要一点额外的努力,但如果您在将文件放入 JAR 之前将它们放入该lib目录,那应该可以。

于 2009-08-07T17:22:29.123 回答
0

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

于 2009-08-07T17:22:52.053 回答
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());
        }
于 2017-11-21T13:09:03.860 回答