On 14-Jan-2013, at 1:14 PM, Frank Zhang <frank.zh...@citrix.com> 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.