I don't think this logic stands, from what I understand you'll see same
behaviour when restarting config (that is when new settings instantied).
I'd look at why settings not loaded, maybe hibernate interceptor not
applied?

George

On Sunday, April 1, 2012, Mircea Carasel <[email protected]> wrote:
> Hi,
> During investigations in 4.6 on why mybuddy is not connecting to openfire
(authorized exception) I found out that the mybuddy password is always
overwritten in sipximbot.properties and
> xmpp-account-info.xml at every "getSettings()" call
> The cause of this is that at every m_beanFactory.getBean(m_class) call
(in BeanWithSettingsDaoImpl) a new instance of a setting bean is created in
spring
> Related to ImBotSettings.java, every time when we call getSettings()
(ImBotImpl.getSettings), it is called: ImbotSettings.initialize, that
regenerated mybuddy password, given the fact that always a new instance of
BeanWIthSettings.m_settings is created
>     protected void initialize() {
>         if (StringUtils.isEmpty(getSettingValue(PA_PASSWORD_SETTING))) {
>             setSettingValue(PA_PASSWORD_SETTING,
randomAlphanumeric(PASS_LENGTH));
>         }
>     }
> BeanWithSettings.getSettings() method:
>     public Setting getSettings() {
>         if (m_settings != null) {
>             return m_settings;
>         }
>         setSettings(loadSettings());
>         initialize();
>         return m_settings;
>     }
> It will never match the mybuddy password initially stored in openfire.
> Here are the spring definitions:
> imbot.beans.xml
>   <bean id="imBotSettings"
class="org.sipfoundry.sipxconfig.imbot.ImBotSettings" parent="settingsBean">
>   </bean>
> parent settingsBean definition:
>   <bean id="settingsBean"
class="org.sipfoundry.sipxconfig.setting.PersistableSettings"
scope="prototype" parent="beanWithSettings"
>     abstract="true">
>     <property name="modelFilesContext" ref="modelFilesContext"/>
>   </bean>
> the scope "prototype" is inherited to every child bean, such as
"imBotSettings" starting with spring 3.0:
> https://jira.springsource.org/browse/SPR-3542
> The solution here is to specifically add scope="singleton" to
"imBotSettings" definition. I added this and MyBuddy works just fine
> More than this, the scope="singleton" should be added to all child,
instantiable setting beans.
> Please let me know your thoughts, but I strongly recommend not to let
settings creation every time until when the user changes a setting value in
UI and saves settings object in database
> Thanks,
> Mircea
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev/

Reply via email to