2015-11-23 44 views
3

我正在與neo4j一起創建圖形,將數據從mongodb作爲文檔。獨立代碼工作正常,沒有風暴。但是,當風暴整合它,我越來越 -NotSerializableException org.neo4j.kernel.EmbeddedGraphDatabase

java.io.NotSerializableException:org.neo4j.kernel.EmbeddedGraphDatabase

例外。不知道我爲什麼得到這個的確切原因。如果有人遇到這樣的問題,請告訴我如何解決它。

回答

0

因爲您試圖將對象傳遞給序列化程序,該程序沒有實現Serializable接口。

+0

我沒有序列化任何東西。但我也有同樣的想法,所以我序列化所有正在使用的類。我仍然得到同樣的例外。 – RCS

+0

@ shaw.ram似乎'neo4j'在某個地方需要某個類,並試圖序列化它,但是失敗。所以請檢查它的文檔。 – Neijwiert

0

你必須分享更多細節。很可能你試圖序列化一個Neo4j NodeRelationship對象,該對象持有對不可序列化的引用GraphDatabaseService

+0

從執行方法中的螺栓,我正在調用方法來創建圖形和傳遞參數作爲我從MongoDB和GraphDatabaseService對象獲得的文檔。現在我只傳遞文檔作爲參數。我現在正在創建Graph的靜態塊中創建GraphDatabaseService對象。問題已解決。感謝邁克爾的建議。 – RCS

0

所有用於Storm中的屬性/字段的類都必須實現接口Serializable。我假定您在Collector.emit(new Values(...))(直接或嵌套方式)內使用EmbeddedGraphDatabase類型的對象。

+0

感謝matthias的信息。 – RCS

+0

EmbeddedGraphDatabase是Neo4j的API,它沒有實現Serializable接口。我在加載時將它用於螺栓,只創建一次對象。但在運行時得到NotSerializable異常。你能告訴,如何處理這樣的API不會使Serializable接口陷入困境。 – RCS

+0

我想你有一個'EmbeddedGraphDatabase'類型的類成員變量。如果你不是在客戶端上初始化這個變量,而是在拓撲被部署後(即在open()或prepare())中,你可以簡單地聲明成員'transient',它不包括序列化。 –