I am new to Spring and am trying to use the ReloadableResourceBundleMessageSource class.
I am trying to use it, so we no longer need to restart our web application to change / update property files.
I have a web application (primarily using JSF) and a separate tar component that contains all my property files.
The structure of tar properties is as follows:
- CompanyOneMessages.properties
- CompanyOneMessages_fr_FR.properties
- CompanyTwoMessages.properties
- CompanyTwoMessages_fr_FR.properties
- CompanyThreeMessages.properties
- CompanyThreeMessages_fr_FR.properties
- ...
This tar is unpacked and deployed at the location on the server, which is specified as indicated in the class path in websphere configurations.
I added the following to my applicationContext-config.xml:
<bean id="messages"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:com/resource/dynamic/CompanyOneMessages</value>
<value>classpath:com/resource/dynamic/CompanyTwoMessages</value>
<value>classpath:com/resource/dynamic/CompanyThreeMessages</value>
</list>
</property>
<property name="cacheSeconds" value="1" />
</bean>
<bean id="myappMessages" class="com.myapp.resource.MyAPPMessages">
<property name="messages" ref="messages" />
</bean>
It all works great.
, .
, , applicationContext-config.xml / -.
tar .
ReloadableResourceBundleMessageSource , - ?
Update
, :
ApplicationContext-config.xml:
<bean id="messages" class="com.resource.MyAPPReloadableResourceBundleMessageSource">
</bean>
MyAPPReloadableResourceBundleMessageSource:
package com.myapp.resource;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
public class MyAPPReloadableResourceBundleMessageSource extends ReloadableResourceBundleMessageSource
{
public MyAPPReloadableResourceBundleMessageSource()
{
getResourceBundlesMessages();
setBasename("classpath:/resource/dynamic/companyOneMessages");
}
@Override
public void setBasename(String baesname)
{
System.out.println("In setBasename");
super.setBasename(baesname);
}
@Override
public void setBasenames(String[] baesnames)
{
System.out.println("In setBasenames");
super.setBasenames(baesnames);
}
private String[] getResourceBundlesMessages()
{
String[] propertiesFiles = null;
return propertiesFiles;
}
}
, , , - classpath .properties?