Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Glassfish 当allow\u store\u升级失败时,我该怎么办?_Glassfish_Neo4j_Jca - Fatal编程技术网

Glassfish 当allow\u store\u升级失败时,我该怎么办?

Glassfish 当allow\u store\u升级失败时,我该怎么办?,glassfish,neo4j,jca,Glassfish,Neo4j,Jca,我正在glassfish服务器中通过Alex Smirnov neo4j JCA连接器的修改版本使用neo4j。 我的版本可在此处获得: 我正在使用neo4j 1.8的这个连接器。 因此,当我想要使用它时,我首先在Glassfish应用服务器中安装连接器,然后在希望连接到的应用程序中使用此连接器 当与新鲜商店一起使用时,它可以正常工作。 但是,当我在使用以前版本创建的商店时,我遇到了奇怪的bug 通常情况下,我今天得到了以下堆栈 javax.resource.spi.ResourceAlloca

我正在glassfish服务器中通过Alex Smirnov neo4j JCA连接器的修改版本使用neo4j。 我的版本可在此处获得: 我正在使用neo4j 1.8的这个连接器。 因此,当我想要使用它时,我首先在Glassfish应用服务器中安装连接器,然后在希望连接到的应用程序中使用此连接器

当与新鲜商店一起使用时,它可以正常工作。 但是,当我在使用以前版本创建的商店时,我遇到了奇怪的bug

通常情况下,我今天得到了以下堆栈

javax.resource.spi.ResourceAllocationException: Error in allocating a connection. Cause: Failed to transition org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader@3bbd53b1 from NONE to STOPPED
...
...
.../* JCA internal exception stack */
...
...
Caused by: com.sun.appserv.connectors.internal.api.PoolingException: Failed to transition org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader@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.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader@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
javax.resource.spi.ResourceAllocationException:分配连接时出错。原因:无法转换org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader@3bbd53b1从无到有
...
...
…/*JCA内部异常堆栈*/
...
...
原因:com.sun.appserv.connectors.internal.api.pooligeException:未能转换org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader@494b584c从无到有
位于com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:924)
位于com.sun.enterprise.resource.pool.ConnectionPool.createResource(ConnectionPool.java:1185)
位于com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.addResource(RWLockDataStructure.java:98)
... 66多
原因:org.neo4j.kernel.lifecycle.LifecycleException:未能转换org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader@494b584c从无到有
位于org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:388)
位于org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:82)
位于org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:116)
位于org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:227)
位于org.neo4j.kernel.EmbeddedGraphDatabase。(EmbeddedGraphDatabase.java:79)
位于org.neo4j.kernel.EmbeddedGraphDatabase。(EmbeddedGraphDatabase.java:70)
位于com.netoprise.neo4j.AbstractNeo4jManagedConnectionFactory.createDatabase(AbstractNeo4jManagedConnectionFactory.java:165)
位于com.netoprise.neo4j.AbstractNeo4jManagedConnectionFactory.createDatabase(AbstractNeo4jManagedConnectionFactory.java:127)
位于com.netoprise.neo4j.Neo4jManagedConnectionFactory.createManagedConnection(Neo4jManagedConnectionFactory.java:163)
位于com.sun.enterprise.resource.allocator.ConnectorAllocator.createResource(ConnectorAllocator.java:160)
位于com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:907)
... 68多
原因:java.lang.AssertionError
位于org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:265)
位于org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:260)
位于org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:260)
位于org.neo4j.index.impl.lucene.LuceneDataSource.cleanWriteLocks(LuceneDataSource.java:260)
位于org.neo4j.index.impl.lucene.LuceneDataSource(LuceneDataSource.java:185)
位于org.neo4j.index.lucene.LuceneIndexProvider.load(LuceneIndexProvider.java:72)
位于org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader.loadIndexImplementations(InternalAbstractGraphDatabase.java:1171)
位于org.neo4j.kernel.InternalAbstractGraphDatabase$DefaultKernelExtensionLoader.init(InternalAbstractGraphDatabase.java:1143)
位于org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:382)
... 78多
快速检查会发现此异常链接到一个不可删除的“write.lock”文件。无法删除我的write.lock文件,因为我想迁移尚未结束。 如何确保在使用之前完成迁移,而不将其迁移到Glassfish之外

有没有一种方法可以在这种情况下实现专卖店迁移?如果是,怎么做? 这是解决我问题的办法吗

编辑1添加了异常消息

编辑2仅当加载的图形以前与Neo4j 1.5一起使用,现在与Neo4j 1.8连接器一起使用时,才会发生所有这一切。当图形由连接器创建时,绝对不会发生错误


编辑3奇怪的是,只要代码中没有插入调试器,就会发生这种情况:只要我尝试调试它,问题就会停止出现。这让我想到,可能有一种迁移清理机制,在迁移完成后会删除写锁,而在使用我的neo4j JCA连接器时不会执行这种清理。这是一个有效的观察结果吗?

我对JCA连接器不太熟悉,但可以肯定的是,我只需要编写一个非常小的迁移java类来打开数据库,让它迁移并关闭。然后用JCA连接器再试一次?

进一步调查后,发现事实并非是多次调用
EmbeddedGraphDatabase
构造函数,而是多次调用正在加载的多个identical
IndexProvider

我使用嵌入开源JCA连接器中的neo4j。 在这个连接器中,
org.neo4j.kernel.Service
类被替换为包含JBoss非共享库的服务加载解决方案的类。 不幸的是,在我们的上下文中,此解决方案意味着加载两次索引提供程序:

  • 一旦使用EAR类加载器
  • 一旦使用Glassfish库类加载器
  • 为什么?? 因为,当我们的neo4j实例用于应用程序数据和身份验证时,neo4j连接器jar被放在
    ${domain}/lib
    中。因此,由于ApplicationServer中的类加载器委托,EAR类加载器委托给Glassfish库类加载器,并通过这种方式找到
    LuceIndexProvider
    。然后,Glassfish库类加载器直接用于加载相同的
    lucenindexprovider

    最后,我们有两个
    lucenindexprovider
    ob