我正在将我之前在JBOSS中部署的J2ee应用程序部署到Weblogic 10.3.1.0中。我遇到了外部属性文件的问题。在Jboss中我可以将属性文件放入$ JBOSS_HOME / server / default / conf中,然后将它们加载到系统类路径中,我可以毫无问题地访问它们。我能够将共享库放入$ MIDDLEWAREHOME / user_projects / domains / mydomain / lib中,并将它们加载到系统类路径中,没有任何问题,但我无法加载属性文件。
有谁知道如何在Weblogic中包含外部属性文件?
谢谢,
答案 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());
}