import java.sql.*;

public class ExampleService2 extends BaseService{

  public AService1 service1;
  public AService2 service2;
  
  public void doComplexServiceJob() {
    Connection con = null;
    try {
      con = getConnection();
      
      // Vários métodos que dependem um do outro
      doFirstJob(con);
      Result result = doSecondJobWhichDependsOnFirst(con);
      
      service1.processResult(result, con);
      service2.createResultLogInDatabase(result, con);
      
      con.commit(); // Confirma as alterações
    } catch(Exception e) {
      try {
        if (con != null) con.rollback();
      } catch(SQLException se) {
      }      
    } finnally {
      try {
        if (con != null) con.close();
      } catch(SQLException e) {
      }      
    }
  }

}