ic = new InitialContext(); //这样写是可以的,得到当前当前服务器的JNDI初始化上下文.你的原因是你的Context.INITIAL_CONTEXT_FACTORY 所需要的类没有加到CLASSPATH 或是可以让服务器找到的地方.

解决方案 »

  1.   

    他提示的信息是没有找到连接工厂,如果你是用WebLogic的话,建立初始化上下文对象是需要一个参数的,这个参数就是指定你的连接工厂、你的应用服务器的URL,用户的密码和帐号。
    Hashtable hashtable = null;
    String user =;
    String password = ;
    try{
      hashtable = new Hashtable();
      hashtable.put(Conntext.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
      hashtable.put(Context.PROVIDER_URL,"t3://localhost:7001");
      if(user != null){
        hashtable.put(Context.SECURITY_PRINCIPAL,user);
        hashtable.put(Context.SECURITY_CREDENTIALS,password == null ? "" : password);
      }
      InitialContext initialContext = new InitialContext(hashtable);
    }
    catch(Exception e){
      e.printStackTrace();
    }
    如果你是用JBOSS话,你到%JBOSS_HOME%\server\defualt\conf里面找到jndi.properties文件,然后把它COPY到你的工程文件底下就行了,这个文件的内容就是:
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.provider.url=jnp://localhost:1099
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    此外你还要去%jboss_home%\client里面把jnp-client.jar文件引到到你的工程里面。