我通过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