我正在使用DataStax驱动程序连接到Cassandra节点 . 下面是连接器的代码 .
public void connect(String node, Integer port, String username, String password) throws Exception {
try {
Builder b = Cluster.builder().addContactPoint(node).withCredentials(username.trim(), password.trim());
if (port != null) {
b.withPort(port);
}
cluster = b.build();
session = cluster.connect();
} catch (Exception e) {
throw new Exception("can not connect to the node :"+e.getMessage());
}
}
我在Cassandra.yaml文件中设置了身份验证器
authenticator:PasswordAuthenticator
在调用connect方法时,显示以下错误:
主机localhost / 127.0.0.1上的身份验证错误:9042:主机localhost / 127.0.0.1:9042需要身份验证,但在群集配置中找不到身份验证器
cqlsh shell能够使用Cassandra的相同配置连接到节点 . 谁能说出我在这里失踪的是什么?
编辑:异常堆栈
com.datastax.driver.core.AuthProvider $ 1.newAuthenticator(AuthProvider.java:40)at com.datastax.driver.core.Connection $ 5.apply(Connection.java:259)at com.datastax.driver.core.Connection $ 5.apply(Connection.java:244)位于com.google.common.util.concurrent.AbstractTransformFuture $ AsyncTransformFuture.doTransform(AbstractTransformFuture.java:211)com.google.common.util.concurrent.AbstractTransformFuture $ AsyncTransformFuture.doTransform( AbstractTransformFuture.java:200)com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:130)com.google.common.util.concurrent.MoreExecutors $ DirectExecutor.execute(MoreExecutors.java:399) com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:902)at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:813)com.google.common.util .concurrent.AbstractFuture.set(AbstractFuture.java:655)at com.datastax.driver.core.Connection $ Future.onSet(Connection.java:13 02)at com.datastax.driver.core.Connection $ Dispatcher.channelRead0(Connection.java:1083)at com.datastax.driver.core.Connection $ Dispatcher.channelRead0(Connection.java:1006)at io.netty.channel .simpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)位于io.netty的io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) . 在io.netty.channel.time.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)的io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)上的channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) .netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java) :348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)at io.netty.handler.codec.ByteToMessageDecoder . channelRead(ByteToMessageDecoder.java:284)位于io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext .fireChannelRead(AbstractChannelHandlerContext.java:340)at io.netty.channel.DefaultChannelPipeline $ HeadContext.channelRead(DefaultCh) annelPipeline.java:1359)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.DefaultChannelPipeline.fireChannelRead (DefaultChannelPipeline.java:935)位于io的io.netty.channel.nio.AbstractNioByteChannel $ NioByteUnsafe.read(AbstractNioByteChannel.java:141)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645) . neto.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop . java:459)at io.netty.util.concurrent.SingleThreadEventExecutor $ 5.run(SingleThreadEventExecutor.java:886)at atjava.lang.Thread.run中的io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)(Thread.java:745)
1 回答
解决了 :
该错误是由于某些后台线程试图在没有身份验证的情况下连接到服务器,这些在以前的调试会话中未被终止!