六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 13|回复: 0

JNDI/LDAP

[复制链接]

升级  72.67%

126

主题

126

主题

126

主题

举人

Rank: 3Rank: 3

积分
418
 楼主| 发表于 2013-2-4 19:25:43 | 显示全部楼层 |阅读模式
/*   
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.   
*   
* Redistribution and use in source and binary forms, with or without   
* modification, are permitted provided that the following conditions   
* are met:   
*   
*   - Redistributions of source code must retain the above copyright   
*     notice, this list of conditions and the following disclaimer.   
*   
*   - Redistributions in binary form must reproduce the above copyright   
*     notice, this list of conditions and the following disclaimer in the   
*     documentation and/or other materials provided with the distribution.   
*   
*   - Neither the name of Sun Microsystems nor the names of its   
*     contributors may be used to endorse or promote products derived   
*     from this software without specific prior written permission.   
*   
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS   
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,   
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR   
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR   
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,   
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,   
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING   
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS   
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   
*/   
   
import java.util.Hashtable;   
   
import javax.naming.Context;   
import javax.naming.InitialContext;   
import javax.naming.Name;   
import javax.naming.NamingException;   
import javax.naming.RefAddr;   
import javax.naming.Reference;   
import javax.naming.Referenceable;   
import javax.naming.StringRefAddr;   
import javax.naming.spi.ObjectFactory;   
   
/**   
* Demonstrates how to overwrite an existing binding. (Use after Bind example;   
* Use Unbind to remove binding).   
*   
* usage: java Rebind   
*/   
class Rebind {   
  public static void main(String[] args) {   
   
    // Set up the environment for creating the initial context   
    Hashtable<String, Object> env = new Hashtable<String, Object>(11);   
    env   
        .put(Context.INITIAL_CONTEXT_FACTORY,   
            "com.sun.jndi.ldap.LdapCtxFactory");   
    env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");   
   
    try {   
      // Create the initial context   
      Context ctx = new InitialContext(env);   
   
      // Create the object to be bound   
      Fruit fruit = new Fruit("lemon");   
   
      // Perform the bind   
      ctx.rebind("cn=Favorite Fruit", fruit);   
   
      // Check that it is bound   
      Object obj = ctx.lookup("cn=Favorite Fruit");   
      System.out.println(obj);   
   
      // Close the context when we're done   
      ctx.close();   
    } catch (NamingException e) {   
      System.out.println("Operation failed: " + e);   
    }   
  }   
}   
   
/*   
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.   
*   
* Redistribution and use in source and binary forms, with or without   
* modification, are permitted provided that the following conditions are met:   
*  - Redistributions of source code must retain the above copyright notice,   
* this list of conditions and the following disclaimer.   
*  - Redistributions in binary form must reproduce the above copyright notice,   
* this list of conditions and the following disclaimer in the documentation   
* and/or other materials provided with the distribution.   
*  - Neither the name of Sun Microsystems nor the names of its contributors may   
* be used to endorse or promote products derived from this software without   
* specific prior written permission.   
*   
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"   
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE   
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE   
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR   
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF   
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS   
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN   
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)   
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE   
* POSSIBILITY OF SUCH DAMAGE.   
*/   
   
/**   
* This class is used by the Bind example. It is a referenceable class that can   
* be stored by service providers like the LDAP and file system providers.   
*/   
class Fruit implements Referenceable {   
  String fruit;   
   
  public Fruit(String f) {   
    fruit = f;   
  }   
   
  public Reference getReference() throws NamingException {   
   
    return new Reference(Fruit.class.getName(), new StringRefAddr("fruit",   
        fruit), FruitFactory.class.getName(), null); // factory location   
  }   
   
  public String toString() {   
    return fruit;   
  }   
}   
   
/*   
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.   
*   
* Redistribution and use in source and binary forms, with or without   
* modification, are permitted provided that the following conditions are met:   
*  - Redistributions of source code must retain the above copyright notice,   
* this list of conditions and the following disclaimer.   
*  - Redistributions in binary form must reproduce the above copyright notice,   
* this list of conditions and the following disclaimer in the documentation   
* and/or other materials provided with the distribution.   
*  - Neither the name of Sun Microsystems nor the names of its contributors may   
* be used to endorse or promote products derived from this software without   
* specific prior written permission.   
*   
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"   
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE   
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE   
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR   
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF   
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS   
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN   
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)   
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE   
* POSSIBILITY OF SUCH DAMAGE.   
*/   
   
/**   
* This is an object factory that when given a reference for a Fruit object,   
* will create an instance of the corresponding Fruit.   
*/   
class FruitFactory implements ObjectFactory {   
   
  public FruitFactory() {   
  }   
   
  public Object getObjectInstance(Object obj, Name name, Context ctx,   
      Hashtable<?, ?> env) throws Exception {   
   
    if (obj instanceof Reference) {   
      Reference ref = (Reference) obj;   
   
      if (ref.getClassName().equals(Fruit.class.getName())) {   
        RefAddr addr = ref.get("fruit");   
        if (addr != null) {   
          return new Fruit((String) addr.getContent());   
        }   
      }   
    }   
    return null;   
  }   
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表