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

📄 xbobjectfactory.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      XBConnectionFactoryBuilder.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.jms;import java.util.Enumeration;import java.util.Hashtable;import javax.naming.Context;import javax.naming.Name;import javax.naming.NamingException;import javax.naming.Reference;import javax.naming.RefAddr;import javax.naming.spi.ObjectFactory;public class XBObjectFactory implements ObjectFactory {   /**    * Searches for a particular property. If the property exists in both the environment of    * the context and in the particular hastable passed as the environment, than the     * later is taken.    *     * @param key The name (id) of the property    * @param context the context on which to look    * @param env the additional environment to look into    * @return    */   private Object getProperty(Object key, Context context, Hashtable env)       throws NamingException {      if (env != null) {         Object ret = env.get(key);         if (ret != null) return ret;      }      if (context != null) {         Hashtable env2 = context.getEnvironment();         // env2 can never be null (according to requirement)         return env2.get(key);      }      return null; // to make the compiler happy   }      public Object getObjectInstance(Object object, Name name, Context context, Hashtable env)       throws Exception {      if (object instanceof Reference) {         Reference ref = (Reference)object;         String className = ref.getClassName();                     if (className.equals(XBConnectionFactory.class.getName())) {            String[] args = new String[ref.size()-2];            Enumeration iter = ref.getAll();            RefAddr addr = (RefAddr)iter.nextElement();            String forQueuesTxt = addr.getType();            boolean forQueues = false;            try {               forQueues = Boolean.getBoolean(forQueuesTxt);            }            catch (Throwable ex) {            }            addr = (RefAddr)iter.nextElement();            String qosLitteral = addr.getType();             int i = 0;            while (iter.hasMoreElements()) {               addr = (RefAddr)iter.nextElement();               args[i] = addr.getType();               i++;            }            String connectQos = (String)getProperty(XBPropertyNames.CONNECT_QOS, context, env);            if (connectQos != null) qosLitteral = connectQos;            return new XBConnectionFactory(qosLitteral, args, forQueues);         }         if (className.equals(XBDestination.class.getName())) {            RefAddr topicRef = ref.get("topicName");            RefAddr queueRef = ref.get("queueName");            RefAddr forceQueuingRef = ref.get("forceQueuing");            String topicName = (String)topicRef.getContent();            String queueName = (String)queueRef.getContent();            String forceQueuingTxt = (String)forceQueuingRef.getContent();            boolean forceQueuing = (new Boolean(forceQueuingTxt)).booleanValue();            return new XBDestination(topicName, queueName, forceQueuing);         }      }      return null;   }}

⌨️ 快捷键说明

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