📄 acsservlet.java
字号:
// 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 + -