java.util.Hashtable ht = new java.util.Hashtable();
      ht.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
             "com.sun.jndi.cosnaming.CNCtxFactory");
      ht.put(javax.naming.Context.PROVIDER_URL, "iiop://localhost:1050");
      Context ctx = new InitialContext(ht);

解决方案 »

  1.   

    采用ajoke(可乐)的方法确实不会产生异常,
    不过并不是我想要的结果,
    原因有两个
    1.硬编码的方式不灵活;
    2.显示的结果不对,我记得以前我看到的结果有很多
    包括JMS,jdbc,EJB,还有自定义的都能看到,像一个目录结构一样,
    分级的。
      

  2.   

    1.通过参数传入
    2."后来我重装了jdk和j2ee后",重装了就没有了
      

  3.   

    这些程序是<<21天学通J2EE>>第三章的例子,我刚开始学的时候照书上的做法
    完全可以测试通过,也没有采用硬编码的方式,可今天重试了一次却不行了,
    感觉真的莫名奇妙,谁能帮我测一下上面的程序。还有下面的也帮测一下,谢谢!!!import javax.swing.*;
    import javax.swing.tree.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.naming.*;public class JNDIBrowserSort extends JPanel
    {
        public static void main(String[] args) {
         final JFrame window = new JFrame("JNDI Browser");
         try {
            final JNDIBrowserSort client = new JNDIBrowserSort();
         window.addWindowListener(new WindowAdapter() {
         public void windowClosing( WindowEvent ev) {
         window.dispose();
    System.exit(0); 
         }
         });
         Container cp = window.getContentPane();
         cp.add(client,BorderLayout.CENTER);
        window.pack();
         window.setVisible(true);
         }
         catch (Exception ex) {
           System.err.println(ex);
         window.dispose();
         System.exit(1);
         }
        }    public JNDIBrowserSort() {
    Context ctx=null;
    try {
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("JNDI");
    ctx = new InitialContext();
    addContext (root,ctx);
         JTree tree = new JTree(root);
         add (new JScrollPane(tree));

    catch (NamingException ex) {
    System.err.println (ex);
    System.exit(1);
    }
        } private static void addContext (DefaultMutableTreeNode node, Context ctx) throws NamingException{
    NamingEnumeration list = ctx.listBindings("");
    Map sorted = new TreeMap();
    while (list.hasMore()) {
    Binding item = (Binding)list.next();
    sorted.put(item.getName(),item);
    System.out.println(item.getName());
    }
    Iterator keys = sorted.keySet().iterator();
    System.out.println("---");
    while (keys.hasNext()) {
    String name = (String)keys.next();
    System.out.println(name);
    Binding item = (Binding)sorted.get(name);
    DefaultMutableTreeNode child = new DefaultMutableTreeNode(name);
    node.add (child);
    Object o = item.getObject();
    if (o instanceof javax.naming.Context)
    addContext (child,(Context)o);
    }
    }   
    }
      

  4.   

    to ajoke(可乐) 你好!
    你机子上装有J2ee吗?
    有的话能不能帮我测一下?实在是太奇怪了,以前确实是正确的。
      

  5.   

    2."后来我重装了jdk和j2ee后",重装了就没有了
    -------------------------------------------
    我现在也用j2eeadmin建了很多东西,
    也有很多EJB/XXX,不过也没显示出来。
      

  6.   

    我不了解ctx.list("");能返回什么
    文档上没说""做参数是什么意思,呵呵
    不好意思,能力不够
      

  7.   

    我用的sun one app server7
    没有用j2ee自带那个
      

  8.   

    呵呵!终于解决了,刚才认认真真,仔仔细细的看了一遍,终于找到原因了,
    高兴极了!!!!不过还是要谢谢ajoke(可乐),谢谢!!!方法:
    1.%J2EE_HOME%\bin\setenv;
    2.java -classpath .;%CPATH% JNDIList结果:
    com.sun.enterprise.distributedtx.UserTransactionImpl - UserTransaction
    com.sun.enterprise.jms.ConnectionFactoryWrapperStandalone - QueueConnectionFactory
    com.sun.jms.JMSXAQueueConnectionFactoryImpl - JMSXAMyQueFactory
    javax.naming.Reference - RemoteLogReader
    com.sun.jms.QueueImpl - MyQue
    javax.naming.Reference - ServerObject
    com.sun.jms.JMSXATopicConnectionFactoryImpl - ContainerXATopicConnectionFactory
    com.sun.jms.JMSXAQueueConnectionFactoryImpl - JMSXAQueueConnectionFactory
    com.sun.jms.JMSXATopicConnectionFactoryImpl - JMSXAMyTopicFactory
    com.sun.enterprise.naming.TransientContext - JMSXAjms
    javax.naming.Reference - ServerConfiguration
    com.sun.enterprise.jms.ConnectionFactoryWrapperStandalone - MyTopicFactory
    javax.naming.Reference - DatabaseInformation
    com.sun.enterprise.jms.ConnectionFactoryWrapperStandalone - TopicConnectionFactory
    javax.naming.Reference - WebInstaller
    javax.naming.Reference - J2EE_UNIQUE_VALUE_GEN
    com.sun.enterprise.naming.TransientContext - jdbc
    javax.naming.Reference - Realm_Manager
    javax.naming.Reference - JarInstaller
    com.sun.enterprise.jms.ConnectionFactoryWrapperStandalone - MyQueFactory
    com.sun.jms.JMSXAQueueConnectionFactoryImpl - ContainerXAQueueConnectionFactory
    com.sun.enterprise.naming.TransientContext - jms
    com.sun.jms.TopicImpl - MyTopic
    com.sun.jms.JMSXATopicConnectionFactoryImpl - JMSXATopicConnectionFactory
    <<21天学通J2EE>>个人认为的确还可以。