jsp里这么写应该没有问题。对于普通的Client Application查找JNDI需要这样(以OC4J为例):
java.util.Properties p = new java.util.Properties();
  p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
  p.put(javax.naming.Context.PROVIDER_URL, "ormi://localhost:23891/current-workspace-app");
  p.put(javax.naming.Context.SECURITY_PRINCIPAL, "admin");
  p.put(javax.naming.Context.SECURITY_CREDENTIALS, "welcome");javax.naming.Context ctx = new javax.naming.InitialContext(p);
......

解决方案 »

  1.   

    import javax.naming.*;  声明了没?
      

  2.   

    你在调EJB是吧。部署成功了吗???
      

  3.   

    对啊。我调的是ejb。部署成功了的。
      

  4.   

    试试java.util.Properties p = new java.util.Properties();
      p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
      p.put(javax.naming.Context.PROVIDER_URL, "t3://locasthost:7001");javax.naming.Context ctx = new javax.naming.InitialContext(p);
    ......
      

  5.   

    楼主的问题在于jndi根本就找不到他要调用的ejb,不管你用哪种方式。
      

  6.   

    不是吧
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property是找不到相关环境
      

  7.   

    搂主,你是在什么里面调用
    InitialContext initial = new InitialContext();
                userHome = (UsersHome) initial.lookup("java:comp/env/ejb/Users");
    的?
    jsp?
      

  8.   

    bennyjj的英语水平有点问题,分明是没有InitialContext的属性嘛
      

  9.   

    to bennyjj(bennyjj),应该是环境问题吧,请看// test.java
    public class test
    {
      public static void main(String[] args)
      {
        try
        {
          javax.naming.Context ctx = new javax.naming.InitialContext();      Object ref = ctx.lookup("MySessionEJB");
          MySessionEJBHome home = (MySessionEJBHome)javax.rmi.PortableRemoteObject.narrow(ref, MySessionEJBHome.class);
        }
        catch(Exception e)
        {
          System.out.println(e.toString());
        }
      }
    }报错:
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial改为:
    // test.java
    public class test
    {
      public static void main(String[] args)
      {
        try
        {
          java.util.Properties p = new java.util.Properties();
            p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
            p.put(javax.naming.Context.PROVIDER_URL, "ormi://localhost:23891/current-workspace-app");
            p.put(javax.naming.Context.SECURITY_PRINCIPAL, "admin");
            p.put(javax.naming.Context.SECURITY_CREDENTIALS, "welcome");
          
          javax.naming.Context ctx = new javax.naming.InitialContext(p);      Object ref = ctx.lookup("MySessionEJB");
          MySessionEJBHome home = (MySessionEJBHome)javax.rmi.PortableRemoteObject.narrow(ref, MySessionEJBHome.class);
        }
        catch(Exception e)
        {
          System.out.println(e.toString());
        }
      }
    }就通过了。
      

  10.   

    我不是根据那段英语说的,我以前碰到过类似问题。我的理解就是ejb没有部署成功或lookup的ejb名字有问题。总之是lookup不到你要找的ejb。
      

  11.   

    找不到会报:
    javax.naming.NameNotFoundException: MySessionEJB not found
    呵呵呵
      

  12.   

    ?是又报了新的错误?你到底是不是在jsp里掉用的阿?