@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
 @WebMethod
 public Long[] getProximoRangoOrden(@WebParam Long idRecaudador) throws Exception {
   try {
     synchronized (RedFacadeImpl.bloqueo) {
       Recaudador rec = this.recaudadorFacade.getLocked(idRecaudador);
       Red red = this.getLocked(rec.getRed().getIdRed());
       Long rangoValores[] = new Long[2];
       rangoValores[0] = red.getNumeroOrdenProximo();
       // incluye el extremo
       rangoValores[1] = rangoValores[0] + (rec.getNumeroOrdenTamRango() - 1);
       red.setNumeroOrdenProximo(rangoValores[1] + 1);
       this.merge(red);
       RedRecaudadorNumeroOrden rrno = new RedRecaudadorNumeroOrden();
       rrno.setFechaHora(new Date());
       rrno.setNumeroInicial(rangoValores[0]);
       rrno.setNumeroFinal(rangoValores[1]);
       rrno.setRecaudador(rec);
       rrno.setRed(rec.getRed());
       this.redRecNumeroOrdenFacade.merge(rrno);
       return rangoValores;
     }
   } catch (Exception e) {
     context.setRollbackOnly();
     e.printStackTrace();
     return new Long[0];
   }
 }
 /*
  * public List<HabilitacionRecaudadorRed>
  * obtenerHabilitacionesRecaudadorRed(Integer idRed) {
  * HabilitacionRecaudadorRed ejemplo=new HabilitacionRecaudadorRed();
  * ejemplo.setRed(new Red(idRed)); return
  * this.habilitacionRecaudadorRedFacade.list(ejemplo);
 }
  */
 public boolean comprobarHabilitacionRecaudador(Long idRed, Long idRecaudador) {
   Recaudador rec = new Recaudador();
   rec.setIdRecaudador(idRecaudador);
   rec.setRed(new Red(idRed));
   return this.recaudadorFacade.total(rec) == 1;
 }