我们正在升级到Spring Boot 2.3.5.RELEASE。我们的应用程序有Cassandra作为其中一个数据库,并且我们已经在节点上启用了身份验证。在更新Spring Boot版本后尝试连接Cassandra数据库时,我遇到了这个异常,无法启动应用程序。
我的Cassandra配置如下:
Authentication error on node <IP:PORT> requires authentication (org.apache.cassandra.auth.PasswordAuthenticator), but no authenticator configured
我的Cassandra配置如下:
@Configuration
@ConfigurationProperties("spring.data.cassandra.keyspaceName")
@EnableCassandraRepositories(basePackages = { "com.company.project.feature.cassandra.repo" },
cassandraTemplateRef = "dbTemplate")
public class Config extends AbstractCassandraConfiguration {
@Autowired
ServerProperties serverProps;
protected String contactPoints;
protected Integer port;
protected String keyspaceName;
protected String localDataCenter;
@Override
public String getContactPoints() {
return contactPoints;
}
/**
* @param contactPoints
*/
public void setContactPoints(String contactPoints) {
this.contactPoints = contactPoints;
}
/**
* @param keyspaceName
*/
public void setKeyspaceName(String keyspaceName) {
this.keyspaceName = keyspaceName;
}
@Override
public String getKeyspaceName() {
return keyspaceName;
}
@Override
public int getPort() {
return port;
}
public void setLocalDataCenter(String localDataCenter) {
this.localDataCenter = localDataCenter;
}
@Override
public String getLocalDataCenter() {
return localDataCenter;
}
public void setPort(Integer port) {
this.port = port;
}
@Bean(name = "dbSession")
@Primary
public CqlSession session() {
String containerIpAddress = getContactPoints();
int containerPort = getPort();
InetSocketAddress containerEndPoint = new InetSocketAddress(containerIpAddress, containerPort);
CqlSessionBuilder builder = CqlSession.builder().withLocalDatacenter(getLocalDataCenter()).addContactPoint(containerEndPoint)
.withAuthCredentials(serverProps.getCassandraUserName(), serverProps.getCassandraPassword())
.withKeyspace(getKeyspaceName());
return builder.build();
}
@Bean("dbOperations")
public CassandraOperations cassandraOperationsB() {
return new CassandraTemplate(session(), cassandraConverter());
}
@Primary
@Bean(name = "dbTemplate")
@Override
public CassandraAdminTemplate cassandraTemplate() {
return new CassandraAdminTemplate(session(), cassandraConverter());
}
我在构建CqlSession时提供了用户名和密码,但仍然遇到了这个异常。我做错了什么吗?