Object ref  = jndiContext.lookup("Hello");
lookup的应该是jndi而不是ejbname
Object ref  = jndiContext.lookup("HelloBean");

解决方案 »

  1.   

    对,这个我改了,但还是出错java.lang.ClassCastException
      

  2.   

    是运行到
     HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref, HelloHome.class);
    这句的时候出错,为什么?
      

  3.   

    少东西了吧?jndi配置没走?
    try
          {
            //jndi配置,硬编码到java中,应实现为外部属性文件
            Properties p=new Properties();
            p.setProperty("java.naming.factory.initial",
                "org.jnp.interfaces.NamingContextFactory");
            p.setProperty("java.naming.provider.url",
                "localhost:1099");
                
             //out print jndi配置
            p.list(System.out);
          
             // Get a naming context
             InitialContext jndiContext = new InitialContext(p);
             System.out.println("Got context");
             
             // Get a reference to the Interest Bean
             //jboss默认jndi名为ejb-jar.xml中的:ejb-name
             Object ref  = jndiContext.lookup("Hello");
             System.out.println("Got reference");
      

  4.   

    Object ref = jndiContext.lookup("Hello");
    改为
    Object ref = jndiContext.lookup("HelloBean");
    试试看
      

  5.   

    恩?? //jndi配置,硬编码到java中,应实现为外部属性文件
            Properties p=new Properties();
            p.setProperty("java.naming.factory.initial",
                "org.jnp.interfaces.NamingContextFactory");
            p.setProperty("java.naming.provider.url",
                "localhost:1099");
                
             //out print jndi配置
            p.list(System.out);
          
             // Get a naming context
              //jndi配置,硬编码到java中,应实现为外部属性文件
            Properties p=new Properties();
            p.setProperty("java.naming.factory.initial",
                "org.jnp.interfaces.NamingContextFactory");
            p.setProperty("java.naming.provider.url",
                "localhost:1099");
                
             //out print jndi配置
            p.list(System.out);
          
             // Get a naming context
             InitialContext jndiContext = new InitialContext(p);
    这个跟
     //jndi配置,硬编码到java中,应实现为外部属性文件
            Properties p=new Properties();
            p.setProperty("java.naming.factory.initial",
                "org.jnp.interfaces.NamingContextFactory");
            p.setProperty("java.naming.provider.url",
                "localhost:1099");
                
             //out print jndi配置
            p.list(System.out);
          
             // Get a naming context
             InitialContext jndiContext = new InitialContext(p);
    这样子跟
     //jndi配置,硬编码到java中,应实现为外部属性文件
            Properties p=new Properties();
            p.setProperty("java.naming.factory.initial",
                "org.jnp.interfaces.NamingContextFactory");
            p.setProperty("java.naming.provider.url",
                "localhost:1099");
                
             //out print jndi配置
            p.list(System.out);
          
             // Get a naming context
             InitialContext jndiContext = new InitialContext(p);
    这样子跟
    InitialContext jndiContext = new InitialContext();有什么区别阿?
      

  6.   


    InitialContext  jndiContext  =  new  InitialContext(p);  
    这样子跟  
    InitialContext  jndiContext  =  new  InitialContext();有什么区别阿?
      

  7.   

    好了,不过我用的是jboss-4.0.4.GA,还要改配置文件才行!!弄了我一天!!
    InitialContext  jndiContext  =  new  InitialContext(p);  
    这样子跟  
    InitialContext  jndiContext  =  new  InitialContext();有什么区别阿?
    我看有些书上用InitialContext  jndiContext  =  new  InitialContext();为什么??
      

  8.   

    构造方法摘要 
      InitialContext() 
              构造一个初始上下文。 
    protected  InitialContext(boolean lazy) 
              构造一个具有不进行初始化的选项的初始上下文。 
      InitialContext(Hashtable<?,?> environment) 
              使用所提供的环境构造一个初始上下文。 有些书上用InitialContext  jndiContext  =  new  InitialContext(); 也可以 可能是因为他的客户程序与EJB运行在同一个JVM中,或者是因为提供了jndi.properties文件吧
      

  9.   

    谢谢,马上结贴,最后一个问题:我的是运行在同一个jvm中,jndi.properties在哪里指定?????
      

  10.   

    我想用InitialContext  jndiContext  =  new  InitialContext();这个方法!!
      

  11.   

    将JBOSS下的jndi.properties加到环境变量里面
      

  12.   

    不会是加到windows的path里吧??
      

  13.   

    没看到又回复了啊,呵呵~~
    把这个文件所在目录设定到环境变量classpath