Używam aplikacji WWW Java na serwerze Tomcat i chciałbym wiedzieć, co jest "najlepszą praktyką" pod względem dostępu do połączenia z bazą danych z JNDI Tomcat?Właściwy sposób wywoływania źródła danych JNDI w Tomcat
Obecnie jest to w zasadzie to, co robię za każdym razem, kiedy potrzeba, aby uzyskać dostęp do bazy danych:
Context envContext = null;
DataSource dataSource = null;
try {
envContext = (Context)ctx.lookup("java:/comp/env");
dataSource = (DataSource)envContext.lookup("jdbc/datasource");
return dataSource.getConnection();
} catch (Exception e){
e.printStackTrace();
return null;
}finally {
if(envContext != null){
try{
envContext.close();
} catch (NamingException e){
e.printStackTrace();
}
}
}
Jednakże, jest to właściwy sposób wyszukać połączenie z JNDI za każdym razem, gdy chcesz uzyskać dostęp do bazy danych ? Czy powinienem zamiast tego odwoływać się do kontekstu lub źródła danych?
Dokładnie taki rodzaj odpowiedzi, którego szukałem, dziękuję. Kolejne pytanie, czy za każdym razem, gdy robię dostęp do danych, jest dużo narzutów w tworzeniu nowego kontekstu? – Avanst
Relatywnie mówiąc - nie wierzę w to. Ale jeśli zepsułeś to i stworzyłeś Kontekst za każdym razem, a jedynie buforowałeś źródło danych - podejrzewam, że zobaczysz różnicę. Ale praktycznie rzecz biorąc - liczba razy, kiedy otrzymujesz DataSource (lub Kontekst) jest minimalna w porównaniu do pozostałych działań w przetwarzaniu żądania. –
Wyszukiwanie JNDI nie jest kosztowne, wyszukiwania 'InitialContext' są ** BARDZO DROŻNE ** w każdym kontenerze aplikacji i powinny być wykonywane tylko raz przy uruchomieniu aplikacji. Większość ludzi nie zna różnicy. –