Hi!

Scott M Stark wrote:
> I'm using LDAP with JBoss by binding my LDAP server's initial context into
> the JBoss JNDI namespace and this works great. About 30 lines of code is
> all it takes:
> 
>  private void initializeLdap(InitialContext iniCtx) throws NamingException
>  {
>   Properties env = new Properties();
>   env.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
>"com.sun.jndi.ldap.LdapCtxFactory");
>   env.setProperty(Context.PROVIDER_URL, "ldap://banshee-int:389/");
>   env.setProperty(Context.SECURITY_PRINCIPAL, "cn=Directory Manager");
>   env.setProperty(Context.SECURITY_AUTHENTICATION, "simple");
>   env.setProperty(Context.SECURITY_CREDENTIALS, "secret");
> 
>   try
>   {
>    InitialLdapContext ldapCtx = new InitialLdapContext(env, null);
>    //Bind a reference to the LDAP root context using NonSerializableWrapper as the 
>ObjectFactory
>    NonSerializableWrapper.add(ldapJndiName, ldapCtx);
>    String className = "javax.naming.ldap.InitialLdapContext";
>    String factory = NonSerializableWrapper.class.getName();
>    StringRefAddr addr = new StringRefAddr("nns", ldapJndiName);
>    Reference memoryRef = new Reference(className, addr, factory, null);
>    iniCtx.rebind(ldapJndiName, memoryRef);
>    PkgCategory.info("Bound projects ldap context at: "+ldapJndiName);
>   }
>   catch(Throwable t)
>   {
>    PkgCategory.alert("Failed to setup projects ldap context", t);
>    NamingException ne = new NamingException("Failed to setup projects ldap context");
>    ne.setRootCause(t);
>    throw ne;
>   }
>  }
> 
> The NonSerializableWrapper class is just a simple in memory object factory:
> public class NonSerializableWrapper implements ObjectFactory
> {
>  private static Map wrapperMap = Collections.synchronizedMap(new HashMap());
> 
>  public static void add(String key, Object target)
>  {
>   wrapperMap.put(key, target);
>  }
> 
> // --- Begin ObjectFactory interface methods
>  public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable 
>env) throws Exception
>  { // Get the nns value from the Reference obj and use it as the map key
>   Reference ref = (Reference) obj;
>   RefAddr addr = ref.get("nns");
>   String key = (String) addr.getContent();
>   Object target = wrapperMap.get(key);
>   return target;
>  }
> // --- End ObjectFactory interface methods
> }

May I add 'Tada!' :-)

/Rickard

-- 
Rickard Öberg

Email: [EMAIL PROTECTED]


--
--------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
List Help?:          [EMAIL PROTECTED]

Reply via email to