我正在尝试将我的javaspring启动应用程序连接到aws键空间。我关注了amazons文档,了解了如何使用apachecassandra的datastax java驱动程序来设置和配置这个连接(https://docs.aws.amazon.com/keyspaces/latest/devguide/using_java_driver.html). 我还研究了以下内容:
不支持带有amazon键空间的分区器(对于apache cassandra)
通过springReact式数据自动配置连接到aws密钥空间
https://docs.spring.io/spring-data/cassandra/docs/3.2.0/reference/html/#cassandra.connectors
以下是我收到的错误:
org.springframework.beans.factory.beancreationexception:创建名为“cassandrasession”的bean时出错,该bean在类路径资源[com/envase/connect/config/cassandrasetup.class]中定义:调用init方法失败;嵌套的异常是com.datastax.oss.driver.api.core.allnodesfailedexception:无法到达任何联系点,请确保提供了有效的地址(显示前1个节点,有关详细信息,请使用getallerrors()):node(endpoint=cassandra.us-east-2.amazonaws。com:9142,hostid=null,hashcode=3fcfeaa9):[com.datastax.oss.driver.api.core.drivertimeoutexception:[s5 | control | id:0x19776100,l:/192.168.1.105:53683-r:cassandra.us-east-2.amazonaws.com/3.12.23.181:9142]协议初始化请求,步骤1(选项):在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory)的5000毫秒后超时。java:1786)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory)。java:602)~[ Spring Bean -5.3.6。jar:5.3.6]位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory)。java:524)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.abstractbeanfactory.lambda$dogetbean$0(abstractbeanfactory)。java:335)~[ Spring Bean -5.3.6。jar:5.3.6]位于org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry)。java:234)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory)。java:333)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory。java:208)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.config.dependencydescriptor.resolvecandidate(dependencydescriptor。java:276)~[ Spring Bean -5.3.6。jar:5.3.6]位于org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory)。java:1380)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory)。java:1300)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.constructorresolver.resolveautowiredargument(constructorresolver。java:887)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.constructorresolver.createargumentarray(constructorresolver。java:791)~[ Spring Bean -5.3.6。jar:5.3.6] ... 25常见帧被忽略,原因是:com.datastax.oss.driver.api.core.allnodesfailedexception:无法到达任何联系点,请确保提供了有效地址(显示前1个节点,使用getallerrors()了解更多信息):node(endpoint=cassandra.us-east-2.amazonaws。com:9142,hostid=null,hashcode=3fcfeaa9):[com.datastax.oss.driver.api.core.drivertimeoutexception:[s5 | control | id:0x19776100,l:/192.168.1.105:53683-r:cassandra.us-east-2.amazonaws.com/3.12.23.181:9142]协议初始化请求,步骤1(选项):在com.datastax.oss.driver.api.core.allnodesfailedexception.copy(allnodesfailedexception)的[5000 ms]后超时。java:141)~[java-driver-core-4.8.0。jar:na]位于com.datastax.oss.driver.internal.core.util.concurrent.completablefutures.getunterruptibly(completablefutures)。java:149)~[java-driver-core-4.8.0。jar:na]在com.datastax.oss.driver.api.core.session.sessionbuilder.build(sessionbuilder。java:674)~[java-driver-core-4.8.0。jar:na]位于org.springframework.data.cassandra.config.cqlsessionfactorybean.buildsystemsession(cqlsessionfactorybean)。java:498)~[spring-data-cassandra-3.1.8。jar:3.1.8]在org.springframework.data.cassandra.config.cqlsessionfactorybean.afterpropertiesset(cqlsessionfactorybean)。java:451)~[spring-data-cassandra-3.1.8。jar:3.1.8]位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory)。java:1845)~[ Spring Bean -5.3.6。jar:5.3.6]在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory)。java:1782)~[ Spring Bean -5.3.6。jar:5.3.6] ... 36个公共帧:com.datastax.oss.driver.api.core.drivertimeoutexception:[s5 | control | id:0x19776100,l:/192.168.1.105:53683-r:cassandra.us-east-2.amazonaws.com/3.12.23.181:9142]协议初始化请求,步骤1(选项):在com.datastax.oss.driver.internal.core.channel.channelhandlerrequest.ontimeout(channelhandlerrequest)5000毫秒后超时。java:108)~[java-driver-core-4.8.0。jar:na]
它还会反复打印以下警告,直到抛出上述错误:
2021-04-27 15:04:48.106警告17664---[s4-admin-0]c.d.o.d.internal.core.pool.channelpool:[s4 |/3.12.23.155:9142]打开新通道时出错(connectioninitexception:[s4 | id:0x0e9e0986,l:/192.168.1.105:53764-r:3.12.23.155/3.12.23.155:9142]协议初始化请求,步骤1(启动{cql\U版本=3.0.0,驱动程序\u name=datastax apache cassandra(r)的java驱动程序,驱动程序\u version=4.8.0,客户端\u id=f943143d-48b5-40ce-9d3c-f12123f3d687}):发送请求失败(javax.net.ssl.sslhandshakeexception:未找到与ip地址3.12.23.155匹配的主题替代名称)
内部版本.gradle:
plugins {
id 'org.springframework.boot' version '2.4.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.envase.connect'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation group: 'com.datastax.oss', name: 'java-driver-core', version: '4.8.0'
implementation group: 'com.datastax.oss', name: 'java-driver-query-builder', version: '4.8.0'
implementation group: 'com.datastax.oss', name: 'java-driver-mapper-runtime', version: '4.8.0'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-cassandra-reactive', version: '2.4.5'
对于com.datastax.oss依赖项,我也尝试了版本4.9.0和4.11.0
应用程序.conf
datastax-java-driver {
basic.contact-points = ["cassandra.us-east-2.amazonaws.com:9142"]
advanced.auth-provider {
class = PlainTextAuthProvider
username = "******"
password = "******"
}
basic.load-balancing-policy {
local-datacenter = "us-east-2"
}
advanced.connection {
timeout = 30 seconds
connect-timeout = 30 seconds
init-query-timeout = 30 seconds
}
advanced.metadata {
schema.enabled = "false"
token-map.enabled = "false"
}
advanced.ssl-engine-factory {
class = DefaultSslEngineFactory
cipher-suites = [ "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_256_CBC_SHA" ]
truststore-path = "./src/main/resources/cassandra_truststore.jks"
truststore-password = "****"
}
}
cassandra配置类:
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.internal.core.config.typesafe.DefaultDriverConfigLoader;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.AbstractReactiveCassandraConfiguration;
import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.repository.config.EnableReactiveCassandraRepositories;
@Configuration
@EnableReactiveCassandraRepositories
public class CassandraSetup extends AbstractReactiveCassandraConfiguration {
@Value("${cassandra.contact-points}")
private String contactPoints;
@Value("${cassandra.port}")
private int port;
@Value("${cassandra.keyspace}")
private String keyspace;
@Value("${cassandra.data.local-datacenter}")
private String dataCenter;
@Override
protected String getKeyspaceName() {
return keyspace;
}
@Override
protected String getContactPoints() {
return contactPoints;
}
@Override
protected int getPort() {
return port;
}
@Override
public SchemaAction getSchemaAction() {
return SchemaAction.NONE;
}
@Override
protected CqlSession getRequiredSession() {
DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
return CqlSession.builder().withConfigLoader(loader).withLocalDatacenter(dataCenter).build();
}
}
不管我怎么尝试,我还是不断地犯同样的错误。任何帮助都将不胜感激。
1条答案
按热度按时间u2nhd7ah1#
问题看起来与您正在使用的证书有关
这就是线索:
"javax.net.ssl.SSLHandshakeException: No subject alternative names matching IP address 3.12.23.15"
检查这个:java certificateexception“没有与ip地址匹配的主题可选名称。。。“找到”