[ 
https://issues.apache.org/struts/browse/STR-3192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46893#action_46893
 ] 

Juan Carlos Blanco Martinez commented on STR-3192:
--------------------------------------------------

Because, since the messages are needed from the very first request, it makes 
sense for me to eagerly load them rather than using the lazy instantiation, 
thus the performance (I know it doesn't make a huge difference but still) won't 
be affected by the synchronization.

> Why lazy instantiation of the MessageResourcesFactory in Struts 1.2.7?
> ----------------------------------------------------------------------
>
>                 Key: STR-3192
>                 URL: https://issues.apache.org/struts/browse/STR-3192
>             Project: Struts 1
>          Issue Type: Improvement
>    Affects Versions: 1.2.7
>            Reporter: Juan Carlos Blanco Martinez
>            Priority: Critical
>             Fix For: Pending Review
>
>
> Since there is the Double-checked locking issue so we have to use 
> synchronization to guarantee the concurrent access to the following method 
> (org.apache.struts.util.MessageResources class) :
> LAZY INSTANTIATION
> public synchronized static MessageResources getMessageResources(String 
> config) {
>     if (defaultFactory == null) {
>         defaultFactory = MessageResourcesFactory.createFactory();
>     }
>     return defaultFactory.createResources(config);
> }
> Why not to use:
> EAGER INSTANTIATION
> static {
>     // Construct a new instance of the specified factory class
>     try {
>         if (clazz == null)
>             clazz = RequestUtils.applicationClass(factoryClass);
>         MessageResourcesFactory defaultFactory =
>             (MessageResourcesFactory) clazz.newInstance();
>     } catch (Throwable t) {
>         LOG.error("MessageResourcesFactory.createFactory", t);
>     }
> }
> And then:
> public static MessageResources getMessageResources(String config) {
>     return defaultFactory.createResources(config);
> }
> It would allow concurrent access to the method getMessageResources which at 
> least in my case it may be called quite a few times.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to