如何将Webadmin界面与嵌入式Neo4j 2.0实例一起使用?

Mar*_*ten 5 neo4j spring-data-neo4j

我有一个已与嵌入式Neo4j 1.8.2以及Web管理员界面一起运行的项目。

现在,我更新了该项目以使其与最新的Neo4j 2.0.1一起运行。尽管在此过程中遇到了一些障碍(当我使用Spring Data Neo4j时),但最终一切进展顺利。

但是目前,我只能让网络管理员运行它。

任何建议将不胜感激。

这是我用于1.8版本的配置

(代码段中引用的配置类)

package com.example;

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.MapConfiguration;
import org.neo4j.server.configuration.Configurator;
import org.neo4j.server.configuration.ThirdPartyJaxRsPackage;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Neo4jServerConfig implements Configurator {

    private Configuration config;

    public Neo4jServerConfig(Map<String, String> config) {
        this.config = new MapConfiguration(config);
    }

    @Override
    public Configuration configuration() {
        return config;
    }

    @Override
    public Map<String, String> getDatabaseTuningProperties() {
        return null;
    }

    @Override
    public Set<ThirdPartyJaxRsPackage> getThirdpartyJaxRsClasses() {
        return new HashSet<>();
    }

    @Override
    public Set<ThirdPartyJaxRsPackage> getThirdpartyJaxRsPackages() {
        return new HashSet<>();
    }

}
Run Code Online (Sandbox Code Playgroud)

和bean的定义…………

如前所述...这对于1.8嵌入式Neo4j可以正常工作。

但是Neo4j 2.0下的初始化发生了很大变化。所以我被迫使用以下bean定义使事情再次运行

        <!-- neo4j server configuration -->
    <util:map id="neo4jConfig">
        <entry key="allow_store_upgrade" value="true"/>
        <entry key="enable_remote_shell" value="true"/>
        <entry key="online_backup_enabled" value="true"/>
        <entry key="node_auto_indexing" value="true"/>
        <entry key="node_keys_indexable" value="id,name,type,__type__"/>
        <entry key="relationship_auto_indexing" value="true"/>
    </util:map>

    <bean id="graphDbFactory" class="org.neo4j.graphdb.factory.GraphDatabaseFactory"/>

    <bean id="graphDbBuilder" factory-bean="graphDbFactory" factory-method="newEmbeddedDatabaseBuilder">
        <constructor-arg index="0" value="${neo4j.db.path}"/>
    </bean>

    <bean id="graphDbBuilderFinal" factory-bean="graphDbBuilder" factory-method="setConfig">
        <constructor-arg ref="neo4jConfig"/>
    </bean>

    <bean id="graphDatabaseService" factory-bean="graphDbBuilderFinal" factory-method="newGraphDatabase" destroy-method="shutdown" />
Run Code Online (Sandbox Code Playgroud)

之后,我在这个bean定义中得到了错误标记

    <bean id="serverWrapper" class="org.neo4j.server.WrappingNeoServerBootstrapper" init-method="start" destroy-method="stop">
        <constructor-arg index="0" ref="graphDatabaseService" /> 
        <constructor-arg index="1" ref="config"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

首先,现在不建议使用“ org.neo4j.server.WrappingNeoServerBootstrapper”-我可以使用任何替代方法吗?

其次,它抱怨构造函数参数“ graphDatabaseService”错误...它说“ bean必须是org.neo4j.kernel.GraphDatabaseAPI”(也已弃用)

服务器启动(至少从我的码头日志中可以看到),没有错误,但是尝试浏览到localhost:28473最终没有响应。

有什么线索吗?

提前致谢。

log*_*ima 3

WrappingNeoServerBootstrapper 和 GraphDatabaseAPI 已被弃用,但现在没有替代方案......所以你必须使用它们。

对于您来说,这是我的应用程序的示例代码,其中 webadmin 使用嵌入式 neo4j 2.0.1 服务器启动:

val graphdb = new GraphDatabaseFactory()
          .newEmbeddedDatabaseBuilder(DBPath)
          .loadPropertiesFromFile(neo4jPropertiesPath)
          .newGraphDatabase()
          .asInstanceOf[GraphDatabaseAPI}

val srv = new WrappingNeoServerBootstrapper(graphdb, config);
srv.start()
Run Code Online (Sandbox Code Playgroud)

因此,您必须将“graphDatabaseService”转换为“GraphDatabaseAPI”。抱歉,我不知道如何使用 spring 来实现这一点......但是您可以使用良好的类型来包装 WrappingNeoServerBootstrapper 。

干杯