我正在尝试通过java客户端的身份验证连接到dse 5.1集群。我用的Cassandra驱动程序是
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.4</version>
</dependency>
添加了一个简单的测试,尝试连接到特定的键空间:
@Test
public void testConnection() {
String user = "****";
String pswd = "*******";
String host = "********"
Cluster cluster = Cluster.builder().addContactPoints(host)
.withPort(9042)
.withCredentials(user.trim(), pswd.trim())
.build();
Session session = cluster.connect(QueryBuilder.quote("TestKS"));
Assert.assertNotNull(session);
}
我的结局是 com.datastax.driver.core.exceptions.AuthenticationException
从终端,我可以用相同的凭据连接到此节点,但从java代码,我无法通过此异常。
堆栈跟踪
com.datastax.driver.core.exceptions.AuthenticationException: Authentication error on host /<host>:9042: Failed to login. Please re-try.
at com.datastax.driver.core.Connection$8.apply(Connection.java:390)
at com.datastax.driver.core.Connection$8.apply(Connection.java:359)
at com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:211)
请告知我遗漏了什么。
1条答案
按热度按时间u91tlkcl1#
您没有提供完整的堆栈跟踪,因此很难确切地知道代码失败的原因。
无论如何,java驱动程序3.1.4已经有4年的历史了,如果您刚开始使用一个新的应用程序,我们建议您使用与dse 5.1兼容的最新java驱动程序4(顺便说一下,没有cassandra 5.1)。
可以通过编程方式在驱动程序中配置身份验证,但建议的方法是在配置文件中指定凭据。例如:
有关详细信息,请参阅驱动程序文档中的“身份验证”页。
如果你是新开发应用程序的Cassandra,我们有样本应用程序在阿斯特拉,你可以看到完整的源代码,所以你可以很快开始。干杯!