У меня есть основной сервлет, который обрабатывает запросы post / get.
Я использую пул соединений (jdbc / mysql со glassfish v3) и мой код сервлета:
public class Controller extends HttpServlet {
private DataSource datasource;
@Override
public void init() throws ServletException {
super.init();
try {
//Database Connection pooling:
InitialContext ctx = new InitialContext();
datasource = (DataSource)ctx.lookup("jdbc/MySQLPool");
}
catch (Exception e) {
e.printStackTrace();
}
}
private Connection getConnection() throws SQLException {
return datasource.getConnection();
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection connection=null;
try {
connection = datasource.getConnection();
Object obj= cmdFactory.getInstance().getCommand(Cmd).execute(connection);
}
и т.д ... и в конце сервлета в блоке finally я закрываю соединение
Итак, сейчас я передаю объект "connection" в качестве параметра в последней строке, который будет использоваться другими (не сервлетными) java-классами через нижние уровни приложения. Это неправильно? лучше ли передать объект источника данных (а затем в конкретных классах сделать datasource.getConnection ())? или есть что-то похожее на "getServletContext (). getAttr (database)" , которое можно использовать в других классах Java для получения этого соединения?