⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acsservlet.java

📁 openacs source for CPE wan management
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//                            host = hsthome.findByPrimaryKey(new HostsPK(oui, sn));
                            host = hsthome.findByHwidAndSn((Integer) hw.getId(), sn);
                        //System.out.println("SERVLET: after findByPrimaryKey");
                        //System.out.println("Bean url="+host.getUrl());
//                            if (!authenticate(host, request, response)) return;
//                            host.setUrl(url);
                        } catch (FinderException e) {
                            if (autoCreateCPE) {
                                try {
                                    host = hsthome.create((Integer) hw.getId(), sn, url);
                                    host.setConfigname("Default");
                                } catch (CreateException ex) {
                                    ex.printStackTrace();
                                    throw new RuntimeException();
                                }
                            } else {
                                return;
                            }
                        }
                        if (!authenticate(host, request, response)) {
                            return;
                        }
                        host.setUrl(url);

                        host.setLastcontact(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));
                        host.setCurrentsoftware(lastInform.getSoftwareVersion());
                        host.setHardware(lastInform.getHardwareVersion());
                        host.setCfgversion(lastInform.getConfigVersion());

                        Collection<SoftwareLocal> fws = hw.getFirmware();

                        /*
                        HardwareModelLocal hhh = host.getModel();
                        System.out.println ("hhh="+hhh + "model="+hhh.getDisplayName());
                         */
                        lasthost = host;
                        session.setAttribute("host", host);

                        //RunInformScript(host, lastInform);
                        RunConfigurator(request, host, lastInform, null);
                    // </editor-fold>
                    } else if (reqname.equals("TransferComplete")) {
                        logger.log(Level.INFO, ((TransferComplete) msg).toString());
                        TransferComplete tc = (TransferComplete)msg;
                        TransferCompleteResponse tr = new TransferCompleteResponse(tc.getId());
                        tr.writeTo(out);
                        countEnvelopes++;
                        
//                        countEnvelopes = OnTransferComplete((TransferComplete) msg, request, lastInform, countEnvelopes, out);
                        RunConfigurator(request, lasthost, lastInform, (TransferComplete)msg);

                    } else if (reqname.equals("GetRPCMethods")) {
                        GetRPCMethodsResponse responseGetRPCMethods = new GetRPCMethodsResponse((GetRPCMethods) msg);
                        responseGetRPCMethods.writeTo(out);
                        countEnvelopes++;
                    } else {
                        // <editor-fold defaultstate="expanded" desc="Process replies & send them to JMS listeners">
                        //System.out.println ("Process replies");
                        try {
                            if (!msg.getId ().startsWith("ignorereply")) {
                                logger.log(Level.FINEST, "Send JMS reply for " + msg.getId ());
                                jms.sendResponseMessage(msg, msg.getId());
                            }
                        } catch (JMSException e) {
                            Logger.getLogger(getClass().getName()).log(Level.WARNING, "Exception while sending", e);
                        }
                    }
                // </editor-fold>
                } catch (NoSuchElementException e) {
                    //System.out.println("NoSuchElementException");
                    logger.log(Level.SEVERE, "While parsing", e);
                    return;
                } catch (IllegalArgumentException e) {
                    logger.log(Level.WARNING, "IllegalArgumentException", e);
                }
            } catch (SOAPException e) {
                logger.log(Level.SEVERE, "While parsing", e);
                break;
            } catch (IllegalArgumentException e) {
                logger.log(Level.WARNING, "IllegalArgumentException", e);
            }
        }
        // </editor-fold>
        // <editor-fold defaultstate="collapsed" desc="Process requests from queue">
        try {
            jms.sendResponseMessage(new Inform(), null);

            if (lastInform == null) {
                System.out.println("No Inform received on this session.");
                return;
            }
            oui = lastInform.oui;
            sn = lastInform.sn;
            MessageConsumer consumer = (MessageConsumer) session.getAttribute("consumer");
            if (consumer == null) {
//                consumer = queuesession.createConsumer(queue, "OUI='" + oui + "' AND SN='" + sn + "'");
                //String filter = "OUI='" + oui + "' AND SN='" + sn + "'";
                String filter = "HWID='" + hw.getId() + "' AND SN='" + sn + "'";

                consumer = jms.createConsumer(filter);
                session.setAttribute("consumer", consumer);
                logger.log(Level.FINEST, "Created consumer: " + filter);
            }
            logger.log(Level.FINEST, "Envelopes: " + countEnvelopes + " of " + maxEnvelopes);
            int idle = 0, keepalive = 0;

            //countEnvelopes = 0;

            while (countEnvelopes < maxEnvelopes) {
                try {
//                    ObjectMessage jm = (ObjectMessage)consumer.receive((countEnvelopes>0) ? 1: 5000); // wait if only we haven't got something to send'
                    ObjectMessage jm = (ObjectMessage) ((countEnvelopes > 0) ? consumer.receiveNoWait() : consumer.receive(5000)); // wait if only we haven't got something to send'

                    System.out.println("Received: " + ((jm == null) ? "null" : ((Message) jm.getObject()).name));
                    if (jm == null) {
                        if (idle++ >= keepalive) {
                            break;
                        } else {
                            // maybe send some easy call e.g. getrpcmethods
                            GetRPCMethods g = new GetRPCMethods("ignorereply");
                            g.writeTo(out);
                            countEnvelopes++;
                            continue;
                        }
                    }
                    idle = 0;
                    Message m = (Message) jm.getObject();
                    //System.out.println ("Msgid is "+m.id);
                    m.writeTo(out);
                    countEnvelopes++;
                } catch (JMSException e) {
                    logger.log(Level.SEVERE, "JMSException in receive loop" + e.getMessage());
                    throw new ServletException();
                }
            }
        } catch (JMSException ex) {
            ex.printStackTrace();
        }

        response.setContentLength(out.size());
        String sout = out.toString();
        sout = sout.replace('\'', '"');
        //sout = sout.replace(' ', '\n');
        response.getOutputStream().print(sout);
        //out.writeTo(response.getOutputStream());
        System.out.println("End of processing");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * 
     * 
     * 
     * @param request ACSServlet request
     * @param response ACSServlet response
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * 
     * 
     * 
     * @param request ACSServlet request
     * @param response ACSServlet response
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the ACSServlet.
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
    
    private void RunConfigurator (HttpServletRequest request, HostsLocal host, Inform lastInform, TransferComplete transferComplete) {
        String fwpath = Util.getFirmwarePath(this);
        String urlServer = request.getScheme() + "://" + request.getLocalAddr() + ":" + request.getLocalPort() + request.getContextPath();
        Configurator cfgr = new Configurator(lastInform, host, transferComplete, fwpath, urlServer);
        cfgr.start();
    }
    @Override
    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("PUT FILE");
        resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
    }

    public ACSServlet() {
    }

    @Override
    public void init() throws ServletException {
        //setupJMS();
        Authenticator.setDefault(new MyAuthenticator());
        try {
            jms = new Jms();
        } catch (Exception e) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, e.getMessage());
            throw new ServletException(e);
        }
    }

    @Override
    public void destroy() {
        jms.closeJMS();
    }
/*
    private int OnTransferComplete(TransferComplete transferComplete, HttpServletRequest request, Inform lastInform, int countEnvelopes, OutputStream out) {
        TransferCompleteResponse tr = new TransferCompleteResponse(transferComplete.id);
        tr.writeTo(out);
        
        HostsLocalHome hsthome = Ejb.lookupHostsBean();
        try {
//            HostsLocal host = hsthome.findByPrimaryKey(new HostsPK(lastInform.oui, lastInform.sn));
            HardwareModelLocal hw = Ejb.lookupHardwareModelBean().findByOuiAndClass(lastInform.oui, lastInform.ProductClass);
            HostsLocal host = hsthome.findByHwidAndSn((Integer) hw.getId(), lastInform.sn);
            String result = (transferComplete.FaultCode != 0) ? transferComplete.FaultCode + ": " + transferComplete.FaultString : "OK";
            if (transferComplete.CommandKey.equals("dlConfig")) {
                host.setCfgupdres(result);
            } else if (transferComplete.CommandKey.equals("dlSoftware")) {
                host.setSfwupdres(result);
            } else {
                jms.sendResponseMessage(transferComplete, transferComplete.CommandKey);

            }
            RunConfigurator(request, host, lastInform, transferComplete);
//            RunTransferCompleteScript(host, lastInform, transferComplete);
        } catch (FinderException e) {
            throw new RuntimeException();
        } catch (JMSException e) {
        }

        return ++countEnvelopes;
    }
*/
    private Jms jms;
    private final int MIN_MAX_ENVELOPES = 1; // Minimal value for MaxEnevelopes
    private final int MY_MAX_ENVELOPES = 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -