आप एक अद्वितीय डेटा स्रोत (और कनेक्शन, और dbMainConnection) को स्थिर में संग्रहीत कर रहे हैं आपकी कक्षा का चर। हर बार जब कोई डेटा स्रोत मांगता है, तो आप पिछले वाले को नए से बदल देते हैं। यदि JNDI से डेटा स्रोत प्राप्त करते समय कोई अपवाद होता है, तो स्थिर डेटा स्रोत यथावत रहता है। आपको स्थिर चर में कुछ भी स्टोर नहीं करना चाहिए। चूंकि आपका dbMainConnection वर्ग डेटाबेस के नाम से बनाया गया है, और कई डेटाबेस नाम हैं, इसलिए इसे सिंगलटन बनाने का कोई मतलब नहीं है।
डेटा स्रोत तक पहुंचने के लिए बस निम्न कोड का उपयोग करें:
public final class DataSourceUtil {
/**
* Private constructor to prevent unnecessary instantiations
*/
private DataSourceUtil() {
}
public static DataSource getDataSource(String name) {
try {
Context ctx = new InitialContext();
String database = "jdbc/" + name;
return (javax.sql.DataSource) ctx.lookup (database);
}
catch (NamingException e) {
throw new IllegalStateException("Error accessing JNDI and getting the database named " + name);
}
}
}
और कॉल करने वालों को डेटा स्रोत से एक कनेक्शन प्राप्त करने दें और जब वे इसका उपयोग करना समाप्त कर लें तो इसे बंद कर दें।