gpt4 book ai didi

neo4j - 替换已弃用的 `WrappingNeoServerBootstrapper`

转载 作者:行者123 更新时间:2023-12-04 06:17:33 27 4
gpt4 key购买 nike

我正在尝试将一些 Neo4J Java 代码转换为 2.2+,该代码运行带有 Web 前端的嵌入式 Neo4J 服务器。

// configure embedded DB,
// but this doesn't start a server at port 12345 ?
final GraphDatabaseService db = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder("/path/to/db")
.setConfig(ServerSettings.webserver_address, "localhost")
.setConfig(ServerSettings.webserver_port, 12345)
.newGraphDatabase();

// add shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override public void run() {
graphDb.shutdown();
}
});

不推荐使用的启动服务器的代码如下:

final GraphDatabaseAPI api = (GraphDatabaseAPI)db;

final ServerConfigurator c = new ServerConfigurator(api);
c.configuration().addProperty(
Configurator.WEBSERVER_ADDRESS_PROPERTY_KEY, "localhost");
c.configuration().addProperty(
Configurator.WEBSERVER_PORT_PROPERTY_KEY, 12345);

new WrappingNeoServerBootstrapper(api, c).start();

忽略它不会启动服务器。我不清楚如何在不使用不推荐使用的方法的情况下运行嵌入式服务器。有什么想法吗?

更新 :

所以确实正确的答案似乎是:改变你的架构。

人们不应该再使用嵌入式服务器,而是使用服务器和 RESTful API。对于需要 Java API 的位,您可以编写一个非托管扩展(参见 docs)。

以下是此类扩展的一个简单示例 https://github.com/histograph/neo4j-plugin

谢谢!

最佳答案

你总是可以反过来做。与其将您创建的 GraphDatabaseService 实例传递给服务器,不如先尝试启动服务器并检索由它创建的实例 :) 使用 3.0.6 检查

    String homeDir = "./";
String configFile = "./conf/neo4j.conf";
ServerBootstrapper serverBootstrapper = new CommunityBootstrapper();
int i = serverBootstrapper.start(new File(homeDir), Optional.of(new File(configFile)), Pair.of("dbms.connector.http.address","0.0.0.0:7575"));
NeoServer neoServer = serverBootstrapper.getServer();
GraphDatabaseService graph = neoServer.getDatabase().getGraph();
System.out.println(graph);

关于neo4j - 替换已弃用的 `WrappingNeoServerBootstrapper`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30074232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com