用weblogic的话,在weblogic中配置JNDI就行了。不然你就要装有JNDI功能的其他服务

解决方案 »

  1.   

    回复:
    那weblogic又是怎么一回事呢?请教。
      

  2.   

    我想错误的原因是我的机器里面没有安装JNDI
      

  3.   

    我想错误的原因是我的机器里面没有安装JNDI
      

  4.   

    package jnditest;/**
     * <p>Title: JNDI使用LDAP</p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author lifeis
     * @version 1.0
     */import com.sun.jndi.ldap.LdapCtxFactory;
    import java.lang.String;
    import java.util.Hashtable;
    import java.util.Enumeration;
    import javax.naming.*;
    import javax.naming.directory.*;
    import javax.naming.directory.InitialDirContext;
    import java.util.Vector;public class ldap
    {
      public static String INITCTX="com.sun.jndi.ldap.LdapCtxFactory";
      public static String MY_HOST="ldap://localhost:389";
      public static String MY_SEARCHBASE="dc=lifeis,dc=lifeis,dc=net,dc=cn";
      public static String MY_FILTER="(cn=lifeis)";
      public static String MY_ATTRS[]={"cn","mail"};  public static void main(String[] args)
      {
        try
        {
          Hashtable env=new Hashtable();      //specify which class to use for our JNDI provider
          env.put(Context.INITIAL_CONTEXT_FACTORY,INITCTX);
          //security information
          //authenticates us to the server
          env.put(Context.SECURITY_AUTHENTICATION,"simple");
          env.put(Context.SECURITY_PRINCIPAL,"lifeis");
          env.put(Context.SECURITY_CREDENTIALS,"lifeis");      //specify host and port to use for directory service
          env.put(Context.PROVIDER_URL,MY_HOST);      //get a reference to a directory context
          Context context = new InitialContext(env);
          DirContext ctx=new InitialDirContext(env);      //specify the scope to the search
          SearchControls constraints=new SearchControls();
          constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);      //perform the actual search
          //we give it a searchbase,a filter and the constraints
          //containing the scope of the search
          NamingEnumeration results=ctx.search(MY_SEARCHBASE,MY_FILTER,constraints);
          while(results!=null && results.hasMoreElements())
          {
            SearchResult sr=(SearchResult)results.next();        String dn=sr.getName()+","+MY_SEARCHBASE;        System.out.println("Distinguished Name is "+dn);
            Attributes ars=ctx.getAttributes(dn,MY_ATTRS);        if(ars==null)
            {
              System.out.println("Entry "+dn+" has none of the specified attributes\n");
            }
            else
            {
              for(int i=0;i<MY_ATTRS.length;i++)
              {
                Attribute attr=ars.get(MY_ATTRS[i]);
                if(attr!=null)
                {
                  System.out.print(MY_ATTRS[i]+":");
                  for(Enumeration vals=attr.getAll();vals.hasMoreElements();)
                  {
                    System.out.print("\t"+vals.nextElement());
                  }
                  System.out.print("\n");
                }
                else
                {
                  System.out.println(MY_ATTRS[i]+":\tnull");
                }
              }
              System.out.println("\n");
            }
          }    }
        catch(Exception e)
        {
          e.printStackTrace();
          System.exit(1);
        }
      }
    }
      

  5.   

    我想出错的原因是因为我的机器上没有配置JNDI,可是又怎么配置呢?
      

  6.   

    JDK1.4中就支持JNDI和LDAP,不需要别的了
    我的程序访问的是ADS中的内容,程序在WIN2000 SERVER中通过
      

  7.   

    好象在JDK1.1和1.2中需要配置,
    在http://java.sun.com/jndi/下载
      

  8.   

    这是我学习J2EE遇到的第一个问题,真让人头疼,大家来帮忙啊
      

  9.   

    javax.njavax.naming.NoInitialContextException: Cannot instantiate class: com.sun.jndi.l
    dap.ldapCtxFactory.  Root exception is java.lang.ClassNotFoundException: com.sun
    .jndi.ldap.ldapCtxFactory
            at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:207)
            at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.jav
    a:42)
            at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
    49)
            at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
    )
            at javax.naming.InitialContext.init(InitialContext.java:219)
            at javax.naming.InitialContext.<init>(InitialContext.java:195)
            at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.jav
    a:80)
            at JNDISearch.main(JNDISearch.java:21)
      

  10.   

    import java.util.Hashtable;
    import java.util.Enumeration;
    import javax.naming.*;
    import javax.naming.directory.*;public class JNDISearch
    {
    public static String INITCTX="com.sun.jndi.ldap.ldapCtxFactory";
    public static String MY_HOST="ladp://localhost:389";
    public static String MY_SEARCHBASE="o=Airius.com";
    public static String MY_FILTER="(sn=Carter)";

    public static void main(String args[])
    {
    try
    {
    Hashtable env=new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,INITCTX);
    env.put(Context.PROVIDER_URL,MY_HOST);

    DirContext ctx=new InitialDirContext(env);

    SearchControls constraints=new SearchControls();
    constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);

    NamingEnumeration results=ctx.search(MY_SEARCHBASE,MY_FILTER,constraints);

    while(results!=null && results.hasMore())
    {
    SearchResult sr=(SearchResult)results.next();
    String dn=sr.getName();
    System.out.println("Distinguished Name is "+dn);

    Attributes attrs=sr.getAttributes();

    for(NamingEnumeration ne=attrs.getAll();ne.hasMoreElements(); )
    {
    Attribute attr=(Attribute)ne.next();
    String attrID=attr.getID();

    System.out.println(attrID+":");
    for(Enumeration vals=attr.getAll();vals.hasMoreElements();)
    {
    System.out.println("\t"+vals.nextElement());
    }
    }
    System.out.println("\n");
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    System.exit(1);
    }
    }
    }
      

  11.   

    要设置系统变量:J2EE_HOME与JNDI_HOME为你的安装路径
      

  12.   

    是set j2EE_HOME=d:\jdk;
    set JNDI_HOME=d:\jdk;
    吗?(d:\jdk 是我的java sdk的安装目录)
      

  13.   

    你的这里写错了吧!
    public static String INITCTX="com.sun.jndi.ldap.ldapCtxFactory";
    应该是:
    public static String INITCTX="com.sun.jndi.ldap.LdapCtxFactory";
    sun公司是不会把类名的开头小写的!呵呵!
      

  14.   

    赋值得时候是作为一个字符串,大写小写编译的时候当然不会报错,
    但根据这个字符串去找类名当然就找不到了,所以运行才出错。
    Root exception is java.lang.ClassNotFoundException: com.sun
    .jndi.ldap.ldapCtxFactory
      

  15.   

    javax.naming.NamingException: Cannot parse url: ladp://localhost:389.  Root exce
    ption is java.net.MalformedURLException: Not an LDAP URL: ladp://localhost:389
            at com.sun.jndi.ldap.LdapURL.<init>(LdapURL.java:68)
            at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.jav
    a:58)
            at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
    62)
            at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
    )
            at javax.naming.InitialContext.init(InitialContext.java:219)
            at javax.naming.InitialContext.<init>(InitialContext.java:195)
            at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.jav
    a:80)
            at JNDISearch.main(JNDISearch.java:21)恩人啊,多谢了,可是改过了还有上面的错误。
      

  16.   

    我把拼写错误改过来后怎么还是有错误:javax.naming.CommunicationException: localhost:389.  Root exception is java.net.
    ConnectException: Connection refused: connect
            at java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:295)
            at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:161)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:148)
            at java.net.Socket.connect(Socket.java:425)
            at java.net.Socket.connect(Socket.java:375)
            at java.net.Socket.<init>(Socket.java:290)
            at java.net.Socket.<init>(Socket.java:118)
            at com.sun.jndi.ldap.Connection.createSocket(Connection.java:342)
            at com.sun.jndi.ldap.Connection.<init>(Connection.java:177)
            at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:112)
            at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2504)
            at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:263)
            at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.jav
    a:76)
            at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
    62)
            at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
    )
            at javax.naming.InitialContext.init(InitialContext.java:219)
            at javax.naming.InitialContext.<init>(InitialContext.java:195)
            at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.jav
    a:80)
            at JNDISearch.main(JNDISearch.java:21)