1.不必放在同一个JAR文件,但一定要在同一个JVM里。

解决方案 »

  1.   

    是在同一个JVM里,但是在
    public void setSessionContext(SessionContext sessionContext)
        {
            this.sessionContext = sessionContext;
            try
            {
                this.sessionContext = sessionContext;
                Context context = new InitialContext();
                localHome = (EjbTestLocalLocalHome)context.lookup("Local");
                
            }
            catch(NamingException e)
            {
                System.out.println(e.getMessage());
            }    就发生异常,在(EjbTestLocalLocalHome)context.lookup("Local")发生的异常!
    java.rmi.RemoteException: EJB Exception: ; nested exception is: 
    java.lang.ClassCastException: hhhhhh.EjbTestLocalBean_ug68u4_LocalHomeImplStart server side stack trace:
    java.rmi.RemoteException: EJB Exception: ; nested exception is: 
    java.lang.ClassCastException: hhhhhh.EjbTestLocalBean_ug68u4_LocalHomeImpljava.lang.ClassCastException: hhhhhh.EjbTestLocalBean_ug68u4_LocalHomeImpl at hhhhhh.EjbtestFengxiBean.setSessionContext(EjbtestFengxiBean.java:30) at hhhhhh.EjbtestFengxiBean_ffihpk_Impl.setSessionContext(EjbtestFengxiBean_ffihpk_Impl.java:93) at weblogic.ejb20.manager.StatelessManager.createBean(StatelessManager.java:289) at weblogic.ejb20.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:156) at weblogic.ejb20.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:119) at weblogic.ejb20.manager.StatelessManager.preInvoke(StatelessManager.java:156) at weblogic.ejb20.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:124) at weblogic.ejb20.internal.StatelessEJBObject.preInvoke(StatelessEJBObject.java:63) at hhhhhh.EjbtestFengxiBean_ffihpk_EOImpl.getStringTest(EjbtestFengxiBean_ffihpk_EOImpl.java:24) at hhhhhh.EjbtestFengxiBean_ffihpk_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:305) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:274) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)End  server side stack trace
      

  2.   

    我的在
                localHome = (EjbTestLocalLocalHome)context.lookup("Local");
    出错。发了几个贴了,还是没有搞定。
      

  3.   

    1。我把EJBLocal的EJB和EJBRemote的EJB放在一个jar文件里,可以调用本地接口,运行正常
    2。但我把EJBLocal的EJB和EJBRemote的EJB放在两个不同的jar文件里,调用本地接口出错!  怎么会出现这样的问题?那未朋友遇见过吗?怎么解决?
      

  4.   

    本地接口只能在同一个jar(ear)包中才可以使用。
      

  5.   

    不明白,你的ejb到底是local还是remote ?
    2。但我把EJBLocal的EJB和EJBRemote的EJB放在两个不同的jar文件里,调用本地接口出错!  你是怎么调用的?
    localHome = (EjbTestLocalLocalHome)context.lookup("Local");
           这里的localHome是哪来的? localhome的jndi名字是 Local ?(应该是对的:)
      

  6.   

    你所说的EJBLocale、EJBLocal的EJB、EJBRemote都是指的什么?我怎么看得这么胡涂?
    能说得清楚些吗?
      

  7.   

    将这两个jar文件打到一个ear文件里面在发布就可以了。
      

  8.   

    EJBLocale是一个本地接口的EJB,放在local.jar中, 在另一个Remote接口的EJB ,EJBRemote(放在remote.jar中),在remote.jar中的EJBRemote调用local.jar中的EJBLocale,发生错误,但是我把EJBLocal,EJBRemote放在一个command.jar包中就没有问题,怎么会事?????
      

  9.   

    调用有本地接口的EJB的那个EJB,必须和这个有本地接口的EJB在一个jar包里,这是一个本地调用。使用本地接口设计EJB就是为了当只需要在本地调用时不用再经过一个远程调用的过程,提高效率。
    例如,一般来说,可以把实体bean设成本地接口,然后再写一个有远程接口的session bean来调用它,远程的客户端只需要对session bean进行远程调用,而session bean调用实体bean则是一个本地调用的过程。这时候,这个session bean必须和实体bean打在一个jar包里。
      

  10.   

    to flyingby   你好!
        如果在一个jar文件里面的话,不是本地接口的重用不是那么高了吗?比如一个session bean要掉用一个本地的实体Bean。但是我后来又有一个session bean也希望调用这个实体Bean,这两个session bean不在一个jar里,不是我又要写一个同样的实体Bean,或者把两个seesion bean放在一个jar文件里,怎么EJB2.0没有考虑这样很不好吗?我觉得这是EJB2.0的一个缺陷!这个是本人个人观点!!!!
      

  11.   

    是类冲突了,两个jar里有相同的类,出现冲突,你去掉一个jar试试.
      

  12.   

    两个ejb可以不在同一个jar,但是需要在同一个ear里面
    也就是说在deploy description里面用ejb-local-ref做声明
    描述2个ejb的关系