是session bean 还是 entity bean?
是session bean 的话是禁止彼此调用的!!!

解决方案 »

  1.   

    Session Bean调用Entity Bean的话是ejb-jar.xml需要写ref的。以下是个例子:
    <session>
          <description>描述信息description>
          <display-name>Bank/ManageAccount</display-name>
          <ejb-name>Bank/ManageAccount</ejb-name>
          <home>com.test.bank.ManageAccounteHome</home>
          <remote>com.test.bank.ManageAccounteHome</remote>
          <ejb-class>com.test.bank.ManageAccounteHomeBean</ejb-class>
          <session-type>Stateless</session-type>
          <transaction-type>Container</transaction-type>
    <--! 以下的ejb-local-ref就是关联信息,它指示的local 连接
    ejb-ref-name域填写的名字是你在程序中需要调用的名字,在程序中你可以这样调用java:comp/env/ejb/Bank/AccountLocal;
    local-home与local写Account类的名字;对于Remote连接来说要改为远程的,具体可以参考DTD文件。-->
          <ejb-local-ref>
            <description>描述信息</description>
            <ejb-ref-name>ejb/Bank/AccountLocal</ejb-ref-name>
            <ejb-ref-type>Entity</ejb-ref-type>
            <local-home>com.test.bank.AccounteLocalHome</local-home>
            <local>com.test.bank.AccounteLocal</local>
            <ejb-link>Bank/Account</ejb-link>
          </ejb-local-ref>
        </session>
      

  2.   

    session Bean之间能不能互相调用啊?书上给了一个例子是用无状态session Bean来调用状态session Bean的,是不是最好用session Bean和entity Bean进行通讯?具体错误如下,其实两个Bean完成的是一个查询数据库的简单操作,一个为SelectBean(接口为SelectHome和Select),用来连接数据库并查询,另一个是useResBean(接口为useResHome和useRes),用来调用SelectBean并取得查询结果,两个都是无状态session Bean,用一个客户程序调用useResBean,具体调用过程为Client-->useResBean-->SelectBean,最后取得一个结果,但是运行客户程序后错误如下(大致意思就是找不到另一个Bean):java.rmi.RemoteException:EJB Exception: ; nested exception is:
            java.lang.NoClassDefFoundError: QuerySqlserver/SelectHome
    下面还有
      

  3.   

    Start server side stack trace:
    java.rmi.RemoteException: EJB Exception: ; nested exception is:
            java.lang.NoClassDefFoundError: QuerySqlserver/SelectHome
    java.lang.NoClassDefFoundError: QuerySqlserver/SelectHome
            at java.lang.ClassLoader.defineClass0(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:493)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
    1)
            at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Generic
    ClassLoader.java:390)
            at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
    Loader.java:152)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:195)
            at weblogic.utils.classfile.utils.CodeGenerator.generateClass
    …………………………End  server side stack trace
    唉,不明白为什么,是因为什么原因导致这样,请大家多帮忙,谢谢!