Spring factory beans not always initialised before being used.
- by aos
Hi,
I am using spring to initialise my beans.  I have configured a bean which I intend to use as a factory bean.
<bean id="jsServicesFactory" class="x.y.z.JSServicesFactory" />
It is a very basic class - which has 4 getter methods.  One example is 
 public final PortletRegistry getPortletRegistry() {
    PortletRegistry registry = (PortletRegistry) JetspeedPortletServices
        .getSingleton().getService("PortletRegistryComponent");
    return registry;
}
I have a 2nd bean which uses this factory beans to set one of its properties
<bean id="batchManagerService" class="x.y.z.BatchManagerService">
...
<property name="portletRegistry">
   <bean factory-bean="jsServicesFactory" factory-method="getPortletRegistry" />
</property>
     ...
When I start my server in RAD, this all works perfectly.  However when I deploy to Linux I sometimes get the following error
ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchManagerService' defined in ServletContext resource [/WEB-INF/context/root/batchManagerContext.xml]: Cannot create inner bean 'jsServicesFactory$created#70be70be' while setting bean property 'portletRegistry'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jsServicesFactory$created#70be70be' defined in ServletContext resource [/WEB-INF/context/root/batchManagerContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.apache.jetspeed.components.portletregistry.PortletRegistry x.y.z.JSServicesFactory.getPortletRegistry()] threw exception; nested exception is java.lang.NullPointerException
I have tried adding depends-on="jsServicesFactory" to my bean batchManagerService but it didn't work.
Any ideas?
Thanks