【问题标题】:Embedded neo4j with tinkerpop - Same Instance,Multiple access带有 tinkerpop 的嵌入式 neo4j - 相同实例,多路访问
【发布时间】:2014-09-15 18:41:39
【问题描述】:

我看到“blueprints-neo4j-graph-2.5.0”是使用 tinkerpop blueprints api 和 neo4j graph 的最新发布版本,版本 1.9.6。

关于这个的几个问题:

  1. 我知道这个 neo4j 实例将是一个带有社区版本的嵌入式数据库。是对的吗?如果是,如何切换到企业版?

    我尝试将其包含为 gradle 依赖项:编译组:'org.neo4j',名称:'neo4j-enterprise',版本:'2.0.1'

    但是,我认为“blueprints-neo4j-graph-2.5.0”将获得自己的版本(neo4j 1.9.6)作为依赖项。

  2. neo4j webadmin 控制台是否可以与嵌入式版本一起使用?

    我尝试将 neo4j.server.properties 中的数据库位置更改为与嵌入式实例配置中给定的位置相同的位置,但我无法同时访问它们。

我在 build.gradle 中进行了此更改。

编译组:'com.tinkerpop.blueprints',名称:'blueprints-neo4j2-graph',版本:'2.5.0'

这选择了 neo4j 2.0.1。

此外,我将 tinkerpop 示例中提到的 tinkerpopConfig(我使用 GraphFactory 打开和关闭图形)更改为:

"blueprints.neo4jha.directory" : "C:/data/my-test-model-graph",
"blueprints.graph" : "com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph",
"blueprints.neo4jha.conf.server_id" : "1",
"blueprints.neo4jha.conf.server" : "localhost:6364",
"blueprints.neo4jha.conf.cluster_server" : "localhost:5002",
"blueprints.neo4jha.conf.initial_hosts" : "localhost:5001,localhost:5002"

现在当我尝试部署时,我得到一个空图。

如您所说,HA 实施需要企业版:

我也试过这样做,

compile(group: 'com.tinkerpop.blueprints', name: 'blueprints-neo4j2-graph', version:'2.5.0'){
exclude(module: 'neo4j')
exclude(module: 'neo4j-ha')
exclude(module: 'neo4j-management')
    }
compile group: 'org.neo4j', name: 'neo4j-enterprise', version:'2.0.1'

这将获得 neo4j-enterprise-2.0.1。

但这似乎也不起作用,并且无法打开图形实例。

你觉得这里有什么奇怪的地方吗?

java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph]. at com.tinkerpop.blueprints.GraphFactory.open(GraphFactory.java:50) ~[blueprints-core-2.5.0.jar:na] at com.repo.GraphManager.getGraphDatabase(GraphManager.java:314) [com.repo~repo_module~1.0.0-SNAPSHOT/:na] at com.repo.GraphManager.start(GraphManager.java:164) [com.repo~repo_module~1.0.0-SNAPSHOT/:na] at org.vertx.java.platform.Verticle.start(Verticle.java:82) [vertx-platform-2.1M1.jar:na] at com.englishtown.vertx.hk2.HK2VerticleLoader.start(HK2VerticleLoader.java:77) [com.englishtown~vertx-mod-hk2~1.6.0-SNAPSHOT/:na] at org.vertx.java.platform.impl.DefaultPlatformManager$19.run(DefaultPlatformManager.java:1551) [vertx-platform-2.1M1.jar:na] at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:176) [vertx-core-2.1M1.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51] at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51] Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_51] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_51] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_51] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_51] at com.tinkerpop.blueprints.GraphFactory.open(GraphFactory.java:43) ~[blueprints-core-2.5.0.jar:na] ... 9 common frames omitted Caused by: java.lang.NullPointerException: null at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1124) ~[na:1.7.0_51] at java.util.concurrent.ConcurrentHashMap.putAll(ConcurrentHashMap.java:1162) ~[na:1.7.0_51] at org.neo4j.kernel.configuration.Config.applyChanges(Config.java:122) ~[neo4j-kernel-2.0.1.jar:2.0.1] at org.neo4j.kernel.configuration.Config.<init>(Config.java:88) ~[neo4j-kernel-2.0.1.jar:2.0.1] at org.neo4j.kernel.InternalAbstractGraphDatabase.<init>(InternalAbstractGraphDatabase.java:278) ~[neo4j-kernel-2.0.1.jar:2.0.1] at org.neo4j.kernel.ha.HighlyAvailableGraphDatabase.<init>(HighlyAvailableGraphDatabase.java:136) ~[neo4j-ha-2.0.1.jar:2.0.1] at org.neo4j.graphdb.factory.HighlyAvailableGraphDatabaseFactory$1.newDatabase(HighlyAvailableGraphDatabaseFactory.java:47) ~[neo4j-ha-2.0.1.jar:2.0.1] at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:198) ~[neo4j-kernel-2.0.1.jar:2.0.1] at com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph.<init>(Neo4j2HaGraph.java:23) ~[blueprints-neo4j2-graph-2.5.0.jar:na] at com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph.<init>(Neo4j2HaGraph.java:31) ~[blueprints-neo4j2-graph-2.5.0.jar:na] ... 14 common frames omitted

【问题讨论】:

    标签: neo4j tinkerpop


    【解决方案1】:

    如果你想要 Neo4j 2.x 那么你需要使用这个依赖:

    <dependency>
      <groupId>com.tinkerpop.blueprints</groupId>
      <artifactId>blueprints-neo4j2-graph</artifactId>
      <version>2.5.0</version>
    </dependency>
    

    由于此版本以嵌入式模式运行,一次只有一个 JVM 进程可以访问数据库,因此您无法通过 TinkerPop 访问数据库并同时运行 Neo4j Server 来获取 Neo4j WebAdmin Console。如果你想在那种模式下运行,那么你应该使用Neo4jHaGraph:

    https://github.com/tinkerpop/blueprints/wiki/Neo4jHa-Implementation

    需要企业版:

    http://docs.neo4j.org/chunked/stable/ha-setup-tutorial.html

    Neo4jHaGraph 也应该存在于blueprints-neo4j2-graph 包装中。

    【讨论】:

    • 您如何管理依赖项?使用 Maven?我最初的猜测是混合中有一些 Neo4j 1.x 依赖项,但鉴于您发布的堆栈跟踪,这只是一个猜测。
    • 我正在使用 gradle 作为依赖项。在 lib 目录中,我没有看到 1.x 的任何 jars。
    • 现在更新了问题帖。
    • 清理本地 gradle 缓存后,现在可以与 neo4j 2.1.2 一起使用。我现在看到的另一个问题是:我有两个具有自己的数据库实例的 VM,并且以 HA 模式部署。我在messages.log中看到以下消息:pastie.org/9577035我相信它应该这样说:尝试加入[第一个主机:端口,第二个主机:端口]的集群,而不是我看到它只有主机:它自己的端口.如果我直接使用 neo4j 核心 java api 部署它们,它们会聚集并具有预期的行为。
    • 我不确定你是否在 GitHub 上发布了这个问题:github.com/tinkerpop/blueprints/issues/507 无论如何,我们会在那里寻找解决方案。
    猜你喜欢
    • 2016-03-23
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    相关资源
    最近更新 更多