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

📄 rmiurl.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      RmiUrl.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment:   RmiUrl knows how to parse the URL notation of our RMI protocol------------------------------------------------------------------------------*/package org.xmlBlaster.protocol.rmi;import org.xmlBlaster.util.Global;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.util.def.ErrorCode;import org.xmlBlaster.util.qos.address.AddressBase;import java.net.InetAddress;/** * This knows how to parse the URL notation of our RMI protocol.  * It holds the hostname and the port. * @see <a href="http://www.xmlBlaster.org/xmlBlaster/doc/requirements/protocol.rmi.html">The protocol.rmi requirement</a> * @see org.xmlBlaster.test.classtest.RmiUrlTest */public class RmiUrl{   private String ME = "RmiUrl";   private Global glob;   private static Logger log = Logger.getLogger(RmiUrl.class.getName());   /** The string representation like "192.168.1.1", useful if multihomed computer */   private String hostname;   /** xmlBlaster server host */   private java.net.InetAddress inetAddress;   /** The port */   private int port = RmiDriver.DEFAULT_REGISTRY_PORT;   private boolean isLocal = false;   /**    * @param hostname if null or empty the local IP will be used    * @param port any port, not checked    */   public RmiUrl(Global glob, String hostname, int port) throws XmlBlasterException {      this.glob = glob;      this.hostname = hostname;      if (this.hostname == null || this.hostname.length() < 1) {         this.hostname = glob.getLocalIP();      }      this.port = port;      createInetAddress(); // first check   }   /**    * Parse the given url.     * @param url e.g. "rmi://127.168.1.1:8080"    * @exception XmlBlasterException if url is null or invalid    */   public RmiUrl(Global glob, String url) throws XmlBlasterException {      this.glob = glob;      parse(url);      createInetAddress(); // first check   }   /**    * Extract "hostname" and "port" from environment, if not found use the local host    * for hostname and the default port 8080.     * <br />    * NOTE: If address.getRawAddress() is filled this has precedence.     * <br />    * Updates the raw address from AddressBase    */   public RmiUrl(Global glob, AddressBase address) throws XmlBlasterException {      this(glob, address, false, RmiDriver.DEFAULT_REGISTRY_PORT);   }   /**    * Extract hostname and port from environment, if not found use the local host    * for hostname and the given default port (usually RmiDriver.DEFAULT_REGISTRY_PORT=1099).     * <br />    * Updates the raw address from AddressBase if isLocal==false    * <br />    * NOTE: If address.getRawAddress() is filled this has precedence.     * @param isLocal If local is set to true "localHostname" and "localPort" will be extracted    */   public RmiUrl(Global glob, AddressBase address, boolean isLocal, int defaultServerPort) throws XmlBlasterException {      this.glob = glob;      if (isLocal) {         this.isLocal = true;         this.port = address.getEnv("localPort", defaultServerPort).getValue();         this.hostname = address.getEnv("localHostname", glob.getLocalIP()).getValue();      }      else {         if (address.getRawAddress() != null && address.getRawAddress().length() > 2) {            parse(address.getRawAddress());            createInetAddress(); // first check            return;         }         this.port = address.getEnv("registryPort", defaultServerPort).getValue();         this.hostname = address.getEnv("hostname", glob.getLocalIP()).getValue();         address.setRawAddress(getUrl());      }      createInetAddress(); // first check   }   public String getHostname() {      return this.hostname;   }   public int getRegistryPort() {      return this.port;   }   /**    * Change the port    */   public void setRegistryPort(int port) {      this.port = port;   }   /**    * @return for example "rmi://myServer.com:8080/"    */   public String getUrl() {      return "rmi://" + this.hostname + ":" + this.port + "/";   }   public String toString() {      return getUrl();   }   private void parse(String url) throws XmlBlasterException {      if (url == null) {         throw new XmlBlasterException(this.glob, ErrorCode.RESOURCE_CONFIGURATION_ADDRESS, ME, "Your given RMI url '" + url + "' is invalid");      }      String urlLowerCase = url.toLowerCase();      if (urlLowerCase.startsWith("rmi://")) {         url = url.substring("rmi://".length());      }      else if (urlLowerCase.startsWith("rmi:")) {         url = url.substring("rmi:".length());      }      int pos = url.indexOf(":");      String portStr = null;      if (pos > -1) {         this.hostname = url.substring(0, pos);         portStr = url.substring(pos+1);         if (portStr != null && portStr.length() > 0) {            pos = portStr.indexOf("/");            if (pos > -1) {               portStr = portStr.substring(0, pos); // strip path e.g. "rmi://myHost:8080/path/subpath"            }            try {               this.port = (new Integer(portStr)).intValue();            }            catch (NumberFormatException e) {               throw new XmlBlasterException(this.glob, ErrorCode.RESOURCE_CONFIGURATION_ADDRESS, ME, "Your given RMI url '" + url + "' port '" + portStr + "' is invalid");            }         }      }      else {         this.hostname = url;      }      if (this.hostname == null || this.hostname.length() < 1) {         this.hostname = glob.getLocalIP();      }   }   public InetAddress getInetAddress() {      return this.inetAddress;   }   private void createInetAddress() throws XmlBlasterException {      try {         this.inetAddress = java.net.InetAddress.getByName(this.hostname);      } catch(java.net.UnknownHostException e) {         Thread.currentThread().dumpStack();         String txt = "The hostname [" + this.hostname + "] of url '" + getUrl() + "' is invalid, check your '-plugin/rmi/" +                       (isLocal ? "localHostname" : "hostname") + " <ip>' setting: " + e.toString();         log.warning(txt);         throw new XmlBlasterException(glob, ErrorCode.RESOURCE_CONFIGURATION_ADDRESS, ME, txt);      }   }   public boolean equals(RmiUrl other) {      if (this.port == other.getRegistryPort() && getInetAddress().equals(other.getInetAddress())) {         //log.error(ME, "DEBUG ONLY: EQUAL: " + getUrl() + " - " + other.getUrl());         return true;      }      //log.error(ME, "DEBUG ONLY: NOT EQUAL: " + getUrl() + " - " + other.getUrl());      return false;   }   /** java org.xmlBlaster.protocol.rmi.RmiUrl rmi://localhost:8080 */   public static void main(String[] args) {      try {         if (args.length > 0) {            RmiUrl s = new RmiUrl(Global.instance(), args[0]);            System.out.println(args[0] + " -> " + s.getUrl() + " hostname=" + s.getHostname() + " port=" + s.getRegistryPort());         }      }      catch (Throwable e) {         System.out.println("ERROR: " + e.toString());      }   }}

⌨️ 快捷键说明

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