2010-03-16 24 views
0

我使用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,但它沒有工作。

任何想法?

感謝

回答

0

的線索是在堆棧跟蹤,儘管在它深埋:

嵌套的例外是 顯示java.lang.NullPointerException

的東西在你的代碼拋出一個NPE在bean的初始化過程中,這是在堆棧中傳播,在其他異常中被重新包裝。

找到該NPE的根本原因,並應該解決問題。

+0

嗨,謝謝你的反饋。我相信NPE是jsServicesFactory在使用之前還沒有初始化,因此引發了NPE。不過,爲了確保我已將日誌記錄添加到方法getPortletRegistry()中。我將重新部署到Linux並讓您知道結果。謝謝 – aos 2010-03-16 11:42:59

+0

你好, 我已經用日誌消息再次測試過了(我添加的所有東西都是日誌消息,沒有其他東西),這次我沒有收到任何錯誤。這使我認爲這是一個時間問題或類似的問題? – aos 2010-03-16 14:29:30

+0

@aos很可能,是的,但我認爲這是您自己的代碼中的一個NullPointerException,它觸發了Spring的級聯異常。 – skaffman 2010-03-16 15:01:22