sql >> Base de Datos >  >> NoSQL >> MongoDB

Use un solo MongoClient en un servicio web JavaEE

El javadoc dice:

Entonces, cuando crea un singleton con el cliente en él. Se puede reutilizar como se menciona en el Javadoc. No se requiere sincronización, ya que es seguro para subprocesos.

Una de las implementaciones podría ser:

public enum ConnectionFactory {
    CONNECTION;
    private MongoClient client = null;

    private ConnectionFactory() {
        try {
            client = new MongoClient();
        } catch (Exception e) {
            // Log it.
        }
    }

    public MongoClient getClient() {
        if (client == null)
            throw new RuntimeException();
        return client;
    }
}

y usar el cliente como, en toda la aplicación. Connection pooling será atendido por el MongoClient como está documentado.

MongoClient client = ConnectionFactory.CONNECTION.getClient();

o use la anotación @singleton:

@Singleton
public class SingletonA {

}

Consulte:http://tomee.apache.org/singleton-example.html