0

我试图让 hibernate-ogm-neo4j (5.1.0.Alpha1) 在我的 glassfish (4.1.1) 中运行。当使用 datastorprovider 启动应用程序服务器时,<property name="hibernate.ogm.datastore.provider" value="neo4j_embedded"/>它会显示一个很长的堆栈跟踪,不断重复以下异常:

java.util.ServiceConfigurationError: org.neo4j.kernel.extension.KernelExtensionFactory: Provider org.neo4j.jmx.impl.JmxExtensionFactory not a subtype
java.util.ServiceConfigurationError: org.neo4j.kernel.extension.KernelExtensionFactory: Provider org.neo4j.index.lucene.LuceneKernelExtensionFactory not a subtype
java.util.ServiceConfigurationError: org.neo4j.kernel.extension.KernelExtensionFactory: Provider org.neo4j.kernel.api.impl.labelscan.LuceneLabelScanStoreExtension not a subtype
java.util.ServiceConfigurationError: org.neo4j.kernel.extension.KernelExtensionFactory: Provider org.neo4j.kernel.api.impl.schema.LuceneSchemaIndexProviderFactory not a subtype
java.util.ServiceConfigurationError: org.neo4j.kernel.extension.KernelExtensionFactory: Provider org.neo4j.ext.udc.impl.UdcKernelExtensionFactory not a subtype

使用<property name="hibernate.ogm.datastore.provider" value="neo4j_bolt"/>异常更改为

java.util.ServiceConfigurationError: org.neo4j.driver.internal.spi.Connector: Provider org.neo4j.driver.internal.connector.socket.SocketConnector not a subtype

我更喜欢以 Bolt 模式连接,但我不确定我是否配置错误,或者它是否是 hibernate-ogm 或 neo4j 中的错误。

这是我完整的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

  <persistence-unit name="ogm-neo4j" transaction-type="JTA">
      <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
      <properties>
        <property name="hibernate.ogm.datastore.provider" value="neo4j_bolt"/>
        <property name="hibernate.ogm.neo4j.database_path" value="C:\temp\vtc.neo4j" />
      </properties>
  </persistence-unit>
</persistence>

更新

我对错误消息进行了更深入的研究。它实际上是在 JavaServiceLoader类中抛出的,并表示类似org.neo4j.driver.internal.spi.Connectoris not a superclass of org.neo4j.driver.internal.connector.socket.SocketConnector. 但当然是

public class SocketConnector implements Connector

并且在相关中还有一个META-INF.services描述,neo4j-java-driver-1.0.4.jar其中包含路径预期的绝对类名org.neo4j.driver.internal.connector.socket.SocketConnector

这让我更加困惑。我是否必须将此配置应用于我的 Glassfish,因为它不是自动完成的?

更新 2

如果使用,问题就会消失neo4j-java-driver-1.1.0-M6.jar(只需在你的 pom 中声明依赖项,它将被使用而不是 1.0.4。它与 hibernate-ogm-neo4j-5.1.0.Alpha1 捆绑在一起)。虽然仍然不知道版本 1.0.x 有什么问题,但我已经联系了开发人员以找出问题所在。

4

0 回答 0