Il javadoc dice:
Quindi, quando crei un singleton con il client al suo interno. Può essere riutilizzato come menzionato nel Javadoc. Non è richiesta alcuna sincronizzazione, poiché è thread-safe.
Una delle implementazioni potrebbe essere:
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 utilizzare il client come, in tutta l'applicazione. Connection pooling sarà curato dal MongoClient come documentato.
MongoClient client = ConnectionFactory.CONNECTION.getClient();
oppure usa l'annotazione @singleton:
@Singleton
public class SingletonA {
}
Fare riferimento a:https://tomee.apache.org/singleton-example.html