По сути, я инкапсулировал этот источник данных как поле в базовом классе, называемом DAO.В конструкторе DAO вы передаете имя JNDI соединения, которое вы хотите.
public DAO(String jndiName) throws NamingException {
ds = DataSourceFactory.getInstance().lookup(jndiName);
}
Затем во всех ваших конкретных классах вы просто расширяете DAO и можете использовать источник данных по своему усмотрению.
public concreteDAO() throws NamingException {
super("Some JNDI Name That this DAO should know");
}
В том же классе DAO есть некоторые другие служебные методы, такие какметод очистки, который молча закрывает ResultSet, Statement и Connections.Таким образом, я просто должен добавить это в предложение finally всех моих методов.