Right, the flow should be as: when mybuddy feaure enabled rand password
generated and saved in db, then on subsequent calls to load settings / pass
from db

George

On Sunday, April 1, 2012, Mircea Carasel <[email protected]> wrote:
> Settings not loaded from database? Settings are loaded from database as
long as you save them there...but if you don't, settings will be retrieved
from Spring.
> Therefore, IMO, there is no point to inherit prototype behavior for child
settings. In this case, every time you call getSettings, initialize method
will be called again and again, and the test
> mircea
>
> On Sun, Apr 1, 2012 at 4:44 PM, George Niculae <[email protected]> wrote:
>>
>> 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/
>
>
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev/

Reply via email to