forum link :
http://prana.herrodius.com/viewtopic.php?f=3&t=52&start=0&st=0&sk=t&sd=a
The loop :
org.pranaframework.ioc.factory.support.DefaultListableObjectFactory
public function preInstantiateSingletons():void
for (var objectName:String in objectDefinitions)
is taking items in random order from objectDefinitions, so If delegate class is computed before serviceLocator class, the service in delegate class is null.
code from of my AuthDelegate.as :
public class AuthDelegate extends AbstractBusinessDelegate implements IAuthDelegate
{
public function AuthDelegate()
{
super();
// service is "sometimes" (random behavior) null because AuthDelegate is computed before serviceLocator
// "authService" is not created yet
service = CairngormServiceLocator.getInstance().getRemoteObject( "authService" );
}
Dirty workaround to force serviceLocator object to be instantiated first :
public function preInstantiateSingletons():void {
for (var objectName:String in objectDefinitions) {
if( objectName == "serviceLocator" )
{
trace( objectName );
var objectDefinition:IObjectDefinition = objectDefinitions[objectName];
if (objectDefinition.isSingleton && !objectDefinition.isLazyInit) {
getObject(objectName);
}
}
}
for (var objectName2:String in objectDefinitions) {
if( objectName2 != "serviceLocator" )
{
trace( objectName2 );
var objectDefinition2:IObjectDefinition = objectDefinitions[objectName2];
if (objectDefinition2.isSingleton && !objectDefinition2.isLazyInit) {
getObject(objectName2);
}
}
}
}
application-context.xml