Я пытаюсь создать простое приложение Java, которое может подключаться к Cassandra, работающему внутри контейнера Docker, запущенного на моем локальном компьютере. Да хоть убей не могу заставить его подключиться к контейнеру!
Я запускаю свой контейнер вот так.
docker run -p 9042:9042 cassandra:latest
Мой Java код не очень изящный ..
private Cluster cluster;
private Session session;
String serverIP = "localhost";
String username = "cassandra";
String password = "cassandra";
String keyspace = "DefaultKeyspace";
public static void main(String[] args) {
CassandraTest cassandraTest = new CassandraTest();
cassandraTest.connect("localhost");
}
public void connect(String node) {
try {
String username = "cassandra";
String password = "cassandra";
String keyspace = "DefaultKeyspace";
cluster = Cluster.builder()
.addContactPoints(serverIP).withCredentials(username.trim(), password.trim())
.build();
session = cluster.connect(keyspace);
// createSchema();
Metadata metadata = cluster.getMetadata();
System.out.println("Connected to cluster:" + metadata.getClusterName());
for (Host host : metadata.getAllHosts()) {
System.out.println("Datatacenter: " + host.getDatacenter()
+ "; Host: " + host.getAddress() + "; Rack: "
+ host.getRack());
}
} catch (Exception e) {
e.printStackTrace();
}
getSession();
createSchema();
}
Но нет, что я я продолжаю получать это ..
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1:9042 (com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table schema_keyspaces))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:220)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:78)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1231)
at com.datastax.driver.core.Cluster.init(Cluster.java:158)
at com.datastax.driver.core.Cluster.connect(Cluster.java:246)
at com.datastax.driver.core.Cluster.connect(Cluster.java:279)
at CassandraTest.connect(CassandraTest.java:37)
at CassandraTest.main(CassandraTest.java:27)
Exception in thread "main" java.lang.IllegalStateException: Can't use this Cluster instance because it was previously closed
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1213)
at com.datastax.driver.core.Cluster.init(Cluster.java:158)
at com.datastax.driver.core.Cluster.connect(Cluster.java:246)
at CassandraTest.getSession(CassandraTest.java:56)
at CassandraTest.connect(CassandraTest.java:51)
at CassandraTest.main(CassandraTest.java:27)
Я также пытался использовать IP-адрес хоста docker. Как заставить его подключиться ??