Spring工厂bean在使用之前并不总是初始化

时间:2010-03-16 10:52:50

标签: java spring

我使用spring初始化我的bean。我已经配置了一个我打算用作工厂bean的bean。

<bean id="jsServicesFactory" class="x.y.z.JSServicesFactory" />

这是一个非常基本的类 - 它有4个getter方法。一个例子是

 public final PortletRegistry getPortletRegistry() {
    PortletRegistry registry = (PortletRegistry) JetspeedPortletServices
        .getSingleton().getService("PortletRegistryComponent");
    return registry;
}

我有一个第二个bean,它使用这个工厂bean来设置它的一个属性

<bean id="batchManagerService" class="x.y.z.BatchManagerService">
...
<property name="portletRegistry">
   <bean factory-bean="jsServicesFactory" factory-method="getPortletRegistry" />
</property>
     ...

当我在RAD中启动我的服务器时,这一切都很完美。但是,当我部署到Linux时,我有时会收到以下错误

错误org.springframework.web.context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建在ServletContext资源[/WEB-INF/context/root/batchManagerContext.xml]中定义名称为'batchManagerService'的bean时出错:设置时无法创建内部'jsServicesFactory $ created#70be70be' bean属性'portletRegistry';嵌套异常是org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/context/root/batchManagerContext.xml]中定义的名称为'jsServicesFactory $ created#70be70be'的bean创建错误:bean的实例化失败;嵌套异常是org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[public final org.apache.jetspeed.components.portletregistry.PortletRegistry x.y.z.JSServicesFactory.getPortletRegistry()]引发异常;嵌套异常是java.lang.NullPointerException

我尝试将depends-on =“jsServicesFactory”添加到我的bean batchManagerService,但它没有用。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

线索在堆栈轨迹中,虽然深埋在其中:

  

嵌套异常是   显示java.lang.NullPointerException

代码中的某些东西在bean初始化期间抛出一个NPE,这会在堆栈中向上传播,并在其他异常中重新包装。

找出该NPE的根本原因,这应该可以解决问题。