MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Use um único MongoClient em um serviço Web JavaEE


O javadoc diz:

Então, quando você cria um singleton com o cliente nele. Ele pode ser reutilizado conforme mencionado no Javadoc. Nenhuma sincronização é necessária, pois é thread-safe.

Uma das implementações poderia 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;
    }
}

e usar o cliente como, em toda a aplicação. Connection pooling será cuidado pelo MongoClient conforme documentado.
MongoClient client = ConnectionFactory.CONNECTION.getClient();

ou use a anotação @singleton:
@Singleton
public class SingletonA {

}

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