如何通过远程连接获取JanusGraphManagement?

问题描述 投票:0回答:1

我有一个docker容器,运行gremlin-server。

它是通过以下方式启动的。

./bin/gremlin-server.sh conf/gremlin-server/gremlin-server.yaml

在docker容器中,运行这个镜像:https:/hub.docker.comrjanusgraphjanusgraph...

服务器已经启动,并在8182端口监听。

$ docker ps
6019adda6081        janusgraph/janusgraph                                         "docker-entrypoint.s…"   2 days ago          Up 26 hours         0.0.0.0:8182->8182/tcp                             

我对使用模式和索引感兴趣。

Janus在这里提供了这个。https:/docs.janusgraph.orgbasicsschema。

以下是我用来尝试连接到gremlin服务器的配置。

AbstractConfiguration config = new BaseConfiguration();

    config.setListDelimiter('/');
    // contents of conf/remote-graph.properties
    config.setProperty("gremlin.remote.driver.sourceName", "g");
    config.setProperty("gremlin.remote.remoteConnectionClass", "org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection");
    // contents of conf/remote-objects.yaml:
    config.setProperty("clusterConfiguration.hosts", databaseUrl);
    config.setProperty("clusterConfiguration.port", 8182);
    config.setProperty("clusterConfiguration.serializer.className", "org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0/");

    config.setProperty("storage.backend", "cql");
    config.setProperty("clusterConfiguration.serializer.config.ioRegistries", "org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry");

当我调用

GraphTraversalSource g = traversal().withRemote(config);

我得到了一个遍历源,一切似乎都很好。然而,要使用Janus提供的管理功能,我似乎需要一个 JanusGraphManagement 对象。我无法得到通用的 Graph 对象,并将其投向 JanusGraph. 文档中建议使用JanusGraphFactory。https:/docs.janusgraph.orgbasicsconfiguration#janusgraphfactory。

所以我叫

    JanusGraph janusGraph = JanusGraphFactory.open(config);

我得到以下堆栈跟踪。

    Exception in thread "main" java.lang.IllegalArgumentException: Could not find implementation class: org.janusgraph.diskstorage.cql.CQLStoreManager
    at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:60)
    at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:440)
    at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:411)
    at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:50)
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:161)
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:132)
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:112)
    at com.activitystream.database.GraphMigration.migrateDatabase(GraphMigration.java:69)
    at com.activitystream.runners.persistence.DataStores.migrateDatabase(DataStores.java:27)
    at com.activitystream.runners.persistence.EntityPersistenceRunner.main(EntityPersistenceRunner.java:23)
    Caused by: java.lang.ClassNotFoundException: org.janusgraph.diskstorage.cql.CQLStoreManager
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:56)
    ... 9 more

是否可以通过远程连接修改模式?

如果不可能,如何修改模式?

任何见解都将被感激。

java gremlin janusgraph gremlin-server
1个回答
4
投票

你基本上有两个选择--要么。

  1. 与你的服务器进行交互 JanusGraphManagement 对象 脚本方式 发送给Gremlin服务器(通常是通过会话的方式,但我想您可以将整个 "管理脚本 "打包在一起,作为一个请求提交)或
  2. 绕过Gremlin服务器,实例化你的 JanusGraphManagement 对象的地方,按照JanusGraph文档的指示。

没有办法返回一个 JanusGraphManagement 给你的客户端,因为它不是一个可以从服务器发送回来的可序列化对象。

© www.soinside.com 2019 - 2024. All rights reserved.