/** A convience method that simplifies the process of rebinding a non-zerializable object into a JNDI context. This version binds the target object into the default IntitialContext using name path. @param name the name to use as JNDI path name. The key into the NonSerializableFactory map is obtained from the toString() value of name. The name parameter cannot be a 0 length name. Any subcontexts between the root and the name must exist. @param target the non-Serializable object to bind. @throws javax.naming.NamingException thrown on failure to rebind key into ctx. */ public static synchronized void rebind(Name name, Object target) throws NamingException { rebind(name, target, false); }
/** A convience method that simplifies the process of rebinding a non-zerializable object into a JNDI context. @param ctx the JNDI context to rebind to. @param key the key to use in both the NonSerializableFactory map and JNDI. It must be a valid name for use in ctx.bind(). @param target the non-Serializable object to bind. @throws javax.naming.NamingException thrown on failure to rebind key into ctx. */ public static synchronized void rebind(Context ctx, String key, Object target) throws NamingException { NonSerializableFactory.rebind(key, target); // Bind a reference to target using NonSerializableFactory as the ObjectFactory String className = target.getClass().getName(); String factory = NonSerializableFactory.class.getName(); StringRefAddr addr = new StringRefAddr("nns", key); Reference memoryRef = new Reference(className, addr, factory, null); ctx.rebind(key, memoryRef); }
/** A convience method that simplifies the process of rebinding a non-zerializable object into a JNDI context. This version binds the target object into the default IntitialContext using name path. @param name the name to use as JNDI path name. The key into the NonSerializableFactory map is obtained from the toString() value of name. The name parameter cannot be a 0 length name. @param target the non-Serializable object to bind. @param createSubcontexts a flag indicating if subcontexts of name should be created if they do not already exist. @throws javax.naming.NamingException thrown on failure to rebind key into ctx. */ public static synchronized void rebind(Name name, Object target, boolean createSubcontexts) throws NamingException { String key = name.toString(); InitialContext ctx = new InitialContext(); if( createSubcontexts == true && name.size() > 1 ) { int size = name.size() - 1; createSubcontext(ctx, name.getPrefix(size)); } rebind(ctx, key, target); }