Spring Boot Gremlin-驱动程序更新导致NoSuchMethodError

t30tvxxf  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(120)

我有一个Java Sping Boot 应用程序,它连接到运行在引擎版本1.1.1.0上的Amazon Neptune图形数据库。
将gremlin-driver和TinkerPop依赖项从3.4.6升级到3.5.2(在此版本上运行)后,应用程序无法再连接到AWS上的图形数据库,并引发此异常

io.netty.channel.ChannelInitializer : Failed to initialize a channel. Closing: [id: 0xf213a752]ecs/XYZ

java.lang.NoSuchMethodError: io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker13.<init>(Ljava/net/URI;Lio/netty/handler/codec/http/websocketx/WebSocketVersion;Ljava/lang/String;ZLio/netty/handler/codec/http/HttpHeaders;IZZJ)V

我没有对构建器做任何更改,除了对其中一个导入和方法名做了一些代码破坏性的更改。我在这次更新中遗漏了什么吗?
这是我在3.4.6中使用的构建器配置

Cluster.Builder builder = Cluster.build();
        builder.addContactPoints(gremlinProperties.getContactPoints());
        builder.port(gremlinProperties.getPort());
        builder.nioPoolSize(gremlinProperties.getNioPoolSize());
        builder.workerPoolSize(gremlinProperties.getWorkerPoolSize());
        builder.minConnectionPoolSize(gremlinProperties.getMinConnectionPoolSize());
        builder.maxConnectionPoolSize(gremlinProperties.getMaxConnectionPoolSize());
        builder.minSimultaneousUsagePerConnection(gremlinProperties.getMinSimultaneousUsagePerConnection());
        builder.maxSimultaneousUsagePerConnection(gremlinProperties.getMaxSimultaneousUsagePerConnection());
        builder.maxInProcessPerConnection(gremlinProperties.getMaxInProcessPerConnection());
        builder.minInProcessPerConnection(gremlinProperties.getMinInProcessPerConnection());
        builder.maxWaitForConnection(gremlinProperties.getMaxWaitForConnection());
        builder.maxWaitForClose(gremlinProperties.getMaxWaitForSessionClose());
        builder.maxContentLength(gremlinProperties.getMaxContentLength());
        builder.reconnectInterval(gremlinProperties.getReconnectInterval());
        builder.resultIterationBatchSize(gremlinProperties.getResultIterationBatchSize());
                builder.keepAliveInterval(gremlinProperties.getKeepAliveInterval());
        builder.channelizer(Channelizer.WebSocketChannelizer.class);
        builder.enableSsl(gremlinProperties.isEnableSsl());

        return builder.create();

这些值是从属性文件中提取的

mf98qq94

mf98qq941#

由于处理gremlin连接和查询的代码位于一个依赖jar项目中,所以在主项目中使用该jar声明的netty.version将覆盖在said netty.io jar项目中使用的www.example.com版本。我只需要在主项目pom中声明一个netty.version属性,使其与依赖中使用的netty版本相匹配。

相关问题