<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: JNDI code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 04 Oct 2008 23:48:42 GMT</pubDate>
    <description>DZone Snippets: JNDI code</description>
    <item>
      <title>Making a local hash based Context</title>
      <link>http://snippets.dzone.com/posts/show/3946</link>
      <description>// This may be total overkill, but I wanted to use a DataSource in a stand alone app.&lt;br /&gt;&lt;br /&gt;jndi.properties&lt;br /&gt;&lt;code&gt;&lt;br /&gt;java.naming.factory.initial=com.admin.model.naming.ContextFactory&lt;br /&gt;java.naming.provider.url=iiop://localhost:1050&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ContextFactory.java&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package com.admin.model.naming;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.naming.spi.InitialContextFactory;&lt;br /&gt;public class ContextFactory implements InitialContextFactory {&lt;br /&gt;    public ContextFactory() {&lt;br /&gt;    }&lt;br /&gt;    public Context getInitialContext(Hashtable&lt;?, ?&gt; environment) throws NamingException {&lt;br /&gt;        ContextImpl ctx = (ContextImpl)ContextImpl.getInstance();&lt;br /&gt;        ctx.setEnvironment(environment);&lt;br /&gt;        return ctx;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ContextImpl.java&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package com.admin.model.naming;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;import javax.naming.Binding;&lt;br /&gt;import javax.naming.CompositeName;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.Name;&lt;br /&gt;import javax.naming.NameClassPair;&lt;br /&gt;import javax.naming.NameParser;&lt;br /&gt;import javax.naming.NamingEnumeration;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;public class ContextImpl implements Context {&lt;br /&gt;    private static Logger logger = Logger.getLogger(ContextImpl.class.getName());&lt;br /&gt;    private static ContextImpl instance = new ContextImpl();&lt;br /&gt;    private Hashtable environment;&lt;br /&gt;    private Hashtable&lt;Name, Object&gt; directory = new Hashtable();&lt;br /&gt;&lt;br /&gt;    private ContextImpl() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    static Context getInstance() {&lt;br /&gt;        return instance;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public Object lookup(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "lookup", name);&lt;br /&gt;        Object result = null;        &lt;br /&gt;        if(!directory.containsKey(name)) {&lt;br /&gt;            throw new NamingException("Naming directory does not contain entry for: " + name);&lt;br /&gt;        }&lt;br /&gt;        result = directory.get(name);&lt;br /&gt;        logger.exiting(getClass().getName(), "lookup", result);&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object lookup(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "lookup", name);&lt;br /&gt;        Object result = null;     &lt;br /&gt;        Name properName = new CompositeName(name);&lt;br /&gt;        if(!directory.containsKey(properName)) {&lt;br /&gt;            throw new NamingException("Naming directory does not contain entry for: " + properName);&lt;br /&gt;        }&lt;br /&gt;        result = directory.get(properName);&lt;br /&gt;        logger.exiting(getClass().getName(), "lookup", result);&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void bind(Name name, Object obj) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "bind", new Object[]{name, obj});&lt;br /&gt;        if(directory.containsKey(name)) {&lt;br /&gt;            throw new NamingException("Naming directory already contains entry for: " + name);&lt;br /&gt;        }&lt;br /&gt;        directory.put(name, obj);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void bind(String name, Object obj) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "bind", new Object[]{name, obj});&lt;br /&gt;        Name properName = new CompositeName(name);&lt;br /&gt;        if(directory.containsKey(properName)) {&lt;br /&gt;            throw new NamingException("Naming directory already contains entry for: " + properName);&lt;br /&gt;        }&lt;br /&gt;        directory.put(properName, obj);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void rebind(Name name, Object obj) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "rebind", new Object[]{name, obj});&lt;br /&gt;        if(!directory.containsKey(name)) {&lt;br /&gt;            throw new NamingException("Naming directory does not contain entry for: " + name);&lt;br /&gt;        }&lt;br /&gt;        directory.put(name, obj);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void rebind(String name, Object obj) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "rebind", new Object[]{name, obj});&lt;br /&gt;        Name properName = new CompositeName(name);&lt;br /&gt;        if(!directory.containsKey(properName)) {&lt;br /&gt;            throw new NamingException("Naming directory does not contain entry for: " + properName);&lt;br /&gt;        }&lt;br /&gt;        directory.put(properName, obj);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void unbind(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "unbind", name);&lt;br /&gt;        if(!directory.containsKey(name)) {&lt;br /&gt;            throw new NamingException("Naming directory does not contain entry for: " + name);&lt;br /&gt;        }&lt;br /&gt;        directory.remove(name);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void unbind(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "unbind", name);&lt;br /&gt;        Name properName = new CompositeName(name);&lt;br /&gt;        if(!directory.containsKey(properName)) {&lt;br /&gt;            throw new NamingException("Naming directory does not contain entry for: " + properName);&lt;br /&gt;        }&lt;br /&gt;        directory.remove(properName);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void rename(Name oldName, Name newName) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "rename", new Object[]{oldName, newName});&lt;br /&gt;        Object obj = lookup(oldName);&lt;br /&gt;        unbind(oldName);&lt;br /&gt;        bind(newName, obj);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void rename(String oldName, String newName) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "rename", new Object[]{oldName, newName});&lt;br /&gt;        Object obj = lookup(oldName);&lt;br /&gt;        unbind(oldName);&lt;br /&gt;        bind(newName, obj);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public NamingEnumeration&lt;NameClassPair&gt; list(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "list", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public NamingEnumeration&lt;NameClassPair&gt; list(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "list", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public NamingEnumeration&lt;Binding&gt; listBindings(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "listBindings", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public NamingEnumeration&lt;Binding&gt; listBindings(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "listBindings", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroySubcontext(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "destroySubcontext", name);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroySubcontext(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "destroySubcontext", name);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Context createSubcontext(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "createSubcontext", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Context createSubcontext(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "createSubcontext", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object lookupLink(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "lookupLink", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object lookupLink(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "lookupLink", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public NameParser getNameParser(Name name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "getNameParser", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public NameParser getNameParser(String name) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "getNameParser", name);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Name composeName(Name name, Name prefix) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "composeName", new Object[]{name, prefix});&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String composeName(String name, String prefix) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "composeName", new Object[]{name, prefix});&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object addToEnvironment(String propName, Object propVal) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "addToEnvironment", new Object[]{propName, propVal});&lt;br /&gt;        environment.put(propName, propVal);&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object removeFromEnvironment(String propName) throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "removeFromEnvironment", propName);&lt;br /&gt;        Object result = environment.get(propName);&lt;br /&gt;        environment.remove(propName);&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Hashtable getEnvironment() throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "getEnvironment");&lt;br /&gt;        return environment;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void setEnvironment(Hashtable env) {&lt;br /&gt;        environment = env;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void close() throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "close");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getNameInNamespace() throws NamingException {&lt;br /&gt;        logger.entering(getClass().getName(), "getNameInNamespace");&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;usage&lt;br /&gt;&lt;code&gt;&lt;br /&gt;InitialContext ctx = new InitialContext();&lt;br /&gt;ctx.bind("DataSource", ds);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 02 May 2007 12:27:50 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3946</guid>
      <author>carlism (Carl Leiby)</author>
    </item>
  </channel>
</rss>
