Skip to main content

Reload properties files without need to restart application

Properties files are the location where you most probably stores your configuration values and other that does not changes over time.

What if you have encountered with situation where you need to change your properties file and your application very large to restart/build ?

Apache has provides very beautiful util where you can reload properties file without need to restart your application.

It is part of Apache commons configuration package.

Your code will look like


I have removed try-catch block are removed for simplicity.
Below line reads your properties file from class-path

PropertiesConfiguration configuration = new PropertiesConfiguration("test-config.properties");


Here is the main part of this utility where we are specifying time period after which property file will be reloaded if it is changed. Time period is in milisecond.

configuration.setReloadingStrategy(new FileChangedReloadingStrategy());


Why FileChangedReloadingStrategy ?

   It looks for last modified date of properties file and and check whether it is changed since last access. If yes, it reloads the property once again. But we aware that it does the disk read operation and we might fall into concurrency issue. So they have introduce time delay after which it will check for last modified data and reload only if it has changed otherwise keep it as it is.

Default refresh delay is 5000 ms. You could change it in following way

new FileChangedReloadingStrategy().setRefreshDelay(10000);





Sources;
https://commons.apache.org/proper/commons-configuration/javadocs/v1.10/apidocs/index.html?org/apache/commons/configuration/PropertiesConfiguration.html
 



Popular posts from this blog

Share data between Iframe and its Parent using JQuery

There could be requirement that you have to pass variables values to Iframe from parent or in other scenario you have to pass values from Iframe to its parent.I am going to show simple example of above situation with the help of JQuery.
           Support we have parent HTML page having iframe included like below

<html> <body> <input id="parentValue" type="text" value="I am from Parent !" /> <iframe src="domainurl/relativepath" id="iframe"></iframe> <script> $(document).ready(function() { //code to take value from child iframe var childValue = $("#iframe").contents().find("#childValue").val(); alert(childValue); }); </script> </body> </html> 
        and we have frame code like below
<html> <body> <input id="childValue" type="text" value="I …

Spring Default Limit for Collection and Array is 256

If you are working in Web Application Development then you may stuck or already had ,then you will get mad of getting this error


java.lang.ArrayIndexOutOfBoundsException:Arrayindexoutofrange256
How this error emanates in Spring?

i will explain you with example.Suppose you are adding Values in List in JSP using JSTL tag or other.
This list is in Form(HTML).When you POST this form,In behind Stage,Spring does binding of Object and List if present.

But wait...
In Spring,Default limit for array and collection growing is 256.

Why this limit is Set?

seldom you have to send List size greater than this limit.
Spring has set this limit to avoid notable OutOfMemoryErrors in case of large indexes.

So,than What if i want to set Collection greater than this size?

I had told earlier,spring does binding behind.If we tell spring to increase it's size or set collection size behalf of spring.
You you can do it.

We have initBinder,  in Spring  it is called when spring does the binding mechanism
e.g @Mod…