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

📄 naminghelper.java

📁 用Java实现的23个常用设计模式源代码
💻 JAVA
字号:
//$Id: NamingHelper.java,v 1.6 2003/06/15 12:45:08 oneovthafew Exp $package net.sf.hibernate.util;import java.util.HashSet;import java.util.Hashtable;import java.util.Iterator;import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.Name;import javax.naming.NameNotFoundException;import javax.naming.NamingException;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import net.sf.hibernate.cfg.Environment;public final class NamingHelper {		private static final Log log = LogFactory.getLog(NamingHelper.class);		public static InitialContext getInitialContext(Properties props) throws NamingException {				Hashtable hash = getJndiProperties(props);		log.info("JNDI InitialContext properties:" + hash);		try {			return ( hash.size()==0 ) ?			new InitialContext() :			new InitialContext(hash);		}		catch (NamingException e) {			log.error("Could not obtain initial context", e);			throw e;		}	}		/**	 * Bind val to name in ctx, and make sure that all intermediate contexts exist.	 *	 * @param ctx the root context	 * @param name the name as a string	 * @param val the object to be bound	 * @throws NamingException	 */	public static void bind(Context ctx, String name, Object val) throws NamingException {		try {			log.trace("binding: " + name);			ctx.rebind(name, val);		}		catch (Exception e) {			Name n = ctx.getNameParser(StringHelper.EMPTY_STRING).parse(name);			while ( n.size() > 1 ) {				String ctxName = n.get(0);								Context subctx=null;				try {					log.trace("lookup: " + ctxName);					subctx = (Context) ctx.lookup(ctxName);				}				catch (NameNotFoundException nfe) {}								if (subctx!=null) {					log.debug("Found subcontext: " + ctxName);					ctx = subctx;				}				else {					log.info("Creating subcontext: " + ctxName);					ctx = ctx.createSubcontext(ctxName);				}				n = n.getSuffix(1);			}			log.trace("binding: " + n);			ctx.rebind(n, val);		}		log.debug("Bound name: " + name);	}		/**	 * Transform JNDI properties passed in the form <tt>hibernate.jndi.*</tt> to the	 * format accepted by <tt>InitialContext</tt> by triming the leading "<tt>hibernate.jndi</tt>".	 */	public static Properties getJndiProperties(Properties properties) {				HashSet specialProps = new HashSet();		specialProps.add(Environment.JNDI_CLASS);		specialProps.add(Environment.JNDI_URL);				Iterator iter = properties.keySet().iterator();		Properties result = new Properties();		while ( iter.hasNext() ) {			String prop = (String) iter.next();			if ( prop.indexOf(Environment.JNDI_PREFIX) > -1 && !specialProps.contains(prop) ) {				result.setProperty(					prop.substring( Environment.JNDI_PREFIX.length()+1 ),					properties.getProperty(prop)				);			}		}				String jndiClass = properties.getProperty(Environment.JNDI_CLASS);		String jndiURL = properties.getProperty(Environment.JNDI_URL);		// we want to be able to just use the defaults,		// if JNDI environment properties are not supplied		// so don't put null in anywhere		if (jndiClass != null) result.put(Context.INITIAL_CONTEXT_FACTORY, jndiClass);		if (jndiURL != null) result.put(Context.PROVIDER_URL, jndiURL);				return result;	}		private NamingHelper() {}	}

⌨️ 快捷键说明

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