当前位置: 首页 > 知识库问答 >
问题:

无法获取sping-data-neo4j连接到远程数据库

公孙慎之
2023-03-14

我正在构建一个小型的概念验证Spring Boot应用程序,它应该连接到一个Neo4j实例,并在几个不同的节点上执行一些基本操作。如果我将主应用程序类连接到使用以下代码创建嵌入式Neo4j服务,那么一切都可以正常工作。(这是基于工作示例https://spring.io/guides/gs/accessing-neo4j-data-rest/)

@Bean(destroyMethod = "shutdown")
public GraphDatabaseService graphDatabaseService() {
    return new GraphDatabaseFactory().newEmbeddedDatabase("target/hello.db");
}

这是我能找到的唯一一个从spring boot连接到Neo4j服务器的代码示例。如果我尝试连接到远程服务器,代码将无法启动,问题末尾出现异常。我们的计划是运行一个集中的Neo4j实例,这显然是一个常见的生产需求。

我应该如何配置我的bean以连接到远程Neo4j数据库,或者有人知道这种设置的可靠工作示例吗?

谢谢!

我的pom.xml包括以下内容:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j-rest</artifactId>
        <version>3.3.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

我已经看到了使用SpringCypherRestGraphDatabase的几个引用,所以我在我的Main应用程序类中处理了这个问题,如下所示:

import org.neo4j.graphdb.GraphDatabaseService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.neo4j.config.EnableNeo4jRepositories;
import org.springframework.data.neo4j.config.Neo4jConfiguration;
import org.springframework.data.neo4j.rest.SpringCypherRestGraphDatabase;

@SpringBootApplication
@EnableNeo4jRepositories
public class ProfileServiceApplication extends Neo4jConfiguration {

    public ProfileServiceApplication() {
        setBasePackage("profile");
    }

    @Bean
    public GraphDatabaseService graphDatabaseService() {
        return new SpringCypherRestGraphDatabase("http://localhost:7474/db/data/","neo4j","password");
    }

    public static void main(String[] args) {
        SpringApplication.run(ProfileServiceApplication.class, args);
    }
}

当我尝试使用此配置运行时,我得到以下错误:

nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.neo4j.graphdb.GraphDatabaseService]: Circular reference involving containing bean 'profileServiceApplication' - consider declaring the factory method as static for independence from its containing instance. Factory method 'graphDatabaseService' threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/neo4j/core/UpdateableState
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)

共有2个答案

万俟震博
2023-03-14

因此,这里有一个pplication.properties文件连接到您的Neo4j。

spring.data.neo4j.uri=bolt://localhost
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=Your_Password

将Neo4j数据库作为控制台应用程序启动,该应用程序最有可能在localhost:7474端口上运行。

要启动的命令:

neo4j console

还要检查依赖关系。因为最新版本仅适用于

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
皇甫德庸
2023-03-14

请将您的应用程序分享为github项目进行测试。也许这也是Spring引导启动器的依赖问题?你使用的是哪个引导版本??

也许您可以检查mvn dependency:tree是否有任何较旧版本的SDN,如果有,请更新spring boot starter的neo4 version属性。

示例应用程序在这里:

http://neo4j.com/developer/java/#_using_spring_data_neo4j

正如您正确看到的,它也在文档中:

http://docs.spring.io/spring-data/data-neo4j/docs/3.3.0.RELEASE/reference/html/#using_spring_data_neo4j_as_a_neo4j_server_client

 类似资料:
  • 我们的组织有一个远程SQL数据库,我正试图使用PyODBC连接到该数据库。 下面是测试代码:- 但是,当我尝试使用PyODBC连接时,我无法连接并得到以下错误。 PyODBC.OperationalError:('08001','[08001][Microsoft][ODBC SQL Server驱动程序][DBNETLIB]SQL Server不存在或访问被拒绝.(17)(SQLDriverCo

  • 我在A机上设置了伪分布式模式的Hadoop和Hbase,我正在B机上运行我的客户端(Java程序)(A机和B机可以互相通信)。但我这样做面临问题。 我的客户端代码如下所示: 配置config=HBaseConfiguration.create(); config.set(“HBase.ZookeePer.quorum”,zookeeperLocation);config.set(“hbase.zo

  • 问题内容: 我刚刚在网络托管服务上设置了MySQL数据库,并尝试使用以下php远程连接至该数据库: 我对php和MySQL还是很陌生,我不了解几件事。我已将上面的代码保存在文件中(称为demo.html),并尝试在Web浏览器中查看它(当前它不显示任何内容)。 我的托管公司告诉我,应该使用数据库连接 我以为我需要包括IP地址(使用PhPMyAdmin登录时看到的地址),因此我也添加了该地址。但是,

  • 问题内容: 我正在尝试使用jstatd用jps查询远程JVM,以便最终使用VisualVM对其进行监视。 我让jstatd使用以下安全策略运行: jstatd在带有1.6.0_10版本的HotSpot vm的64位Linux机器上运行。jstatd命令是: 我正在尝试从Windows 7计算机运行jps。由于防火墙的限制,我通过SSH隧道将RMI数据通过隧道传输到我的Windows计算机,这样jp

  • 当我试图将我的一台机器用作WinRM客户端以连接到另一台机器时,我的一台机器出现问题。场景是: Window 7上的问题机器(VM A)已经启用了WinRM(已经运行winrm快速配置,Enable-PSRemoting),然后我将远程机器(VM C)的IP添加到VM A的受信任主机中,然后运行Test-WSMan,我得到这个错误Test-WSMan: 客户端无法连接到请求中指定的目标。验证目标上

  • 问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;