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

📄 blasterhttpproxyservlet.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
         try {            HttpPushHandler pushHandler = BlasterHttpProxy.getHttpPushHandler(sessionId);            pushHandler.push(new PushDataItem(PushDataItem.LOGGING, "if (parent.error != null) parent.error('"+codedText+"');\n"));         } catch (XmlBlasterException e2) {            PrintWriter out = res.getWriter();            out.println(HttpPushHandler.alert(e.getMessage()));         }      } catch (Exception e) {         log.severe("Caught Exception: " + e.toString());         e.printStackTrace();         try {            HttpPushHandler pushHandler = BlasterHttpProxy.getHttpPushHandler(sessionId);            pushHandler.push(new PushDataItem(PushDataItem.LOGGING, "if (parent.error != null) parent.error('"+e.toString()+"');\n"));         } catch (XmlBlasterException e2) {            PrintWriter out = res.getWriter();            out.println(HttpPushHandler.alert(e.toString()));         }      }   }   /**    * POST request from the browser.    * Handles the following requests 'ActionType' from the browser<br />    * <ul>    *    <li>logout</li>    *    <li>get - The synchronous get is not supported</li>    *    <li>subscribe</li>    *    <li>unSubscribe</li>    *    <li>publish</li>    *    <li>erase</li>    * </ul>    * <p>    * This method is called through a SUBMIT of a HTML FORM,<br>    * the TARGET should be set to "requestFrame".    * The parameter ActionType must be set to one of the above methods.<br />    * For an explanation of these methods see the file xmlBlaster.idl    * <p />    * The asynchronous updates are pushed into the 'callbackFrame' of your browser    * <p />    * The key/qos values are expected to be URLEncoded    * <p />    * Allows simple subscribe/unSubscribe/erase of the form    *    <pre>?ActionType=subscribe&key.oid=cpuinfo</pre>    * and complete key XML strings like    *    <pre>?ActionType=subscribe&key=&lt;key oid='hello'>&lt;/key></pre>    * as well.<br />    * QoS is optional, the content only needed when publishing    * @param req Data from browser    * @param res Response of the servlet    */   public void doPost(HttpServletRequest req, HttpServletResponse res)                               throws ServletException, IOException   {      res.setContentType("text/html");      PrintWriter out = res.getWriter();      //HttpSession session = req.getSession();      /*HttpSession session =*/ req.getSession(false);      String sessionId = req.getRequestedSessionId();      log.info("Entering servlet doPost() ...");      I_XmlBlasterAccess xmlBlaster = null;      HttpPushHandler pushHandler = null;      try {         pushHandler = BlasterHttpProxy.getHttpPushHandler(sessionId);         xmlBlaster = pushHandler.getXmlBlasterAccess();      }      catch (XmlBlasterException e) {         log.severe("Caught XmlBlaster Exception: " + e.getMessage());         return;      }      try {         String actionType = Util.getParameter(req, "ActionType", "NONE");         MethodName action;         try {            action = MethodName.toMethodName(actionType);         }         catch (IllegalArgumentException ie) {            throw new Exception("Unknown or missing 'ActionType=" + actionType + "' please choose 'subscribe' 'unSubscribe' 'erase' etc.");         }         // Extract the message data         String oid = Util.getParameter(req, "key.oid", null);         if (oid != null) oid = Global.decode(oid, ENCODING);         String key = Util.getParameter(req, "key", null);         if (key != null) {            key = Global.decode(key, ENCODING);            if (log.isLoggable(Level.FINEST)) log.finest("key=\n'" + key + "'");         }                  String content = Util.getParameter(req, "content", null);         if (content != null) {            content = Global.decode(content, ENCODING);         }         else            content = "";         if (log.isLoggable(Level.FINEST)) log.finest("content=\n'" + content + "'");         String qos = Util.getParameter(req, "qos", null);         if (qos != null) {            qos = Global.decode(qos, ENCODING);         }         else            qos = "";          if (log.isLoggable(Level.FINEST)) log.finest("qos=\n'" + qos + "'");         if (action.equals(MethodName.SUBSCRIBE)) { // "subscribe"            log.fine("subscribe arrived ...");                        if (oid != null) {               SubscribeKey xmlKey = new SubscribeKey(glob, oid);               SubscribeReturnQos ret = xmlBlaster.subscribe(xmlKey.toXml(), qos);               log.info("Subscribed to simple key.oid=" + oid + ": " + ret.getSubscriptionId());            }            else if (key != null) {               SubscribeReturnQos ret = xmlBlaster.subscribe(key, qos);               log.info("Subscribed to " + key + ": SubscriptionId=" + ret.getSubscriptionId() + " qos=" + qos);            }            else {               String str = "Please call servlet with some 'key.oid=...' or 'key=<key ...' when subscribing";               log.severe(str);               htmlOutput(str, res);               return;            }         }         else if (action.equals(MethodName.UNSUBSCRIBE)) { // "unSubscribe"            log.fine("unSubscribe arrived ...");            //UnSubscribeReturnQos[] ret;            if (oid != null) {               UnSubscribeKey xmlKey = new UnSubscribeKey(glob, oid);               /*ret = */xmlBlaster.unSubscribe(xmlKey.toXml(), qos);            }            else if (key != null) {               /*ret = */xmlBlaster.unSubscribe(key, qos);            }            else {               String str = "Please call servlet with some 'key.oid=...' or 'key=<key ...' when unsubscribing";               log.severe(str);               htmlOutput(str, res);               return;            }         }         else if (action.equals(MethodName.GET)) { // "get"            throw new Exception("Synchronous ActionType=get is not supported");         }         else if (action.equals(MethodName.PUBLISH)) { // "publish"            log.fine("publish arrived ...");            if (key == null) {               String str = "Please call servlet with some key when publishing";               log.severe(str);               htmlOutput(str, res);               return;            }            if (content == null)               content = "";            log.info("Publishing '" + key + "'");            MsgUnit msgUnit = new MsgUnit(glob, key, content.getBytes(), qos);            try {               PublishReturnQos prq = xmlBlaster.publish(msgUnit);               log.fine("Success: Publishing done, returned oid=" + prq.getKeyOid());            } catch(XmlBlasterException e) {               log.warning("XmlBlasterException: " + e.getMessage());            }         }         else if (action.equals(MethodName.ERASE)) { // "erase"            log.fine("erase arrived ...");            //EraseReturnQos[] ret;            if (oid != null) {               EraseKey ek = new EraseKey(glob, oid);               /*ret =*/ xmlBlaster.erase(ek.toXml(), qos);            }            else if (key != null) {               /*ret =*/ xmlBlaster.erase(key, qos);            }            else {               String str = "Please call servlet with some 'key.oid=...' or 'key=<key ...' when subscribing";               log.severe(str);               htmlOutput(str, res);               return;            }         }         else if (action.equals(MethodName.PING)) { // "ping"            log.fine("ping arrived, doing nothing ...");            //String ret = xmlBlaster.ping(qos);         }         else {            throw new Exception("Unknown or missing 'ActionType=" + actionType + "' please choose 'subscribe' 'unSubscribe' 'erase' etc.");         }      } catch (XmlBlasterException e) {         log.severe("Caught XmlBlaster Exception: " + e.getMessage());         String codedText = Global.encode( e.getMessage(), ENCODING );         pushHandler.push(new PushDataItem(PushDataItem.LOGGING, "if (parent.error != null) parent.error('"+codedText+"');\n"));      } catch (Exception e) {         log.severe("RemoteException: " + e.getMessage());         e.printStackTrace();         out.println("<body>http communication problem</body>");      }   }   /**    * Setting the system properties.    * <p />    * These may be overwritten in zone.properties, e.g.    *    servlets.default.initArgs=servlets.default.initArgs=org.xml.sax.parser=org.apache.crimson.parser.Parser2    * <p />    * We set the properties to choose JacORB and Suns XML parser as a default.    */   static public final void initSystemProperties(ServletConfig conf)   {      Properties props = System.getProperties();      // Check for orb configuration      if (conf.getInitParameter("org.omg.CORBA.ORBClass") != null) { // "org.jacorb.orb.ORB"         props.put( "org.omg.CORBA.ORBClass", conf.getInitParameter("org.omg.CORBA.ORBClass"));         log.info("Using servlet system parameter org.omg.CORBA.ORBClass=" + props.get("org.omg.CORBA.ORBClass"));      }      if (conf.getInitParameter("org.omg.CORBA.ORBSingletonClass") != null) { // "org.jacorb.orb.ORBSingleton");         props.put( "org.omg.CORBA.ORBSingletonClass", conf.getInitParameter("org.omg.CORBA.ORBSingletonClass"));         log.info("Using servlet system parameter org.omg.CORBA.ORBSingletonClass=" + props.get("org.omg.CORBA.ORBSingletonClass"));      }      // xmlBlaster uses Suns XML parser as default      /*      if (conf.getInitParameter("org.xml.sax.parser") != null) {         props.put( "org.xml.sax.parser", conf.getInitParameter("org.xml.sax.parser"));         log.trace(ME, "Found system parameter org.xml.sax.parser=" + conf.getInitParameter("org.xml.sax.parser"));      }      else         props.put("org.xml.sax.parser", "org.apache.crimson.parser.Parser2"); // xmlBlaster uses Suns XML parser as default      log.info(ME, "Using system parameter org.xml.sax.parser=" + props.get("org.xml.sax.parser"));      */      if (props.size() > 0) {         System.setProperties(props);      }   }   /**    * Event fired by Logger.java through interface I_LogListener.    * <p />    * Log output from log.info(); etc. into Servlet log file.    * <p />    * Note that System.err.println("Hello"); will be printed into    * the Apache error log file /var/log/httpd.error_log<br />    * I don't know what other web servers are doing with it.    * <p />    * System.out.println("Hello"); will be printed to the console    * where you started the servlet engine.    */   public void log(LogRecord record)   {      getServletContext().log(record.getMessage());   }   /**    * Returns a HTML file to the Browser.    * @param htmlData the complete HTML page    * @param response the servlet response-object    * @see HttpServletResponse    */   public void htmlOutput(String htmlData, HttpServletResponse response) throws ServletException   {      response.setContentType("text/html");      try {         PrintWriter pw;         pw = response.getWriter();         pw.println(htmlData);         pw.close();      }      catch(IOException e) {         log.warning("Could not deliver HTML page to browser:"+e.toString());         throw new ServletException(e.toString());      }   }   /**    * Report an error to the browser, which displays it in an alert() message.    * @param sessionId The browser    * @param error The text to display    */   public void popupError(HttpServletResponse response, String error)   {      try {         response.setContentType("text/html");         PrintWriter pw;         pw = response.getWriter();         pw.println(HttpPushHandler.alert(error));         pw.close();      }      catch(IOException e) {         log.severe("Sending of error failed: " + error + "\n Reason=" + e.toString());      }   }   /**    * Send XML-Data to browser.    * The browser needs to handle the data.    * @param xmlData XML data    * @param response servlet response    */   public void xmlOutput( String xmlData, HttpServletResponse response ) throws ServletException   {      response.setContentType("text/xml");      try {         PrintWriter pw;         pw = response.getWriter();         pw.println(xmlData);         pw.close();      }      catch(IOException e) {         String text = "Sending XML data to browser failed: " + e.toString();         log.warning(text);         PrintWriter pw;         try { pw = response.getWriter(); } catch(IOException e2) { log.severe("2.xml send problem"); return; }         pw.println("<html><body>Request Problems" + text + "</body></html>");         pw.close();      }   }}

⌨️ 快捷键说明

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