由于CassandraDataSource一次只占用一个主机(节点ip)。 如果它已关闭,它将无法连接到群集中可用的其余节点。
我也尝试过:
Cluster.Builder clusterBuilder = Cluster.builder().addContactPoints("10.xx.xx.245","10.xx.xx.143").withPort(9042).withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE).withReconnectionPolicy(new ConstantReconnectionPolicy(100L).withPoolingOptions(poolingOptions).withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy()));
Cluster cluster = clusterBuilder.build();
Session session=cluster.connect("tp");
此代码提供会话对象。没有找到创建包含多个节点IP的数据源的方法。因此,如果先前连接的节点已关闭,它可以自动连接到群集中的另一个节点。
context.xml文件DS定义如下:
<Resource name="jdbc/cassandra" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="100" driverClassName="org.apache.cassandra.cql.jdbc.CassandraDriver"
url="jdbc:cassandra://nodeIP:9160/keyspace" username="cassandra"
password="cassandra" />