繁体   English   中英

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

[英]Spring factory beans not always initialised before being used

我正在使用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时出错:设置bean属性'portletRegistry'时,无法创建内部bean'jsServicesFactory $ created#70be70be'; 嵌套的异常是org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/context/root/batchManagerContext.xml]中定义的名称为'jsServicesFactory $ created#70be70be'的bean创建错误。 嵌套的异常是org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[公共最终org.apache.jetspeed.components.portletregistry.PortletRegistry xyzJSServicesFactory.getPortletRegistry()]引发了异常; 嵌套的异常是java.lang.NullPointerException

我试过在我的bean batchManagerService中添加depends-on =“ jsServicesFactory”,但是没有用。

有任何想法吗?

谢谢

线索在堆栈跟踪中,尽管埋在其中:

嵌套的异常是java.lang.NullPointerException

您的代码中的某些内容在Bean初始化期间引发了NPE,这正在扩展堆栈,并随即在其他异常中重新包装。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM