你在部署时,注册HelloHome对象时是用的helloJNDI这个名字吗,你取到的对象不能构造成HelloHome对象,所以抛出造型例外

解决方案 »

  1.   

    javax.rmi.PortableRemoteObject.narrow(obj,elloHome.class);这句话错了吧,elloHome是什么东西
    javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
      

  2.   

    谢谢两位的解答,我用的是helloJNDI这个名字的,那句javax.rmi.PortableRemoteObject.narrow(obj,elloHome.class);
    也只是我排版时的手误,应该是
    javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);的希望再次得到在家的帮助,非常感谢!
      

  3.   

    有可能是你的配置问题。用的服务器不同,配置不同。例如在bas下还要包client.jar给加入服务器。而在bes下则不用。只需ear包即可也有可能是程序问题。
    你是否把你的client.jar加入包中;
    再看看jndi是否和你lookup的相同(看你的程序应该是相同的,因为是在narrow出的错)。我是刚开始学ejb。不过hello已通过
      

  4.   

    从你的import来看,你没有引入BEAN相关的类,那么你最好把HelloClient,BEAN的HOME接口,BEAN的远程接口这3个类放在同一个目录下面。
      

  5.   

    再次谢谢大家的帮助,因为刚开始接触EJB,所有很多地方不清楚,非常感谢大家的帮助!我的环境是sun的j2sdkee-1_3_01-win,用的部署工具是其自带的deploytool。整个开发情况是这样的:建立一个目录hello,下面有server和client两个子目录;部署的应用程序helloApp.ear在server目录下,而EJB的所有相关类文件在server目录的classes子目录下;在client目录下有HelloClient客户端测试类,还有EJB的主接口和Home接口类。我的客户端打包成jar,而是直接运行HelloClient,就出现上面的错。请问各位问题可能是出在什么方面?万分感谢!
      

  6.   

    Object obj = ctx.lookup("java:comp/env/ejb/helloJNDI");
    "ejb/helloJNDI"为 JNDI。
    你要用deploytool在EJB Refs中设置In the tree, select HelloClient. 
    Select the EJB Refs tab. 
    Click Add. 
    In the Coded Name column, enter ejb/helloJNDI. 
    In the Type column, select Session. 
    In the Interfaces column, select Remote. 
    In the Home Interface column, enter Hello. 
    In the Local/Remote Interface column, enter Hello
      

  7.   

    javax.rmi.PortableRemoteObject.narrow(obj, 
                                                 elloHome.class);我看是这句话有错!
      

  8.   

    javax.rmi.PortableRemoteObject.narrow(obj, 
                                                 elloHome.class);
    该成:
    javax.rmi.PortableRemoteObject.narrow(obj, 
                                                HelloHome.class);