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

📄 subscribemessage.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      SubscribeMessage.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment:   Code to subscribe from command line for a messageVersion:   $Id: SubscribeMessage.java 14867 2006-03-08 09:09:13Z goetzger $------------------------------------------------------------------------------*/package org.xmlBlaster.client.reader;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.client.I_XmlBlasterAccess;import org.xmlBlaster.client.key.UpdateKey;import org.xmlBlaster.client.qos.UpdateQos;import org.xmlBlaster.client.I_Callback;import org.xmlBlaster.client.key.SubscribeKey;import org.xmlBlaster.client.qos.SubscribeQos;import org.xmlBlaster.client.qos.SubscribeReturnQos;import org.xmlBlaster.util.Global;import org.xmlBlaster.client.qos.ConnectQos;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.util.def.Constants;/** * Subscribe from command line for a message. * <br /> * Use this as a command line tool to subscribe for messages from xmlBlaster, * for example for debugging reasons. * Invoke examples:<br /> * <pre> *    java org.xmlBlaster.client.reader.SubscribeMessage  -session.name Tim  -passwd  secret  -oid  __cmd:?totalMem * </pre> * For other supported options type * <pre> *    java org.xmlBlaster.client.reader.SubscribeMessage -? * </pre> */public class SubscribeMessage implements I_Callback{   private static final String ME = "SubscribeMessage";   private final Global glob;   private static Logger log = Logger.getLogger(SubscribeMessage.class.getName());   private I_XmlBlasterAccess xmlBlasterConnection;   private String subscriptionHandle;   /**    * Constructs the SubscribeMessage object.    * <p />    * Start with parameter -? to get a usage description.<br />    * These command line parameters are not merged with xmlBlaster.property properties.    * @param args      Command line arguments    */   public SubscribeMessage(Global glob) throws XmlBlasterException   {      this.glob = glob;      String oidString = glob.getProperty().get("oid", (String)null);      String xpathString = glob.getProperty().get("xpath", (String)null);      if (oidString == null && xpathString == null) {         usage();         log.severe("Specify the message oid or a xpath query");         System.exit(1);      }      String xmlKey;      String queryType;      if (oidString != null) {         xmlKey = oidString;         queryType = Constants.EXACT;      }      else {         xmlKey = xpathString;         queryType = Constants.XPATH;      }      setUp();  // login      subscriptionHandle = subscribe(xmlKey, queryType);      try { Thread.sleep(10000000L); } catch (Exception e) { }      log.warning("Bye, time is over.");   }   /**    * Open the connection, and subscribe to the message    */   public SubscribeMessage(Global glob, String xmlKey, String queryType)   {      this.glob = glob;      setUp();  // login      subscriptionHandle = subscribe(xmlKey, queryType);   }   /**    * Sets up the fixture.    * <p />    * Connect to xmlBlaster and login    */   private void setUp()   {      try {         xmlBlasterConnection = glob.getXmlBlasterAccess();         ConnectQos qos = new ConnectQos(glob);         xmlBlasterConnection.connect(qos, this); // Login to xmlBlaster      }      catch (Exception e) {          log.severe(e.toString());          e.printStackTrace();      }   }   /**    * Logout from xmlBlaster    */   private void tearDown()   {      unSubscribe(subscriptionHandle);      xmlBlasterConnection.disconnect(null);   }   private String subscribe(String xmlKey, String queryType)   {      try {         SubscribeKey xmlKeyWr = new SubscribeKey(glob, xmlKey, queryType);         SubscribeQos xmlQos = new SubscribeQos(glob);         SubscribeReturnQos ret = xmlBlasterConnection.subscribe(xmlKeyWr.toXml(), xmlQos.toXml());         String subscriptionId = ret.getSubscriptionId();         log.info("Subscribed to [" + xmlKey + "] " + queryType + ", subscriptionId=" + subscriptionId);         return subscriptionId;      } catch(XmlBlasterException e) {         log.severe("XmlBlasterException:\n" + e.getMessage());         System.exit(1);      }      return null;   }   /**    * Unsubscribe from given subscription    * @param subscriptionId The id you got from your subscription    */   private void unSubscribe(String subscriptionId)   {      if (subscriptionId == null || subscriptionId.length() < 1) return;      try {         SubscribeKey xmlKey = new SubscribeKey(glob, subscriptionId);         SubscribeQos xmlQos = new SubscribeQos(glob);         xmlBlasterConnection.unSubscribe(xmlKey.toXml(), xmlQos.toXml());         if (log.isLoggable(Level.FINE)) log.fine("Unsubscribed from " + subscriptionId + " (GML and XML Packages)");      } catch(XmlBlasterException e) {         log.warning("unSubscribe(" + subscriptionId + ") failed: XmlBlasterException: " + e.getMessage());      }   }   public String update(String loginName, UpdateKey updateKey, byte[] content, UpdateQos updateQos)   {      System.out.println("");      System.out.println("============= START " + updateKey.getOid() + " =======================");      log.info("Receiving update of a message ...");      System.out.println("<xmlBlaster>");      System.out.println(updateKey.toXml());      System.out.println("");      System.out.println("<content>");      System.out.println(new String(content));      System.out.println("</content>");      System.out.println(updateQos.toXml());      System.out.println("</xmlBlaster>");      System.out.println("============= END " + updateKey.getOid() + " =========================");      System.out.println("");      return Constants.RET_OK; // "<qos><state id='OK'/></qos>";   }   /**    * Command line usage.    */   private static void usage()   {      System.out.println(Global.instance().usage());      System.out.println("----------------------------------------------------------");      System.out.println("java org.xmlBlaster.client.reader.SubscribeMessage <options>");      System.out.println("----------------------------------------------------------");      System.out.println("Options:");      System.out.println("   -?                  Print this message.");      System.out.println("");      System.out.println("   -oid <XmlKeyOid>    The unique oid of the message");      System.out.println("   -xpath <XPATH>      The XPATH query");      //I_XmlBlasterAccess.usage();      //log.usage();      System.out.println("----------------------------------------------------------");      System.out.println("Example:");      System.out.println("java org.xmlBlaster.client.reader.SubscribeMessage -oid mySpecialMessage");      System.out.println("");      System.out.println("java org.xmlBlaster.client.reader.SubscribeMessage -xpath //key/CAR");      System.out.println("----------------------------------------------------------");      System.out.println("");   }   /**    * Invoke:  java org.xmlBlaster.client.reader.SubscribeMessage  -loginName Tim  -passwd secret  -oid __cmd:?totalMem    */   public static void main(String args[])   {      Global glob = new Global();      if (glob.init(args) != 0) {         usage();         System.exit(1);      }      try {         new SubscribeMessage(glob);      } catch (Throwable e) {         e.printStackTrace();         System.err.println(SubscribeMessage.ME + ": " + e.toString());      }   }}

⌨️ 快捷键说明

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