jsp中产生错误的代码如下:
Properties props = System.getProperties();
javax.naming.Context ctx = new javax.naming.InitialContext(props);
Gako2Home home = (Gako2Home) ctx.lookup("Gako2Home"); 就在第3行产生错误.该jsp编译后的java文件如下:
java.util.Properties properties = System.getProperties();
InitialContext initialcontext = new InitialContext(properties);
Gako2Home gako2home = (Gako2Home)initialcontext.lookup("Gako2Home");我朋友的机器,编译产生部署ejb都是成功的.关键到从环境属性中读取home时就错了,实在不明白问题在哪里.明知道是配置的问题,但是到底是哪儿配置的不一样呢?
除了朋友的机器是win2k是装在d盘,而我的win2k是装在c盘这个不同外,并无其他不同.不过也许有,但是我不知道而已.请诸位大侠指点江山.

解决方案 »

  1.   

    看看这个ejb jar的META-INF/ejb-jar.xml 文件中关于 ejb/env的环境设置部分是怎么样的。
      

  2.   

    META-INF/ejb-jar.xml 如下,好象没有ejb/env
    <?xml version="1.0"?><!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'><ejb-jar>
        <enterprise-beans>
          <entity>
    <ejb-name>Gako2Home</ejb-name>
    <home>cn.com.food.entity.gako2.Gako2Home</home>
    <remote>cn.com.food.entity.gako2.Gako2</remote>
    <ejb-class>cn.com.food.entity.gako2.Gako2EJB</ejb-class>
    <persistence-type>Bean</persistence-type>
    <prim-key-class>cn.com.food.entity.gako2.Gako2PK</prim-key-class>
    <reentrant>False</reentrant>
          </entity>
        </enterprise-beans>
        <assembly-descriptor>
          <container-transaction>
    <method>
      <ejb-name>Gako2Home</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>*</method-name>
    </method>
    <trans-attribute>Required</trans-attribute>
          </container-transaction>
        </assembly-descriptor>
      </ejb-jar>
      

  3.   

    同样的文件放到你的机器上却能正常运行,你客户端调用ejb是不是分布式的?
    你该把使用ejbc编译过的jar解开放到weblogic的class路径下做client的调用文件。
    分布式调用客户端需要stub和impl等等文件
      

  4.   

    我把他的jar和jar解开后的class文件放到class目录下,并把jar的路径加如weblogic配置文件.
    然后就能正确调用.与他的机器不相关.没有分布式调用.
      

  5.   

    你同事机器上的weblogic.properties文件中的classpath可能有问题.
    仔细对对.
      

  6.   

    应该不会,weblogic.properties,startweblogic.cmd文件都从我这里直接copy的.
      

  7.   

    总觉得你的EJB Bean的名字有点混淆。
    从你的ejb-jar.xml 中可以看出,EJB Bean的名字叫做Gako2Home,它的Home类名字也叫Gako2Home,似乎有点奇怪,是不这个<ejb-name>中应该是与<ejb-class>名字相同,叫Gako2EJB会正常一点,符合正常的命名习惯吧。