<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJNDI_LDAP%2FName</id>
		<title>Java/JNDI LDAP/Name - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJNDI_LDAP%2FName"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JNDI_LDAP/Name&amp;action=history"/>
		<updated>2026-04-22T00:51:02Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/JNDI_LDAP/Name&amp;diff=6869&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JNDI_LDAP/Name&amp;diff=6869&amp;oldid=prev"/>
				<updated>2010-06-01T06:33:22Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:33, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/JNDI_LDAP/Name&amp;diff=6868&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JNDI_LDAP/Name&amp;diff=6868&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Getting an Object&amp;quot;s Fully Qualified Name ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.util.Hashtable;&lt;br /&gt;
import javax.naming.Context;&lt;br /&gt;
import javax.naming.InitialContext;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String url = &amp;quot;iiop://localhost/&amp;quot;;&lt;br /&gt;
    Hashtable&amp;lt;String, String&amp;gt; env = new Hashtable&amp;lt;String, String&amp;gt;();&lt;br /&gt;
    env.put(Context.INITIAL_CONTEXT_FACTORY, &amp;quot;com.sun.jndi.cosnaming.CNCtxFactory&amp;quot;);&lt;br /&gt;
    env.put(Context.PROVIDER_URL, url);&lt;br /&gt;
    Context ctx = new InitialContext(env);&lt;br /&gt;
    // Create a subcontext.&lt;br /&gt;
    Context childCtx = ctx.createSubcontext(&amp;quot;child&amp;quot;);&lt;br /&gt;
    // Destroy the subcontext.&lt;br /&gt;
    ctx.destroySubcontext(&amp;quot;child&amp;quot;);&lt;br /&gt;
    Context obj = (Context) childCtx.lookup(&amp;quot;grandChild&amp;quot;);&lt;br /&gt;
    String fullname = obj.getNameInNamespace();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing a JNDI Composite Name ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import javax.naming.rupositeName;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    CompositeName composite = new CompositeName(&amp;quot;cn=John,o=hits/summary.txt&amp;quot;);&lt;br /&gt;
    String first = composite.get(0);&lt;br /&gt;
    String last = composite.get(composite.size() - 1); &lt;br /&gt;
    composite.add(0, &amp;quot;yourname.ru&amp;quot;); &lt;br /&gt;
    composite.remove(2); &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing a JNDI Compound Name ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.util.Hashtable;&lt;br /&gt;
import javax.naming.Context;&lt;br /&gt;
import javax.naming.InitialContext;&lt;br /&gt;
import javax.naming.Name;&lt;br /&gt;
import javax.naming.NameParser;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String url = &amp;quot;iiop://localhost/&amp;quot;;&lt;br /&gt;
    Hashtable&amp;lt;String, String&amp;gt; env = new Hashtable&amp;lt;String, String&amp;gt;();&lt;br /&gt;
    env.put(Context.INITIAL_CONTEXT_FACTORY, &amp;quot;com.sun.jndi.cosnaming.CNCtxFactory&amp;quot;);&lt;br /&gt;
    env.put(Context.PROVIDER_URL, url);&lt;br /&gt;
    Context ctx = new InitialContext(env);&lt;br /&gt;
    NameParser parser = ctx.getNameParser(&amp;quot;&amp;quot;);&lt;br /&gt;
    Name dn = parser.parse(&amp;quot;cn=John, ou=People, o=JNDITutorial&amp;quot;);&lt;br /&gt;
    dn.remove(1); &lt;br /&gt;
    dn.add(0, &amp;quot;c=us&amp;quot;); &lt;br /&gt;
    dn.add(&amp;quot;cn=fs&amp;quot;); &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Replace the placeholders in the filter with the proper values from the userName ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license&lt;br /&gt;
 * distributed with this file and available online at&lt;br /&gt;
 * http://www.ja-sig.org/products/cas/overview/license/&lt;br /&gt;
 */&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import javax.naming.NamingException;&lt;br /&gt;
import javax.naming.directory.DirContext;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Utilities related to LDAP functions.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Scott Battaglia&lt;br /&gt;
 * @version $Revision: 42053 $ $Date: 2007-06-10 09:17:55 -0400 (Sun, 10 Jun 2007) $&lt;br /&gt;
 * @since 3.0&lt;br /&gt;
 */&lt;br /&gt;
public final class LdapUtils {&lt;br /&gt;
 &lt;br /&gt;
    private LdapUtils() {&lt;br /&gt;
        // private constructor so that no one can instantiate.&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Utility method to replace the placeholders in the filter with the proper&lt;br /&gt;
     * values from the userName.&lt;br /&gt;
     * &lt;br /&gt;
     * @param filter&lt;br /&gt;
     * @param userName&lt;br /&gt;
     * @return the filtered string populated with the username&lt;br /&gt;
     */&lt;br /&gt;
    public static String getFilterWithValues(final String filter,&lt;br /&gt;
        final String userName) {&lt;br /&gt;
        final Map&amp;lt;String, String&amp;gt; properties = new HashMap&amp;lt;String, String&amp;gt;();&lt;br /&gt;
        final String[] userDomain;&lt;br /&gt;
        String newFilter = filter;&lt;br /&gt;
        properties.put(&amp;quot;%u&amp;quot;, userName.replace(&amp;quot;\\&amp;quot;, &amp;quot;\\\\&amp;quot;));&lt;br /&gt;
        userDomain = userName.split(&amp;quot;@&amp;quot;);&lt;br /&gt;
        properties.put(&amp;quot;%U&amp;quot;, userDomain[0]);&lt;br /&gt;
        if (userDomain.length &amp;gt; 1) {&lt;br /&gt;
            properties.put(&amp;quot;%d&amp;quot;, userDomain[1]);&lt;br /&gt;
            final String[] dcArray = userDomain[1].split(&amp;quot;\\.&amp;quot;);&lt;br /&gt;
            for (int i = 0; i &amp;lt; dcArray.length; i++) {&lt;br /&gt;
                properties.put(&amp;quot;%&amp;quot; + (i + 1), dcArray[dcArray.length&lt;br /&gt;
                    - 1 - i]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        for (final String key : properties.keySet()) {&lt;br /&gt;
            final String value = properties.get(key);&lt;br /&gt;
            newFilter = newFilter.replaceAll(key, value);&lt;br /&gt;
        }&lt;br /&gt;
        return newFilter;&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Close the given context and ignore any thrown exception. This is useful&lt;br /&gt;
     * for typical finally blocks in manual Ldap statements.&lt;br /&gt;
     * &lt;br /&gt;
     * @param context the Ldap context to close&lt;br /&gt;
     */&lt;br /&gt;
    public static void closeContext(final DirContext context) {&lt;br /&gt;
        if (context != null) {&lt;br /&gt;
            try {&lt;br /&gt;
                context.close();&lt;br /&gt;
            } catch (NamingException ex) {&lt;br /&gt;
               &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show only the common name (cn) and e-mail address (mail) attributes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.util.Enumeration;&lt;br /&gt;
import java.util.Hashtable;&lt;br /&gt;
import javax.naming.Context;&lt;br /&gt;
import javax.naming.NamingEnumeration;&lt;br /&gt;
import javax.naming.directory.Attribute;&lt;br /&gt;
import javax.naming.directory.Attributes;&lt;br /&gt;
import javax.naming.directory.DirContext;&lt;br /&gt;
import javax.naming.directory.InitialDirContext;&lt;br /&gt;
import javax.naming.directory.SearchControls;&lt;br /&gt;
import javax.naming.directory.SearchResult;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static String INITCTX = &amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot;;&lt;br /&gt;
  public static String MY_HOST = &amp;quot;ldap://localhost:1389&amp;quot;;&lt;br /&gt;
  public static String MY_SEARCHBASE = &amp;quot;o=server.ru&amp;quot;;&lt;br /&gt;
  public static String MY_FILTER = &amp;quot;(sn=Carter)&amp;quot;;&lt;br /&gt;
  public static String MY_ATTRS[] = { &amp;quot;cn&amp;quot;, &amp;quot;mail&amp;quot; };&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    Hashtable env = new Hashtable();&lt;br /&gt;
    env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);&lt;br /&gt;
    env.put(Context.PROVIDER_URL, MY_HOST);&lt;br /&gt;
    DirContext ctx = new InitialDirContext(env);&lt;br /&gt;
    SearchControls constraints = new SearchControls();&lt;br /&gt;
    constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);&lt;br /&gt;
    NamingEnumeration results = ctx.search(MY_SEARCHBASE, MY_FILTER, constraints);&lt;br /&gt;
    while (results != null &amp;amp;&amp;amp; results.hasMore()) {&lt;br /&gt;
      SearchResult sr = (SearchResult) results.next();&lt;br /&gt;
      String dn = sr.getName() + &amp;quot;, &amp;quot; + MY_SEARCHBASE;&lt;br /&gt;
      System.out.println(&amp;quot;Distinguished Name is &amp;quot; + dn);&lt;br /&gt;
      Attributes ar = ctx.getAttributes(dn, MY_ATTRS);&lt;br /&gt;
      if (ar == null) {&lt;br /&gt;
        System.out.println(&amp;quot;Entry &amp;quot; + dn + &amp;quot; has none of the specified attributes\n&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      for (int i = 0; i &amp;lt; MY_ATTRS.length; i++) {&lt;br /&gt;
        Attribute attr = ar.get(MY_ATTRS[i]);&lt;br /&gt;
        if (attr == null) {&lt;br /&gt;
          continue;&lt;br /&gt;
        }&lt;br /&gt;
        System.out.println(MY_ATTRS[i] + &amp;quot;:&amp;quot;);&lt;br /&gt;
        for (Enumeration vals = attr.getAll(); vals.hasMoreElements();) {&lt;br /&gt;
          System.out.println(&amp;quot;\t&amp;quot; + vals.nextElement());&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a URL as a Name to the Initial Context ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import javax.naming.InitialContext;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    Object obj = new InitialContext().lookup(&amp;quot;iiop://localhost/Sample&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>