我有一个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();
这些值是从属性文件中提取的
1条答案
按热度按时间mf98qq941#
由于处理gremlin连接和查询的代码位于一个依赖jar项目中,所以在主项目中使用该jar声明的netty.version将覆盖在said netty.io jar项目中使用的www.example.com版本。我只需要在主项目pom中声明一个netty.version属性,使其与依赖中使用的netty版本相匹配。