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

📄 naminghelper.java

📁 一个Java持久层类库
💻 JAVA
字号:
//$Id: NamingHelper.java 8149 2005-09-11 21:10:52Z oneovthafew $package org.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.slf4j.Logger;import org.slf4j.LoggerFactory;import org.hibernate.cfg.Environment;public final class NamingHelper {	private static final Logger log = LoggerFactory.getLogger(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("").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 + -