2009-08-07 30 views
16

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

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

感谢,

+0

下面是问题这与概念明智的这个问题大多相似。 anwser显示如何获取域路径/类路径。 http://stackoverflow.com/questions/41352916/not-able-to-load-external-properties-files-with-springboot-in-weblogic/41364735#41364735 – 2016-12-28 16:27:07

回答

14

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

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

0

虽然它可能是一点点额外的努力,如果你把文件放到一个JAR拖放到该lib目录之前,应该工作。

+0

我这样做,我把新创建的jar文件(包含我的属性文件)放在类路径中定义的lib文件夹中。这工作,我想它会,但它是不理想的,当需要做出改变时必须jar/unjar这些配置文件。这只比将耳朵文件中的属性文件包含在某处更好一些。目前它可以工作,所以我会一起寻找更好的解决方案。 – broschb 2009-08-07 21:11:56

1

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

+0

我这样做了,我把这些文件放在一个添加到classpath中的文件夹中,它没有选择任何属性文件。然而,它正在拾取我放在同一个目录中的jar文件。我不知道为什么属性文件没有被拾起。 – broschb 2009-08-07 21:10:03

2

在WebLogic罐将从lib目录加载和非jar文件将从域文件夹

+0

我必须在某处激活此行为吗?我在Windows XP上运行了一个全新的WebLogic 12c开发安装,它不会从域目录中选择upp my logback.xml! – 2013-04-18 09:33:00

1

有办法读取weblogic的classpath中

一(属性文件位于场所中的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 /文件/物业/ some.properties

希望这会有所帮助!

+1

请为您的答案添加代码示例等更多信息。 – 2014-03-25 23:35:23

+0

代码和详细说明在链接中。你的意思是它应该在这里发布吗? – 2014-03-25 23:39:48

+0

是的,因为链接可能有一天会被打破。 – 2014-03-25 23:40:49

0

您可以在类路径中设置一个目录,并将您的自定义属性文件放在该文件夹/目录中。因此,整个目录以及属性文件将位于classpath中。 要设置目录在classpath在WebLogic 10.3.x中

  • %DOMAIN_HOME%\config\文件夹中创建一个文件夹。示例appConfig
  • 将您的自定义属性文件(比如说config.properties)放在appConfig目录/文件夹中。
  • 通过设置%DOMAIN_HOME%\config\appConfig作为价值EXT_POST_CLASSPATH(这个变量在setDomainEnv.cmd文件中定义)修改setDomainEnv.cmd(Windows)中,包括在classpath 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代码的访问。

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

请添加说明。请参阅https://stackoverflow.com/help/how-to-answer – user7294900 2017-11-21 13:27:29

相关问题