在glassfish4中使用hibernate-ogm-neo4j时,异常'Provider不是子类型'

时间:2016-10-21 10:00:28

标签: neo4j glassfish-4 hibernate-ogm serviceloader neo4j-bolt

我正试图在我的glassfish(4.1.1)中运行hibernate-ogm-neo4j(5.1.0.Alpha1)。使用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>

更新

我看了一下错误信息。它实际上是在Java ServiceLoader类中抛出的,并且说org.neo4j.driver.internal.spi.Connector之类的东西不是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仍然没有任何问题,但我已经联系了开发人员以找到它。

0 个答案:

没有答案