连接到嵌入式neo4j数据库作为远程数据库

时间:2018-05-07 17:39:57

标签: neo4j

我在Kotlin有一个使用Neo4j 3.3.5作为嵌入式数据库的Spring启动项目。 测试数据库是否可访问(读写)。 我现在想使用neo4j desktop 1.0.24作为远程数据库访问数据库,以便以图形方式查看节点,并可能在外部添加我自己的节点。

我目前使用以下方式访问数据库:

private val curdir = System.getProperty("user.dir")
val graphDb: GraphDatabaseService = GraphDatabaseFactory().newEmbeddedDatabase(File("${curdir}/database"))

我找到的最新指南是this

简而言之,上面指南中提供的配置是:

GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(DB_DIR)
                .setConfig(ShellSettings.remote_shell_enabled, "true")
                .setConfig(ShellSettings.remote_shell_port, "5555")
                .newGraphDatabase();
然而,

似乎不起作用(未解析的参考ShellSettings)。

在对当前(3.3)文档进行一些搜索之后,我发现setConfig有3种版本,其中有两种已被弃用:

setConfig(Map<String,String> config) // deprecated
setConfig(String name, String value) // deprecated

setConfig(Setting<?> setting, String value)

最后一个选项不是,但interface Setting<T>本身正在等待重建,也已弃用。

尝试像这样使用setConfig:

    var graphDb = GraphDatabaseFactory().newEmbeddedDatabaseBuilder(File("${curdir}/database"))
        .setConfig("remote_shell_enabled", "true")
        .setConfig("remote_shell_port", "5555")
        .newGraphDatabase()

虽然适用于Spring,但无法通过neo4j Desktop访问配置:

Database Name: Database
Host: localhost
Bolt Port: 5555
username: blank
password: blank

我还能尝试什么?

1 个答案:

答案 0 :(得分:0)

桌面未使用public string MyValueMapping(bool mapValue, string value) { return (mapValue ? value : string.Empty); } ,而是shell。 所以你需要在配置中启用它:

bolt protocol

您还必须在项目中添加lib:

GraphDatabaseSettings.BoltConnector bolt = GraphDatabaseSettings.boltConnector( "0" );

GraphDatabaseService graphDb = new GraphDatabaseFactory()
        .newEmbeddedDatabaseBuilder( DB_PATH )
        .setConfig( bolt.type, "BOLT" )
        .setConfig( bolt.enabled, "true" )
        .setConfig( bolt.address, "localhost:7687" )
        .newGraphDatabase();

有关详细信息,请参阅文档:https://neo4j.com/docs/java-reference/current/tutorials-java-embedded/#tutorials-java-embedded-bolt