Example1.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:8k
源码类别:

Java编程

开发平台:

Java

  1. package bible.jndi;
  2. import javax.naming.*;
  3. import javax.naming.directory.*;
  4. import weblogic.jndi.*;
  5. import java.util.*;
  6. /**
  7.  * Class Example1
  8.  *
  9.  *
  10.  * @author
  11.  * @version %I%, %G%
  12.  */
  13. public class Example1 {
  14.   /**
  15.    * Method getClientSideContext
  16.    *
  17.    *
  18.    */
  19.   public static void getClientSideContext() {
  20.     Context   ctx = null;
  21.     Hashtable ht  = new Hashtable();
  22.     ht.put(Context.INITIAL_CONTEXT_FACTORY,
  23.            "weblogic.jndi.WLInitialContextFactory");
  24.     ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
  25.     ht.put(Context.SECURITY_PRINCIPAL, "system");
  26.     ht.put(Context.SECURITY_CREDENTIALS, "password");
  27.     try {
  28.       ctx = new InitialContext(ht);
  29.       System.out.println("Context obtained; value = " + ctx.toString());
  30.     } catch (NamingException e) {
  31.       e.printStackTrace();
  32.     } finally {
  33.       try {
  34.         // close the context when finished with it
  35.         ctx.close();
  36.         System.out.println("Context closed.");
  37.       } catch (Exception e) {
  38.         e.printStackTrace();
  39.       }
  40.     }
  41.   }
  42.   /**
  43.    * Method getClientSideEnvContext
  44.    *
  45.    *
  46.    */
  47.   public static void getClientSideEnvContext() {
  48.     Context     ctx = null;
  49.     Environment env = new Environment();
  50.     // env.setProviderUrl("t3://localhost:7001");
  51.     env.setSecurityPrincipal("system");
  52.     env.setSecurityCredentials("password");
  53.     try {
  54.       ctx = env.getInitialContext();
  55.       System.out.println("Context obtained; value = " + ctx.toString());
  56.     } catch (NamingException e) {
  57.       e.printStackTrace();
  58.     } finally {
  59.       try {
  60.         // close the context when finished with it
  61.         ctx.close();
  62.         System.out.println("Context closed.");
  63.       } catch (Exception e) {
  64.         e.printStackTrace();
  65.       }
  66.     }
  67.   }
  68.   /**
  69.    * Method getLDAPAttributes
  70.    *
  71.    *
  72.    * @param ctx
  73.    *
  74.    * @throws javax.naming.NamingException
  75.    *
  76.    */
  77.   public static void getLDAPAttributes(DirContext ctx)
  78.     throws javax.naming.NamingException {
  79.     System.out.println("Dumping LDAP directory attributes...");
  80.     Attributes attrs = ctx.getAttributes("");
  81.     for (NamingEnumeration allAttr = attrs.getAll(); allAttr.hasMore(); ) {
  82.       Attribute attr = (Attribute) allAttr.next();
  83.       System.out.println("Attribute: " + attr.getID());
  84.       for (NamingEnumeration values = attr.getAll(); values.hasMore(); ) {
  85.         System.out.println("    Value: " + values.next());
  86.       }
  87.     }
  88.   }
  89.   /**
  90.    * Method getLDAPContents
  91.    *
  92.    *
  93.    * @param ctx
  94.    *
  95.    * @throws javax.naming.NamingException
  96.    *
  97.    */
  98.   public static void getLDAPContents(DirContext ctx)
  99.     throws javax.naming.NamingException {
  100.     System.out.println("Dumping LDAP directory contents...");
  101.     SearchControls cons = new SearchControls();
  102.     cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
  103.     NamingEnumeration results = ctx.search("dc=JMZ,dc=local",
  104.                                            "objectclass=person", cons);
  105.     // NamingEnumeration results = ctx.search("dc=zeeware,dc=com", "objectclass=person", cons);
  106.     while (results.hasMore()) {
  107.       System.out.println("nn");
  108.       SearchResult result = (SearchResult) results.next();
  109.       Attributes   rAttrs = result.getAttributes();
  110.       for (NamingEnumeration ne = rAttrs.getAll(); ne.hasMore(); ) {
  111.         Attribute nAttr = (Attribute) ne.next();
  112.         String    sID   = nAttr.getID();
  113.         for (Enumeration vals = nAttr.getAll(); vals.hasMoreElements(); ) {
  114.           System.out.println(sID + ": " + vals.nextElement());
  115.         }
  116.       }
  117.     }
  118.   }
  119.   /**
  120.    * Method getLDAPContext
  121.    *
  122.    *
  123.    * @return
  124.    *
  125.    * @throws javax.naming.NamingException
  126.    *
  127.    */
  128.   public static DirContext getLDAPContext()
  129.     throws javax.naming.NamingException {
  130.     DirContext ctx = null;
  131.     Hashtable  ht  = new Hashtable();
  132.     ht.put(Context.INITIAL_CONTEXT_FACTORY,
  133.            "com.sun.jndi.ldap.LdapCtxFactory");
  134.     ht.put(Context.PROVIDER_URL, "ldap://localhost:389");
  135.     // ht.put(Context.PROVIDER_URL, "ldap://denver.zeeware.com:389");
  136.     // ht.put(Context.SECURITY_AUTHENTICATION, "simple");
  137.     // ht.put(Context.SECURITY_PRINCIPAL, "ZEEWARE\Administrator");
  138.     // ht.put(Context.SECURITY_CREDENTIALS, "lift^kitz");
  139.     System.out.println("Attempting to obtain LDAP context...");
  140.     ctx = new InitialDirContext(ht);
  141.     System.out.println("Context obtained; value = " + ctx.toString());
  142.     return ctx;
  143.   }
  144.   /**
  145.    * Method getServerSideContext
  146.    *
  147.    *
  148.    */
  149.   public static void getServerSideContext() {
  150.     Context   ctx = null;
  151.     Hashtable ht  = new Hashtable();
  152.     ht.put(Context.SECURITY_PRINCIPAL, "system");
  153.     ht.put(Context.SECURITY_CREDENTIALS, "password");
  154.     try {
  155.       ctx = new InitialContext(ht);
  156.       System.out.println("Context obtained; value = " + ctx.toString());
  157.     } catch (NamingException e) {
  158.       e.printStackTrace();
  159.     } finally {
  160.       try {
  161.         // close the context when finished with it
  162.         ctx.close();
  163.         System.out.println("Context closed.");
  164.       } catch (Exception e) {
  165.         e.printStackTrace();
  166.       }
  167.     }
  168.   }
  169.   /**
  170.    * Method bindObject
  171.    *
  172.    *
  173.    */
  174.   public static void bindObject() {
  175.     Environment env = new Environment();
  176.     Context     ctx = null;
  177.     try {
  178.       ctx = env.getInitialContext();
  179.       System.out.println("Context obtained; value = " + ctx.toString());
  180.       System.out.println("Binding a copy of the Person class...");
  181.       Person  myPerson = new Person();
  182.       Context subctx   = ctx.createSubcontext("JNDI Chapter");
  183.       ctx.bind("JNDI Chapter/Person Object", myPerson);
  184.     } catch (NamingException e) {
  185.       e.printStackTrace();
  186.     } finally {
  187.       try {
  188.         ctx.close();
  189.         System.out.println("Context closed.");
  190.       } catch (Exception e) {
  191.         e.printStackTrace();
  192.       }
  193.     }
  194.   }
  195.   /**
  196.    * Method lookupObject
  197.    *
  198.    *
  199.    */
  200.   public static void lookupObject() {
  201.     Environment env = new Environment();
  202.     Context     ctx = null;
  203.     try {
  204.       ctx = env.getContext("JNDI Chapter");
  205.       System.out.println("Context obtained; value = " + ctx.toString());
  206.       System.out.println("Looking up the copy of the Person class...");
  207.       Person person = (Person) ctx.lookup("Person Object");
  208.       System.out
  209.         .println("Calling a method on the copy of the Person class...");
  210.       System.out.println(person.getFullName());
  211.     } catch (NamingException e) {
  212.       e.printStackTrace();
  213.     } finally {
  214.       try {
  215.         ctx.close();
  216.         System.out.println("Context closed.");
  217.       } catch (Exception e) {
  218.         e.printStackTrace();
  219.       }
  220.     }
  221.   }
  222.   /**
  223.    * Method getServerSideEnvContext
  224.    *
  225.    *
  226.    */
  227.   public static void getServerSideEnvContext() {
  228.     Environment env    = new Environment();
  229.     Context     ctx    = null;
  230.     Context     subctx = null;
  231.     try {
  232.       ctx = env.getInitialContext();
  233.       System.out.println("Context obtained; value = " + ctx.toString());
  234.     } catch (NamingException e) {
  235.       e.printStackTrace();
  236.     } finally {
  237.       try {
  238.         // close the context when finished with it
  239.         ctx.close();
  240.         System.out.println("Context closed.");
  241.       } catch (Exception e) {
  242.         e.printStackTrace();
  243.       }
  244.     }
  245.   }
  246.   /**
  247.    * Method main
  248.    *
  249.    *
  250.    * @param args
  251.    *
  252.    */
  253.   public static void main(String[] args) {
  254.     // These calls will succeed when executed inside or outside WebLogic's JVM
  255.     // getClientSideContext();
  256.     // getClientSideEnvContext();
  257.     // These calls will succeed only when executed inside WebLogic's JVM
  258.     // getServerSideContext();
  259.     // getServerSideEnvContext();
  260.     // bindObject();
  261.     // lookupObject();
  262.     DirContext ctx = null;
  263.     try {
  264.       ctx = getLDAPContext();
  265.       // getLDAPAttributes(ctx);
  266.       getLDAPContents(ctx);
  267.     } catch (NamingException e) {
  268.       e.printStackTrace();
  269.     } finally {
  270.       try {
  271.         ctx.close();
  272.       } catch (Exception e) {
  273.         e.printStackTrace();
  274.       }
  275.     }
  276.   }
  277. }
  278. /*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/
  279. /*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/