protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, Exception {
        //retardo debug
//        try {
//            Thread.sleep(80);
//        } catch (InterruptedException ex) {
//            Thread.currentThread().interrupt();
//        }
        //control de autenticación
        if (request.getSession().getAttribute("usuarioBean") == null) {
            Gson gson = new Gson();
            Map<String, String> data = new HashMap<>();
            data.put("status", "401");
            data.put("message", "error de autenticación");
            String resultado = gson.toJson(data);
            request.setAttribute("contenido", resultado);
            getServletContext().getRequestDispatcher("/jsp/messageAjax.jsp").forward(request, response);
        } else {
            String op = request.getParameter("op");
            String ob = request.getParameter("ob");
            String callop = Character.toUpperCase(ob.charAt(0)) + ob.substring(1) + Character.toUpperCase(op.charAt(0)) + op.substring(1);
            try {
                try {
                    GenericOperation operation = (GenericOperation) Class.forName("net.anariquelme.operaciones." + callop).newInstance();
                    String data = operation.execute(request, response);
                    request.setAttribute("contenido", data);
                    getServletContext().getRequestDispatcher("/jsp/messageAjax.jsp").forward(request, response);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(ControlJson.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (InstantiationException | IllegalAccessException ex) {
                Logger.getLogger(ControlJson.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }