在weblogic中使用外部属性文件

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

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

谢谢,

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

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

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

有一些方法可以从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); //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参数传递给JAVA_OPTIONS

设置JAVA_OPTIONS =%JAVA_OPTIONS%-DpropFileLocation = / dev / file / properties / some.properties

希望这可以帮助!

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

  • %DOMAIN_HOME%\config\文件夹中创建一个文件夹。 示例appConfig
  • 将您的自定义属性文件(比如说config.properties )放在appConfig目录/文件夹中。
  • 通过将%DOMAIN_HOME%\config\appConfigEXT_POST_CLASSPATH (此变量已在setDomainEnv.cmd文件中定义)变量,修改setDomainEnv.cmd (Windows)以在类路径中包含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"); 

希望这可以帮助。

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

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

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

Weblogic的外部属性文件

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

这是我的解决方案:

 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()); }