微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用java访问远程neo4j

如何解决使用java访问远程neo4j

我正在尝试使用 java 代码连接到远程 neo4j。看这个代码

        Driver driver = GraphDatabase.driver(url,AuthTokens.basic(username,password));
        Session session = driver.session();
        StatementResult result = session.run(query);

        ArrayList<Map<String,Object>> list = new ArrayList<>();
        while (result.hasNext()) {
            Record record = result.next();
            list.add(record.asMap());
        }
        session.close();
        driver.close();

我通过 SSLException 不断得到这个:

Apr 09,2021 10:04:26 AM org.neo4j.driver.internal.logging.JULogger info
INFO: Direct driver instance 35238198 created for server address 89e9795b-eu-de.lb.appdomain.cloud:7687
Apr 09,2021 10:04:33 AM org.neo4j.driver.internal.logging.JULogger info
INFO: Closing connection pool towards 89e9795b-eu-de.lb.appdomain.cloud:7687
Exception in thread "main" org.neo4j.driver.v1.exceptions.ServiceUnavailableException: Failed to establish connection with the server
    at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:123)
    at org.neo4j.driver.internal.DriverFactory.verifyConnectivity(DriverFactory.java:349)
    at org.neo4j.driver.internal.DriverFactory.newInstance(DriverFactory.java:95)
    at org.neo4j.driver.v1.GraphDatabase.driver(GraphDatabase.java:141)
    at org.neo4j.driver.v1.GraphDatabase.driver(GraphDatabase.java:124)
    at com.ibm.research.appmod.mf.Neo4JClient.executeQuery(Neo4JClient.java:46)
    at com.ibm.research.appmod.mf.Neo4JClient.executeQuery(Neo4JClient.java:80)
    at com.ibm.research.appmod.mf.Neo4JClient.executeQuery(Neo4JClient.java:76)
    at com.ibm.research.appmod.mf.Neo4JClient.main(Neo4JClient.java:109)
    Suppressed: org.neo4j.driver.internal.util.ErrorUtil$InternalExceptionCause
        at org.neo4j.driver.internal.async.HandshakeHandler.transformError(HandshakeHandler.java:199)
        at org.neo4j.driver.internal.async.HandshakeHandler.exceptionCaught(HandshakeHandler.java:96)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:285)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:264)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:256)
        at org.neo4j.driver.internal.shaded.io.netty.handler.ssl.SslHandler.exceptionCaught(SslHandler.java:1030)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:285)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.notifyHandlerException(AbstractChannelHandlerContext.java:850)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:364)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at org.neo4j.driver.internal.shaded.io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1414)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:945)
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:146)
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.lang.Thread.run(Thread.java:811)
Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version
    at com.ibm.jsse2.k.a(k.java:19)
    at com.ibm.jsse2.aq.a(aq.java:604)
    at com.ibm.jsse2.aq.a(aq.java:192)
    at com.ibm.jsse2.aq.j(aq.java:161)
    at com.ibm.jsse2.aq.b(aq.java:303)
    at com.ibm.jsse2.aq.a(aq.java:316)
    at com.ibm.jsse2.aq.unwrap(aq.java:370)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:11)
    at org.neo4j.driver.internal.shaded.io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:292)
    at org.neo4j.driver.internal.shaded.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1257)
    at org.neo4j.driver.internal.shaded.io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1159)
    at org.neo4j.driver.internal.shaded.io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1203)
    at org.neo4j.driver.internal.shaded.io.netty.handler.codec.BytetoMessageDecoder.decodeRemovalReentryProtection(BytetoMessageDecoder.java:489)
    at org.neo4j.driver.internal.shaded.io.netty.handler.codec.BytetoMessageDecoder.callDecode(BytetoMessageDecoder.java:428)
    at org.neo4j.driver.internal.shaded.io.netty.handler.codec.BytetoMessageDecoder.channelRead(BytetoMessageDecoder.java:265)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at org.neo4j.driver.internal.shaded.io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1414)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:945)
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:146)
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
    at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
    at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:811)

我也试过这个:

Config config = Config.builder()
                .withEncryption()
                .withTrustStrategy( Config.TrustStrategy.trustAllCertificates() )
                .build();
        Driver driver = GraphDatabase.driver(url,password),config);
        Session session = driver.session();
        StatementResult result = session.run(query);

        ArrayList<Map<String,Object>> list = new ArrayList<>();
        while (result.hasNext()) {
            Record record = result.next();
            list.add(record.asMap());
        }
        session.close();
        driver.close();

我有一个可以连接到同一个 neo4j 的应用程序。这是一个 springboot 应用程序,因此它不会像 avove 代码那样使用直接查询。我需要做什么才能使其工作?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。