Properties File

Are properties file secure? Would someone over the net be able to obtain my properties file used for a JSP page?

It depends on where you put it. With JSPs you can use Java to access the server's file system. This means you can place the properties files anywhere you want. If you place the properties file in a place accessable to the web, like under webapps folder in Tomcat, than the rest of the world can view it if they find its name. (note, the user will not see your JSP code when they access your site, they will only see the HTML output, so they will not automatically know the name of the properties file...) If you put the properties file outside the web-accessable context, like in a WEB-INF directory, then you can still access it through the JSP, and it will remain un-reacheable from the internet.

Similar Messages

  • Error reading properties file upon deployment

    hi. i'm still relatively new with regards to the Java programming language. in any case... i am developing a simple project wherein the application has to make a database connection to a server. the application is finished already however.. i am having problems deploying it.
    my project has a "resources" package containing the file "config.properties" which contains various information (connection details among others). correct me if im doing something wrong, but in deploying in, i copied the "dist" folder of my compiled code and then tried to run the java exe independently which resulted in an error. i already tried copying the "config.properties" file to the dist folder and even creating a "resources\config.properties" file but it still results in an error. could you please help me figure out how to deploy the application with the properties file. the code i used in referencing my .properties file is as follows:
    Properties configFile = new Properties();
                configFile.load(this.getClass().getClassLoader().getResourceAsStream("Resources\\config.properties"));
                String username = configFile.getProperty("username");
                String password = configFile.getProperty("password");
                String url = configFile.getProperty("url");
                String dbtype = configFile.getProperty("dbtype");
                Class.forName(dbtype);
                conn = DriverManager.getConnection(url, username, password); thanks in advance. ^^

    thank for the help mangst. i guess the IO approach is also applicable ^^; i changed my code to:
    configFile.load( new FileInputStream( ".\\resources\\config.properties" ) );but i had a little trouble in debugging it since it starts the file search from the main project directory. however it works fine upon deployment. ^^; thanks again.
    Edited by: xnofate on Sep 23, 2008 6:21 PM

  • Error reading Properties file

    I have a main method which i am using to call a servlet located in the same Development Component. Until recently i had the servlet location hard coded and it was working without issues. Now i decided to make the location configurable. For this i created an sap.application.global.properties file in the EAR DC which contains the WAR of this DC.
    The contents of the above file are as follows:
    SAP application properties
    SERVLET.LOCATION=http://<server-name>/ControllerServlet/servlet/com.nike.xapps.eqptsp.swem.controller.ControllerServlet
    The code i am using in the main method to call this properties file and access the property is as follows:
    Context ctx = new InitialContext();
    ApplicationConfigHandlerFactory cfgHdlr = (ApplicationConfigHandlerFactory)ctx.lookup("ApplicationConfiguration");          
    Properties props = cfgHdlr.getApplicationProperties();
    String servlet = props.getProperty("SERVLET.LOCATION");
    contained in a try...catch block.
    On dubugging i get a NoInitialContextException repeatedly in the statement where the lookup is performed.
    These are all the additions i have made for reading this properties file. Does anyone know if there is anything more that needs to be done for this to work.
    Thanks,
    Murtaza.

    thank for the help mangst. i guess the IO approach is also applicable ^^; i changed my code to:
    configFile.load( new FileInputStream( ".\\resources\\config.properties" ) );but i had a little trouble in debugging it since it starts the file search from the main project directory. however it works fine upon deployment. ^^; thanks again.
    Edited by: xnofate on Sep 23, 2008 6:21 PM

  • Display data on ADF table using a VO binded to a message.properties file

    Hi,
    I want to display data in a JSPX page using ADF table which is based on a ViewObject. The attributes of the ViewObject should get it's value from a abc.properties file(static file).How can i achieve this.
    thanks in advance.
    regards,
    Himanshu.

    Hi Himanshu,
    When you create a VO based on static values, all of the records from your VO are generated into the MessageBundel.properties file like this
    devguide.entity.ViewObj.SL_0_0=1
    devguide.entity.ViewObj.SL_0_1=<val1>
    devguide.entity.ViewObj.SL_0_2=<val2>
    devguide.entity.ViewObj.SL_1_0=2
    devguide.entity.ViewObj.SL_1_1=<val1>
    devguide.entity.ViewObj.SL_1_2=<val2>
    You could add more lines to the properties files maintaining the same pattern. Also noticed that you can read all the values from a CSV file as well.
    The last resource is to programmatically read the file and start creating new rows on the VO, which won't use any of the declarative tools for VOs.
    -Juan Camilo.

  • Reading values from properties file

    Hi All,
    I am in need of a help from you all.I have a login.jsp which gets username and password as user input and checks in the servlet that if it was admin and admin it will take to index.jsp and if it was other than admin and other users it should take to index1.jsp.For now i am using an if condition to check the values and to dispatch the request.I need to use a properties file for this and need to check by getting the values from the properties file.And also it should check for each entry in properties file and if it finds any matches it should take to the corresponding page.
    Please help me in achieving this.
    Thanks,
    laxmi

    Hi All,
    I am in need of a help from you all.I have a login.jsp which gets username and password as user input and checks in the servlet that if it was admin and admin it will take to index.jsp and if it was other than admin and other users it should take to index1.jsp.For now i am using an if condition to check the values and to dispatch the request.I need to use a properties file for this and need to check by getting the values from the properties file.And also it should check for each entry in properties file and if it finds any matches it should take to the corresponding page.
    Please help me in achieving this.
    Thanks,
    laxmi

  • I am facing problem while reading values from properties file ...i am getting null pointer exception earlier i was using jdeveloper10g now i am using 11g

    i am facing problem while reading values from properties file ...i am getting null pointer exception earlier i was using jdeveloper10g now i am using 11g

    hi TimoHahn,
    i am getting following exception in JDeveloper(11g release 2) Studio Edition Version 11.1.2.4.0 but it works perfectly fine in JDeveloper 10.1.2.1.0
    Root cause of ServletException.
    java.lang.NullPointerException
    at java.util.PropertyResourceBundle.handleGetObject(PropertyResourceBundle.java:136)
    at java.util.ResourceBundle.getObject(ResourceBundle.java:368)
    at java.util.ResourceBundle.getString(ResourceBundle.java:334)
    at org.rbi.cefa.master.actionclass.UserAction.execute(UserAction.java:163)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

  • Unable to load properties file from filesystem

    Hi,
    I have a client swing-applicatiion packaged in a jar-file. The application uses some resource files, including a xxxx.properties file to set defaults for the application. All resource files are included in the jar file and everything works as expected. I load the xxxx.properties file as follows:
    is_ = getClass().getResourceAsStream("/resources/xxxx.properties");
    Because it is not possibl to change any property values inside the jar-file without recreating this jar-file, i want to exclude the xxxx.properties file from the jar-file and put it in the folder containing the jar-file.
    So i have:
    drive:/folder/app.jar
    drive:/folder/xxxx.properties
    Now i read the xxxx.properties file from disk in stead of the 'resouce'-folder within my application (jar):
    is_ = getClass().getResourceAsStream("drive:/folder/xxxx.propoerties");
    but it doesn't work, the file isn't found.
    What am i missing here?
    Any suggestions?

    The best way to approach this is to include the properties file in the Jar as you originally did. If the user changes any property, save the entire set of properties to a sub-directory of user.home (perhaps based on the package name of the main class). Check for the copy in user.home before using the 'default' properties built into the Jar.
    Other places/ways to store the changed information.
    - java.util.prefs.Preferences
    - Assuming the app. has a GUI and can be deployed over a network, the JNLP API PersistenceService. Here is a demo. of the PersistenceService (http://pscode.org/jws/api.html#ps).
    Edit 1:
    I did not at first notice that this post was in Java Applet Development.
    <li> Applets can also (theoretically) use cookies to store information. This is prone to failure when users disable cookies.
    <li> To store information on the local file system (e.g. in user.home) or to use Preferences (AFAIU) would require trusted code.
    <li> If the user has the Next Generation Java Plug-In (Java 1.6.0_10+) it is possible to leverage the JNLP API services in an embedded & sand-boxed applet.
    Edited by: Andrew Thompson on Feb 1, 2011 9:32 AM

  • JRE7Update25 Deployment Properties File Not Working And Cant Disable Next Gen Plugin

    Good Day
    Our organisation needs to deploy JRE7U25 to over 4000 workstations. Our desktops are running the following Windows and IE combinations:
    WinXP 32 Bit/IE7
    WinXP 32 Bit/IE8
    Win7 32 Bit/IE8
    Win7 32 Bit/IE9
    Win7 64 Bit/IE8
    Win7 64 Bit/IE8
    We use the 32bit JRE installer across all environments and all IE browsers use 32Bit IE. On all of our environments the Deployment.properties and config files no longer work due to what appears to be a bug in the JRE7U25 installer. Our deployment files are as follows:
    Deployment.config
    deployment.system.config=C:\WINDOWS\Sun\Java\Deployment\deployment.properties
    deployment.system.config.mandatory=true
    Deployment.properties
    deployment.security.level=MEDIUM
    deployment.security.level.locked=
    deployment.javaws.autodownload=NEVER
    deployment.javaws.autodownload.locked=
    deployment.security.mixcode=HIDE_RUN
    deployment.security.mixcode.locked=
    deployment.console.startup.mode=HIDE
    deployment.console.startup.mode.locked=
    Both files are being copied to the following location:
    C:\Windows\Sun\Java\Deployment
    After the installer runs and deployment files are copied to the workstation the deployment.properties and config files look like this:
    Deployment.config
    deployment.system.config=C:\WINDOWS\Sun\Java\Deployment\deployment.properties
    deployment.system.config.mandatory=true
    Deployment.properties
    #System Deployment Properties
    #Mon Jul 01 12:29:20 CAT 2013
    deployment.security.level=MEDIUM
    I have tried changing the deployment.config file as follows in an attempt to fix this to no avail:
    1. deployment.system.config=C:\\WINDOWS\\Sun\\Java\\Deployment\\deployment.properties
        deployment.system.config.mandatory=true
    2. deployment.system.config=C:\\WINDOWS\\Sun\\Java\\Deployment\\deployment.properties
        deployment.system.config.mandatory=false
    3. deployment.system.config=C:\WINDOWS\Sun\Java\Deployment\deployment.properties
        deployment.system.config.mandatory=true
    4. deployment.system.config=C:\WINDOWS\Sun\Java\Deployment\deployment.properties
        deployment.system.config.mandatory=false
    5. deployment.system.config=file\:C\:/WINDOWS/Sun/Java/Deployment/deployment.properties
    None of the above mentioned works. So all our required settings in the deployment.properties file are being overwritten when opening the Java console? Our other major problem is that Changing the registry key to 0 in order to disable the next generation plugin does not disable the next generation plugin in Jre at the usual location as it worked for us machine wide (across multiple profiles for JRE6U29):
    [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\10.25.2]
    "UseNewJavaPlugin"=dword:00000000
    ^^I have observed on a fresh install of JRE7U25 that the above mentioned registry key no longer exists in this version so a computer wide disablement of this option is no longer possible via the registry.
    On our 32Bit and 64bit machines running the 32 bit JRE 7U25 client when we disable the next generation plugin it keeps enabling itself again. Even when we run the javacpl.exe to run as administrator by changing the compatibility settings and disabling the next generation plugin it enables itself again. This is a huge problem for us because our company Oracle web based applications need this plugin to be disabled in order to run the apps properly.
    These are major obstacles for our deployment as we desperately require assistance or any advice in addressing these issues as there appear to be numerous bugs with the JRE7U25 release. Thank you in advance.
    Update 7 July 2013:
    I have observed that if you have the following options in your Deployment.config file it doesn't allow our java webstart apps which use jnlp extensions to run.
    1. deployment.system.config=C:\\WINDOWS\\Sun\\Java\\Deployment\\deployment.properties
        deployment.system.config.mandatory=true
    2. deployment.system.config=C:\\WINDOWS\\Sun\\Java\\Deployment\\deployment.properties
        deployment.system.config.mandatory=false
    3. deployment.system.config=C:\WINDOWS\Sun\Java\Deployment\deployment.properties
        deployment.system.config.mandatory=true
    4. deployment.system.config=C:\WINDOWS\Sun\Java\Deployment\deployment.properties
        deployment.system.config.mandatory=false
    The jnlp file association is also broken on Windows XP workstations with JRE7U25. We are having to manually associate the .jnlp file extension with javaws.exe on workstation for Web start apps or else users cannot lauch JRE whn clicking on .jnlp links.
    The only Deployment.config syntax which allows our Webstart applications to run is as follows:
    deployment.system.config=file\:C\:/WINDOWS/Sun/Java/Deployment/deployment.properties
    What a mess!

    I don't have an answer to the problem, but I am having problems with the system level deployment.properties file and IE9 on Windows 7 32/64bit.
    Starting with version 13, the IE plugin seems to igonore the system level deployment.properties file in favor of the user level deployment.properties file. When I open the Java Control Panel, the settings are correct per the system deployment.properties file. Currently to get the Java Plugin to work reliably in IE9 I have to set the following:
    _JAVA_OPTIONS = -Djava.net.preferIPv4Stack=true
    Disable caching
    Set the proxy to Direct Connection.
    If I set the _JAVA_OPTIONS as an environment variable and the other two in the system deployment.properties file, Firefox works fine, but IE wont load either of the Java tests. If I removed the system deployment.properties files and configure the user deployment.properties file, both IE and Firefox work fine.
    I find it interesting that if I set the configuration through the control panel, then apply the system deployment.propteries file, the user deployment.properties file reverts to defaults when the system file is removed.

  • How Can i specify multiple server names in rwservlet.properties  file?

    How Can i specify multiple server names in rwservlet.properties file without clustering?
    I am using oracle 10g Application server. we have 3 servers Repsvr1, RepSvr2 and RepSvr3. Now i need to configure rwservlet.properties file to point to these servers based on any running report. i got 3 keymap files with reports info.
    Sample entry in the key map file is:
    key1: server=Repsvr1 userid=xxx/yyy@dbname report=D:\Web\path1\path2\reports\Report1.rdf destype=cache desformat=PDF %*
    key2: server=Repsvr2 userid=xxx/yyy@dbname report=D:\Web\path1\path3\reports\Report2.rdf destype=cache desformat=PDF %*
    rwservlet.properties file letting me to enter only one servername. Even though i merged all 3 keymap files into 1, still i have the server name issue. If i leave the server to the default name still i am getting the below error.
    REP-51002: Bind to Reports Server Repsvr1 failed. However, i know the default rep_<servername> would be used incase we dont have SERVER=<value> parameter in the rwservlet.properties file.
    If i specify the servername in the rwservlet.properties file then only Repsvr1 reports are working fine and other 2 server reports are giving the same error like
    REP-51002: Bind to Reports Server <<Server Name>> failed.
    how can i configure the info which will work all 3 reports. 2 Port servers are invoking using oracle forms and report server is invoking using ASP pages.
    If i specify Server name & Key map file in rwservlet.properties one at a time, all the reports are working without any error, whenever i am trying to integrate all 3 to workable i am getting binding error. if i exclude the server from rwservlet.properties still i am getting the same error.

    My RELOAD_KEYMAP setting is YES only.As i said If i specify Server name & Key map file in rwservlet.properties one at a time, all the reports are working without any error.
    keymap file entries
    key1: server=Repsvr1 userid=xxx/yyy@dbname report=D:\Web\path1\path2\reports\Report1.rdf destype=cache desformat=PDF %*
    key2: server=Repsvr2 userid=xxx/yyy@dbname report=D:\Web\path1\path3\reports\Report2.rdf destype=cache desformat=PDF %*
    If i use http://server.domain:port/reports/rwservlet? cmdkey = key1 should bring the report from Repsvr1 and http://server.domain:port/reports/rwservlet? cmdkey = key2 should bring the report from Repsvr2, but i am getting an error from Repsvr2 saying that REP-51002: Bind to Reports Server repsvr2 failed.
    Only Servername Repsvr1 is in rwservlet.properties file. Now what is the best option to by pass the server from rwservlet.properties file and should be from keymap file. if i comment server name in rwservlet.properties file still i am getting REP-51002: Bind to Reports Server <<Server Name>> failed error for both keys.

  • How do I read a properties file in WEB-INF without hard-coding a path?

    Hello,
    How do I read a properties file in WEB-INF without hard-coding a path?
    I tried:
    Properties properties = new Properties();
    properties.load(new FileInputStream("db.properties"));
    driver = properties.getProperty("driver");
    but it cannot find the db.properties file.
    Thanks for the help.
    Frank

    Don't use a File to read those properties.
    Better to use the servlet context and
    getResourceAsStream() method to get the InputStream.
    It'll look for any file in the CLASSPATH. If you put
    that properties file in the WEB-INF/classes directory
    you'll have no problems, even if you deploy with a
    WAR file.Completely agree with this approach. Just have to mention the following for completeness
    according to the API,
    "This method is different from java.lang.Class.getResourceAsStream, which uses a class loader. This method allows servlet containers to make a resource available to a servlet from any location, without using a class loader. "
    So using this method, the resource can be anywhere under your web context, not just in the classpath.
    Cheers,
    evnafets

  • Using Multiple Properties Files in Struts Framework

    Hi Everybody!
    I just to know how to use a multiple message-resources files in a Struts Framework.
    I've 2 properties file :
    1. ApplicationResources_A.properties
    2. ApplicationResources_B.propertiesI put the files under WEB-INF/classes dir.
    My configuration in struts-config file something like below:
    <!--  Begin Testing -->
         <message-resources key="A" parameter="ApplicationResources_A" />
         <message-resources key="B" parameter="ApplicationResources_B" />
    <!--  End Testing -->
    </struts-config>
    if my JSP code is like below , this error is thrown:
    org.apache.jasper.JasperException: Cannot find message resources under key A
      <tr>
        <td width="17%">Language A</td>
        <td width="83%"><bean:message bundle="A" key="user.lang.desc"/></td>
      </tr>
      <tr>
        <td width="17%">Language B</td>
        <td width="83%"><bean:message bundle="B"  key="user.lang.desc"/></td>
      </tr>
    but  if I change the  JSP code like below it  work fine:
      <tr>
        <td width="17%">Language A</td>
        <td width="83%"><bean:message key="user.lang.desc"/></td>
      </tr>
      <tr>
        <td width="17%">Language B</td>
        <td width="83%"><bean:message  key="user.lang.desc"/></td>
      </tr>
    In this code , I dont know  which resources file is used.
    So how do I solve this problem. Thanks you.

    I have defined the following:
    struts-config.xml
    <message-resources key="ldap" parameter="com/project/struts/ldap"/>
    Action.java
    In execute method:
    MessageResources messageResources= MessageResources.getMessageResources("com/project/struts/ldap");
    System.out.println("INITIAL_CONTEXT_FACTORY"+messageResources.getMessage("INITIAL_CONTEXT_FACTORY"));
    and it is working, however I have to change "com/project/struts/ldap" value in Action.java file whenever there is any change in name or location of ldap.properties.
    Can I access this properties in such way that I don't have to change parameter path manually in Action.java (modifying in struts-config.xml is okay)? like access through key="ldap" or something.
    Thanks and regards,

  • How to load a properties file?

    Hello Everyone,
    We are experiencing difficulties when trying to load a properties file from a directory other then the one where the servlet is located. We are using the following code for this purpose:
    private final String PROP_FILE_NAME = "my.properties";
    Properties props = new Properties();
    try {
    props.load(getClass().getResourceAsStream(codeBase + PROP_FILE_NAME));
    } catch(IOException e) {
    //handle error ...
    where codeBase is either physical directory path to the properties file or the URL. In either case we get a NullPointer exception which means that file is not found. But when we copy the properties file into the same directory where the servlet resides, everything works fine.
    Does anybody have an idea as to how to resolve our problem?
    Any help will be greatly appreciated!
    Thanks in advance!
    Y.M.

    URLs try to address this issue for cross-platform file reference.
    I'd try doing something like:
    URL u = new URL(codeBase + PROP_FILE_NAME);
    props.load(getClass().getResourceAsStream(u));
    Regards,
    Eric

  • How to load a .properties file by giving relative path in a JSP file.

    Hey guys,
    I'm trying to load a .properties file in a JSP using relative path...
    It is not taking the properties file..
    What is the problem...?
    Any solution..?
    Thanks a lot.

    Yes I tried that also.
    Your path was something like this ?
    http://localhost:8080/Database/a.properties ?
    Whether this path will change after client installation ? if no then what's the problem ?
    For client side installation how you are going to set your conf directory for your application ?
    You are not going to give client installation page ?which will have all the values to be set like conf path. database,user name(s),log folder,temp folder etc ? Why you are keeping everything on server ?
    Check if this is useful,
    String context = request.getContextPath();
    String rmtAdd = request.getRemoteAddr();
    String host = request.getRemoteHost();
    out.println("http://"+rmtAdd+context+"<BR>");
    out.println("http://"+host+context);
    "http://"+rmtAdd+context
    Edited by: kanad on Jan 12, 2008 1:29 PM

  • Static lookup lists:read data from a Java *.properties file

    Hi
    i need to make static lookup lists i am using read data from a Java *.properties file
    i am using the Class "PropertyFileBasedLookupViewObjectImpl" that wrote by Steve Muench in ToyStore.
    but i need to use the default language for that i update the loadDataFromPropertiesFile()
    method to find the correct properties file
    String temp=Locale.getDefault().getLanguage();
    String propertyFile =
    getViewDef().getFullName().replace('.', '/')+"_"+temp+ ".properties";
    the problem:
    For English(TEST_en.properties) it is good and working
    For Arabic(TEST_ar.properties) read from correct file _ar.properties
    but the dispaly character is wrong
    When Debug
    In the File 1=&#1583;&#1605;&#1588;&#1602;
    In debug 1=/u32423

    Depending on your use case you can either use a programmatic VO or directly expose the JV class as a data control.
    http://docs.oracle.com/cd/E18941_01/tutorials/jdtut_11r2_36/jdtut_11r2_36.html

  • Problem in loading a Properties File

    Following is my program which is actually reading a Properties file from a specific location and saving it latter. The program is able to save the Properties file but gives NullPointerException while reading it back.
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
    import com.server.config.ConfigurationException;
    import com.server.config.SimpleNetworkConfigurationManager;
    public class Test {
         private static final Properties DEFAULT_CONFIGURATION;
         private static final String CONFIGURATION_FILE = "config/server_config.cfg";
         protected Properties m_config;
         static {
              DEFAULT_CONFIGURATION = new Properties();
              DEFAULT_CONFIGURATION.setProperty("ServerName", "Utility Server");
              DEFAULT_CONFIGURATION.setProperty("Host", "localhost");
              DEFAULT_CONFIGURATION.setProperty("Port", "1100");
         public Test(){
              try {
                   loadConfiguration();
              } catch (ConfigurationException e) {
                   //TODO: Log error message
                   System.out.println("Could not load Configuration; Reason: "+e.getMessage());
                   this.m_config = new Properties();
                   this.m_config.putAll(DEFAULT_CONFIGURATION);
         public Map getAllConfigurationParameters() {
              return m_config;
         public Set getConfigurationKeys() {
              return m_config.keySet();
         public Object getValue(String configurationParameter) {
              return m_config.getProperty(configurationParameter);
         public void loadConfiguration() throws ConfigurationException{
              try {
                   this.m_config.load(new FileInputStream(CONFIGURATION_FILE));
              } catch (FileNotFoundException e) {
                   throw new ConfigurationException(e);
              } catch (IOException e) {
                   throw new ConfigurationException(e);
         public void saveConfiguration() throws ConfigurationException {
              FileOutputStream fos = null;
              try {
                   File file = new File(CONFIGURATION_FILE);
                   file.createNewFile();
                   fos = new FileOutputStream(file);
                   this.m_config.store(fos,"Utility Server Configuration");
              } catch (FileNotFoundException e) {
                   throw new ConfigurationException(e);
              } catch (IOException e) {
                   throw new ConfigurationException(e);
              }finally{
                   if (fos!=null){
                        try {
                             fos.close();
                        } catch (IOException e) {
                             //ignore
                        fos = null;
         public void setConfigurationParameters(Properties configurationParameters) {
              this.m_config = new Properties(configurationParameters);
         public String setConfigurationParameter(String param, String value) {
              return (String)this.m_config.setProperty(param, value);
         public static void main(String[] args) {
              Test configManager = new Test();
              try {
                   configManager.saveConfiguration();
              } catch (ConfigurationException e) {
                   e.printStackTrace();
    }The Exception is as follows:
    Exception in thread "main" java.lang.NullPointerException
         at Test.loadConfiguration(Test.java:52)
         at Test.<init>(Test.java:29)
         at Test.main(Test.java:92)
    Please help me. I am unable to understand why is it happening. May be that I am doing some silly mistake.

    dhirendra_logicon wrote:
    The Exception is as follows:
    Exception in thread "main" java.lang.NullPointerException
         at Test.loadConfiguration(Test.java:52)
         at Test.<init>(Test.java:29)
         at Test.main(Test.java:92)
    Please help me. I am unable to understand why is it happening. May be that I am doing some silly mistake.Well, obviously, m_config is null. You cannot call a method on a null value.

  • Doubts in reading a '.properties' file

    Hi All,
    I have a doubt regarding properties file from which I am reading some key-values. Now I have few different keys (4-5) having same value .e.g.
    key1=value1
    key2=value1
    key3=value1
    key4=value1
    key5=value1
    Now I need to read these keys from different places and I also need to update the value to say 'value2' for all the keys e.g.
    key1=value2
    key2=value2
    key3=value2
    key4=value2
    key5=value2
    Now, since i need to update the values of all the keys, I am thinking of having another key-value pair (e.g. key=value1) in the same property file, and using the value of this key as value for all the keys displayed above. So that when I update the value of this key ( key=value2), I dont need to update the values of all the keys, since those keys will be reading the values from this key's value.
    I hope i am clear with this explanation.... ;-)
    My first question is, 'IS IT POSSIBLE' ???
    If yes, then how????
    Thanks in advance
    Inder Jeet Singh

    The following little class is from my old bag of tricks:import java.util.Properties;
    public class XProperties extends Properties {
         public static final String BEG= "${";
         public static final String END= "}";
         public XProperties() { super(); }
         public XProperties(Properties def) { super(def); }
         public String getRawProperty(String key) { return getRawProperty(key, null); }
         public String getRawProperty(String key, String def) {
              return super.getProperty(key, def);
         public String process(String val) {
              for (int i, j, n= val.length(); n >= 0 && (i= val.lastIndexOf(BEG, n)) >= 0 &&
                (j= val.indexOf(END, i)) >= 0; ) {
                   String pat= val.substring(i+BEG.length(), j);
                   String sub= super.getProperty(pat);
                   if (sub != null) {
                        val= val.replaceAll("\\Q"+BEG+pat+END+"\\E", sub);
                        n= val.length();
                   else
                        n= i-1;
              return val;
         public String getProperty(String key) { return getProperty(key, null); }
         public String getProperty(String key, String def) {
              String val= super.getProperty(key);
              return val == null?def:process(val);
    }If you use an XProperties object instead of a Properties object
    you can do the following in your .properties file:key= value1
    key1= ${key}
    key2= ${key}
    key3= ${key}
    key4= ${key}
    key5= ${key}... if you want to change the value, all you have to do is change the
    value of the 'key=value1' line.
    kind regards,
    Jos

Maybe you are looking for

  • Convert flash drive for Windows 8.1 bootcamp installation from mbr to gpt

    Trying to run Windows 8.1 pro x64 on my mid 2010 15" macbook pro. Get stuck during bootcamp installation in Windows because my partition table isn't compatible (MBR but needs to be GPT). My hard drive seems to be Logical partitions/volume etc, while

  • Dual Powermac G5 vs Mac mini Intel Duo

    I'm sure this has been discussed already, but I would some more input on this. I am looking to upgrade to a faster Mac. I am currently running a G4 1.25 DP with 2Gigs of RAM. It's a fine machine, but I would like to take advantage of some of Apple's

  • Having problem making my program play the sound i want it to play...

    Ok, im new at this so bare with me (and my spelling)... i've been trying to make my program play a musicfile during the actual program... and trust me, i've tried so many times... after the last try i get the errormessage "cannot find symbol" for 2 t

  • IMac Startup Mysteriously Turns On Sony Stereo Receiver

    Yup. That's right. Every time I start up my new 24" iMac, my 10-year-old Sony home theater system switches on as well, right after the chime. There are no wires or any other kind of connection between the two. There are no peripherals attached. They

  • Very basic query

    Hi, Apologies in advance for the very basic question I am about to ask but I don't know where to start! I am (attempting) to use dreamweaver for the first time to create a very basic web page. All that I require is a front page that is password prote