我通過Alex Smirnov neo4j JCA連接器的修改版本在glassfish服務器中使用neo4j。 我的版本可在這裏找到:https://github.com/Riduidel/neo4j-connector 我使用這個連接器與neo4j 1.8。因此,當我想要使用它時,首先在我的Glassfish應用程序服務器中安裝連接器,然後在希望連接到的應用程序中使用此連接器。當allow_store_upgrade失敗時我能做些什麼?
在新鮮商店中使用它可以正常工作。 但是,當與以前版本創建的商店一起使用時,我會遇到奇怪的錯誤。
通常情況下,我今天得到了下面的堆棧
javax.resource.spi.ResourceAllocationException: Error in allocating a connection. Cause: Failed to transition org.neo4j.ke[email protected]3bbd53b1 from NONE to STOPPED
...
...
.../* JCA internal exception stack */
...
...
Caused by: com.sun.appserv.connectors.internal.api.PoolingException: Failed to transition org.neo4j.ke[email protected]494b584c from NONE to STOPPED
at com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:924)
at com.sun.enterprise.resource.pool.ConnectionPool.createResource(ConnectionPool.java:1185)
at com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.addResource(RWLockDataStructure.java:98)
... 66 more
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Failed to transition org.neo4j.ke[email protected]494b584c from NONE to STOPPED
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:388)
at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:82)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:116)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:227)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:79)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:70)
at com.netoprise.neo4j.AbstractNeo4jManagedConnectionFactory.createDatabase(AbstractNeo4jManagedConnectionFactory.java:165)
at com.netoprise.neo4j.AbstractNeo4jManagedConnectionFactory.createDatabase(AbstractNeo4jManagedConnectionFactory.java:127)
at com.netoprise.neo4j.Neo4jManagedConnectionFactory.createManagedConnection(Neo4jManagedConnectionFactory.java:163)
at com.sun.enterprise.resource.allocator.ConnectorAllocator.createResource(ConnectorAllocator.java:160)
at com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:907)
... 68 more
Caused by: java.lang.AssertionError
at org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:265)
at org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:260)
at org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:260)
at org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:260)
at org.neo4j.index.impl.lucene.LuceneDataSource.<init>(LuceneDataSource.java:185)
at org.neo4j.index.lucene.LuceneIndexProvider.load(LuceneIndexProvider.java:72)
at org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader.loadIndexImplementations(InternalAbstractGraphDatabase.java:1171)
at org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader.init(InternalAbstractGraphDatabase.java:1143)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:382)
... 78 more
的快速檢查發現此異常鏈接到被刪除「write.lock」文件。我的write.lock文件無法刪除,因爲我猜遷移沒有結束。 如何確保遷移完成後再使用,而無需將其遷移到Glassfish之外?
有沒有辦法在這種情況下獨家商店遷移?如果是這樣,怎麼樣? 這是我的問題的解決方案?
編輯1添加了異常消息。
編輯2所有這些只有在加載圖形以前與Neo4j 1.5一起使用並且現在使用Neo4j 1.8連接器時纔會發生。當圖形由連接器創建時,絕對不會發生錯誤。
編輯3奇怪的是,只要沒有調試器插入該代碼,就會發生這種情況:只要我嘗試調試它,問題就會停止顯示。這讓我想到可能會有一個遷移清除機制,一旦遷移完成後就提取寫鎖,並且在使用我的neo4j JCA連接器時不會執行此清理。這是一個有效的觀察?
清理寫鎖定發生在任何檢查升級任何事情之前。在這種情況下,我看不到升級的連接。調試時不出現的事實也很奇怪。因此,在調試模式下成功啓動和關閉後,再次啓動時不起作用? – 2013-04-11 07:24:04