Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Usar a mesma conexão

$
0
0

@picklesdog70 escreveu:

Tenho a seguinte estrutura:

  • Uma única servlet

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
process(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	process(req, resp);
}

private void process(HttpServletRequest req, HttpServletResponse res) throws ServletException{	

	String path = req.getServletPath();
	path = path.substring(1, path.indexOf("."));

	String actionClass = actions.getProperty(path);

	if(actionClass == null){
		throw new ServletException("Url não encontrada. Verifique o endereço digitado");
	}			

	try{			
		Action action = (Action) Class.forName(actionClass).newInstance();
		action.setRequest(req);
		action.setResponse(res);
		action.runAction();
	} catch (Exception e) {
		throw new ServletException(e);
	}

}
  • Uma Action Abstrata

public abstract class Action {

private HttpServletRequest request;
private HttpServletResponse response;

public abstract void process() throws Exception;

public void runAction() throws Exception{		
	Connection connection = DbConnectionFactory.getInstance();
	try{
		process();
		connection.commit();
	}catch (Exception e) {
		connection.rollback();
		throw new ActionException(e);
	}finally {
		connection.close();
	}
}
  • Actions que extendem a Action abstrata e implementam o método process();

public class TripSaveAction extends Action {
@Override
public void process() throws Exception {
Trip trip = new Trip();

	TripService tripService = new TripService();
	tripService.save(trip);

	redirect("index.html");
}

}

  • Service pode chamar um DAO

public class TripService extends Service {

@Override
public Trip save(Trip trip) throws Exception{
	try{
		TripDao tripDao = new TripDao();
		return tripDao.save(trip);
	}catch (Exception e) {
		throw new ServiceException(e.getMessage());
	}
}
  • Por fim, DAOs

public class TripDao extends Dao {

@Override
public Trip save(Trip trip) throws Exception{
	try{
		PreparedStatement stmt = DbConnectionFactory.getInstance().prepareStatement("INSERT INTO

Estou com dúvida em como usar a conexão/transação que é aberta na Action Abstrata no meu DAO...... para que ao final seja feito o commit() ou rollback() em caso de erro......do jeito que esta agora...... o DAO pega outra conexão no pool.......

Mensagens: 11

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>