我使用spring來初始化我的豆。我已經配置了一個我打算用作工廠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 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:錯誤創建名稱爲豆「batchManagerService '在ServletContext資源中定義[/WEB-INF/context/root/batchManagerContext.xml]:設置bean屬性'portletRegistry'時,不能創建內部bean'jsServicesFactory $ created#70be70be';嵌套的異常是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,但它沒有工作。
任何想法?
感謝
嗨,謝謝你的反饋。我相信NPE是jsServicesFactory在使用之前還沒有初始化,因此引發了NPE。不過,爲了確保我已將日誌記錄添加到方法getPortletRegistry()中。我將重新部署到Linux並讓您知道結果。謝謝 – aos 2010-03-16 11:42:59
你好, 我已經用日誌消息再次測試過了(我添加的所有東西都是日誌消息,沒有其他東西),這次我沒有收到任何錯誤。這使我認爲這是一個時間問題或類似的問題? – aos 2010-03-16 14:29:30
@aos很可能,是的,但我認爲這是您自己的代碼中的一個NullPointerException,它觸發了Spring的級聯異常。 – skaffman 2010-03-16 15:01:22