Using external properties files in weblogic

前端 未结 8 1048
被撕碎了的回忆
被撕碎了的回忆 2020-12-24 14:53

I am working on deploying a J2ee application that I have previously been deploying in JBOSS into Weblogic 10.3.1.0. I am running into an issue with external properties file

相关标签:
8条回答
  • 2020-12-24 15:02

    You can look at your setDomainEnv.cmd (Windows) or setDomainEnv.sh (Unix/Linux) script in your domain files and see what locations are added in the CLASSPATH for your domain. Then just choose one folder and place the properties file there, if you want a specific location for your properties file just edit the script.

    0 讨论(0)
  • 2020-12-24 15:04

    There are ways to read properties file in Java from weblogic classpath

    One (Properties file located in the weblogic domain): Drop the properties file inside the Domain directory. This way the properties file is added to the weblogic classpath automatically and we can read from Java using resourceAsStream.

    Two (Properties file from a User defined location):The advantage with this approach is that the property file can reside outside the JAR or EAR file and can be modified conveniently.

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

    In the weblogic setDomainEnv (under bin) => we need to pass the location of the property file as a -D argument to JAVA_OPTIONS

    set JAVA_OPTIONS=%JAVA_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties
    
    0 讨论(0)
  • 2020-12-24 15:04

    Although it may be a little extra effort, if you put the files into a JAR before dropping them into that lib directory, that should work.

    0 讨论(0)
  • 2020-12-24 15:04

    that was my solution:

    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 讨论(0)
  • 2020-12-24 15:07

    You can set a directory on the classpath and Place your custom properties file in that folder/directory. So that, the entire directory along with property file will be on classpath. To set the directory on the classpath in weblogic 10.3.x

    • Create a folder in %DOMAIN_HOME%\config\ folder. example appConfig.
    • Place your custom property file (Let's say config.properties) in appConfig directory/folder.
    • Modify the setDomainEnv.cmd (Windows) to include appConfig in the classpath by setting %DOMAIN_HOME%\config\appConfig as value to EXT_POST_CLASSPATH(this variable is already defined in the setDomainEnv.cmd file) variable as below:

      set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
      

    You can access that file in you java code as below:

        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties");
        Properties prop = new Properties();
        prop.load(inputStream);
        String value = prop.getProperty("key");
    

    Hope this helps.

    0 讨论(0)
  • 2020-12-24 15:12

    I figured this out and have it working the way I would expect. First I did try the suggestions as above. If i added a folder to my classpath, or put the properties files in a folder on my classpath, the jars in the file were picked up, but not properties files. If i put my properties files in a jar, and put them in a folder on my classpath everything worked. But I did not want to have jar my files everytime a change was made. The following works in my env.

    If i place the properties files in %WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN then they are getting picked up, without having to be placed in a jar file.

    0 讨论(0)
提交回复
热议问题