On 14-Jan-2013, at 1:14 PM, Frank Zhang <[email protected]> wrote:
>>
>>> From the url mapping it seems to be used for mycloud which is obsolete
>>> I think
>>
>> Should we remove it and get rid of the servlet class then?
>
> Chiradeep and Edison are right person for this question
Comment on this please, Chiradeep or Edison?
>
>>
>>> _pluginsMap is non-static but s_locators is. ComponentLocator.
>>> getLocator which essentially calls ComponentLocator
>>> .getLocatorInternal will synchronize on s_locators, that means
>>> ComponentLocators having the same name should not be initialized twice.
>> So pluggable services twice initialized should be caused by some other
>> issue.
>>
>> Looking at the code, we are getting a component by
>> ConfigurationServer.Name and then by ManagementServer.Name, and from
>> debugging earlier I'd found the issues with this code;
>>
>> ConfigurationServer c =
>> (ConfigurationServer)ComponentLocator.getComponent(ConfigurationServ
>> er.Name);
>> //ConfigurationServer c = new ConfigurationServerImpl();
>> try {
>> c.persistDefaultValues();
>> s_locator =
>> ComponentLocator.getLocator(ManagementServer.Name);
>> ManagementServer ms =
>> (ManagementServer)ComponentLocator.getComponent(ManagementServ
>> er.Name);
>
> Then we always have two copies of each singleton. It didn't cause problem
> before because most time we use
> ComponentLocator.getComponent(ManagementServer.Name)
>
>>
>>> I don't know where does our Spring IOC get initialized, but if
>>> ComponentLocator is loaded by spring with a name other than
>>> ManagementServer.Name, then there would be two copies of
>>> ComponentLocator which load all plugins twice
>>
>> For javelin ComponentLocator is no more and starting that we will use spring
>> DI and for getting components without @Inject I've seen usage of a new
>> ComponentContext.
>>
>> Regards.