Context initial = new InitialContext();
这里有问题如果你用同样的调用代码用web可以调用说明你的web容器和EJB容器实际上是在同一个JVM里但是你启动另外一个Client来调用EJB,就说明这是不同的JVM所以你应该这么写(weblogic):      properties = new Properties();
      properties.put(Context.INITIAL_CONTEXT_FACTORY,
                     "weblogic.jndi.WLInitialContextFactory");
      properties.put(Context.PROVIDER_URL, "t3://localhost:7001");      Context initial = new InitialContext(properties);

解决方案 »

  1.   


    可是我在同一台机器上运行我的客户端程序,
    所以客户端与EJB所在JVM是一样的呀,
    还有你这样写:
    properties = new Properties();
          properties.put(Context.INITIAL_CONTEXT_FACTORY,
                         "weblogic.jndi.WLInitialContextFactory");
          properties.put(Context.PROVIDER_URL, "t3://localhost:7001");      Context initial = new InitialContext(properties);我不知道你为什么这样写?可否解释一下,谢谢啊!
      

  2.   


    我使用的初始化工厂类是com.sun.jndi.cosnaming.CNCTxFatory,
    那我应该如何运行我的Client呢?
    还有一点,对于工厂这个概念你是如何理解的?
    http://community.csdn.net/Expert/topic/3902/3902144.xml?temp=5.076236E-02
      

  3.   

    听 popufig 的没错,先跑通了,然后再想为什么。你的那个web应用,如果单独放到 resin等web 应用中,来访问EJB,肯定也会遇到类似的问题的。