Java

Conecta una aplicación de Java a TeselaDB con el driver oficial de MongoDB.

Conecta una aplicación de Java a TeselaDB con el driver oficial de MongoDB para Java. TeselaDB se presenta como un mongos, así que el driver funciona sin cambios.

Requisitos

  • Java 11 o posterior y Maven o Gradle.
  • La dirección de uno o más nodos, un usuario con readWrite sobre la base y el fichero pki/ca.pem del clúster.

Instala el driver

<dependency>
  <groupId>org.mongodb</groupId>
  <artifactId>mongodb-driver-sync</artifactId>
  <version><!-- la última versión del driver --></version>
</dependency>

Guarda la cadena de conexión

Pon la cadena en una variable de entorno y no la escribas en el código:

Shell
export TESELADB_URI="mongodb://usuario:<contraseña>@node-01:27017,node-02:27017/shop?tls=true"

Añade la CA al almacén de confianza

El driver de Java no lee tlsCAFile de la cadena. Mete la CA del clúster en un almacén de confianza con keytool y pásale ese almacén a la JVM, junto con su contraseña, en las propiedades javax.net.ssl.trustStore y javax.net.ssl.trustStorePassword al arrancar tu aplicación:

Shell
keytool -importcert -alias teseladb -file ca.pem -keystore teseladb.jks -storepass <clave>
java -Djavax.net.ssl.trustStore=teseladb.jks -Djavax.net.ssl.trustStorePassword=<clave> -jar app.jar

En la cadena de conexión de tu aplicación deja solo la opción tls=true, sin tlsCAFile.

Escribe y lee un documento

Java
try (MongoClient client = MongoClients.create(System.getenv("TESELADB_URI"))) {
    MongoCollection<Document> orders = client.getDatabase("shop").getCollection("orders");
    orders.insertOne(new Document("total", 149.5));
    System.out.println(orders.countDocuments());
}

Comprobar

El programa escribe el número de documentos de orders, que crece en uno cada vez que lo ejecutas.

Problemas frecuentes

  • La conexión se cierra antes de autenticar porque falta tls=true en la cadena.
  • El driver no confía en el certificado del nodo porque no tiene la CA de este clúster.

Ver también