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

📄 serverhelper.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
package org.xmlBlaster.test.cluster;import java.util.logging.Logger;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.EmbeddedXmlBlaster;// for client connections:import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.client.qos.ConnectQos;import org.xmlBlaster.client.I_Callback;import org.xmlBlaster.client.I_ConnectionStateListener;import org.xmlBlaster.client.I_XmlBlasterAccess;import org.xmlBlaster.util.dispatch.ConnectionStateEnum;import java.io.File;/** * Set up the cluster nodes.  * <p /> * Don't forget to call tearDown() when you are done. * * @see <a href="http://www.xmlblaster.org/xmlBlaster/doc/requirements/cluster.html" target="others">Cluster requirement</a> */public class ServerHelper {   private Global glob_;   private static Logger log = Logger.getLogger(ServerHelper.class.getName());   public static int heronPort = 7600;   public static int avalonPort = 7601;   public static int golanPort = 7602;   public static int frodoPort = 7603;   public static int bilboPort = 7604;   private EmbeddedXmlBlaster heronThread, avalonThread, golanThread, frodoThread, bilboThread;   private Global heronGlob, avalonGlob, golanGlob, frodoGlob, bilboGlob;   public ServerHelper(Global glob, Logger log, String name) {      this.glob_ = glob;      ServerHelper.log = log;      setUp();   }   /**    * Find the property files, we look in the current directory    * and in ./cluster    * @exception IllegalArgumentException if you are in the wrong directory    */   private String findPropertyFile(String fn) {      File f = new File(fn);      if (f.canRead())         return fn;      f = new File("cluster" + File.separatorChar + fn);      if (f.canRead())         return f.getPath();      log.severe("Can't locate property file " + fn + ". Please check your current directory or cluster directory");      throw new IllegalArgumentException("Can't locate property file " + fn + ". Please check your current directory or cluster directory");   }   public Global getHeronGlob() {      return heronGlob;   }   public Global getAvalonGlob() {      return avalonGlob;   }   public Global getGolanGlob() {      return golanGlob;   }   public Global getFrodoGlob() {      return frodoGlob;   }   public Global getBilboGlob() {      return bilboGlob;   }   public void initHeron() {      String[] args = { "-propertyFile", findPropertyFile("heron.properties"), "-/node/heron/logging", "FINEST" };      heronGlob = this.glob_.getClone(args);   }   public void initAvalon() {      String[] args = { "-propertyFile", findPropertyFile("avalon.properties") };      avalonGlob = this.glob_.getClone(args);   }   public void initGolan() {      String[] args = { "-propertyFile", findPropertyFile("golan.properties") };      golanGlob = this.glob_.getClone(args);   }   public void initFrodo() {      String[] args = { "-propertyFile", findPropertyFile("frodo.properties") };      frodoGlob = this.glob_.getClone(args);   }   public void initBilbo() {      String[] args = { "-propertyFile", findPropertyFile("bilbo.properties"), "-/node/bilbo/logging", "INFO" };      bilboGlob = this.glob_.getClone(args);      if (!"bilbo".equals(bilboGlob.getId())) {         String tmp = "Invalid cluster node id, check biblo.properties or" +                   " change to the directory where the property files are!";         log.severe(tmp);         throw new IllegalArgumentException(tmp); // just to be shure      }   }   public void startHeron() {      heronThread = EmbeddedXmlBlaster.startXmlBlaster(heronGlob);      log.info("'heron' is ready for testing on bootstrapPort " + heronPort);   }   public void startAvalon() {      avalonThread = EmbeddedXmlBlaster.startXmlBlaster(avalonGlob);      log.info("'avalon' is ready for testing on bootstrapPort " + avalonPort);   }   public void startGolan() {      golanThread = EmbeddedXmlBlaster.startXmlBlaster(golanGlob);      log.info("'golan' is ready for testing on bootstrapPort " + golanPort);   }   public void startFrodo() {      frodoThread = EmbeddedXmlBlaster.startXmlBlaster(frodoGlob);      log.info("'frodo' is ready for testing on bootstrapPort " + frodoPort);   }   public void startBilbo() {      bilboThread = EmbeddedXmlBlaster.startXmlBlaster(bilboGlob);      log.info("'bilbo' is ready for testing on bootstrapPort " + bilboPort);   }   public void stopHeron() {      if (heronThread != null) { heronThread.stopServer(true); heronThread=null; }   }   public void stopAvalon() {      if (avalonThread != null) { avalonThread.stopServer(true); avalonThread=null; }   }   public void stopGolan() {      if (golanThread != null) { golanThread.stopServer(true); golanThread=null; }   }   public void stopFrodo() {      if (frodoThread != null) { frodoThread.stopServer(true); frodoThread=null; }   }   public void stopBilbo() {      if (bilboThread != null) { bilboThread.stopServer(true); bilboThread=null; }   }   /** Connect in fail save mode to a server node (as given in glob.getId()) */   public I_XmlBlasterAccess connect(final Global glob, I_Callback cb) throws XmlBlasterException {      final String clientName = "ClientTo[" + glob.getId() + "]";      if (glob.getId() == null || glob.getId().length() < 1) log.severe("glob.getId() is not set");      I_XmlBlasterAccess con = glob.getXmlBlasterAccess();      con.registerConnectionListener(new I_ConnectionStateListener() {            public void reachedAlive(ConnectionStateEnum oldState, I_XmlBlasterAccess connection) {               log.info("Changed from connection state " + oldState +                                     " to " + ConnectionStateEnum.ALIVE + " with " +                                     connection.getQueue().getNumOfEntries() + " queue entries pending" +                                     ": We were lucky, reconnected to " + connection.getGlobal().getId());            }            public void reachedPolling(ConnectionStateEnum oldState, I_XmlBlasterAccess connection) {               log.warning("DEBUG ONLY: Changed from connection state " + oldState + " to " +                                    ConnectionStateEnum.POLLING + ": Lost connection to " + connection.getGlobal().getId());            }            public void reachedDead(ConnectionStateEnum oldState, I_XmlBlasterAccess connection) {               log.severe("DEBUG ONLY: Changed from connection state " + oldState + " to " +                                     ConnectionStateEnum.DEAD + ": Lost connection to " + connection.getGlobal().getId());            }         });      ConnectQos qos = new ConnectQos(glob, clientName, "secret");      con.connect(qos, cb);      log.info("Connected to xmlBlaster.");      return con;   }   /**    * Initialize the server setup ...    * <p />    * Is done automatically in constructor    */   private void setUp() {      log.info("Entering setUp(), test starts");      // The init is used for server nodes but used for client connections as well      initHeron();      initAvalon();      initGolan();      initFrodo();      initBilbo();      // Starts a cluster node      //startHeron();      //startAvalon();      //startGolan();      //startFrodo();      //startBilbo();      // Do it yourself   }   /**    * Cleaning up ...    * <p />    * You have to call this when you are done.    */   public void tearDown() {      log.info("Entering tearDown(), test is finished");      try { Thread.sleep(200); } catch( InterruptedException i) {} // Wait some time      stopHeron();      stopAvalon();      stopGolan();      stopFrodo();      stopBilbo();   }}

⌨️ 快捷键说明

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