把class2做成SESSION EJB,Class1做成实体EJB,这样就好了

解决方案 »

  1.   

    session bean和entity bean是ejb中两个必须存在的bean,session bean一般来说只有一个,而entity bean则应该最少一个。
      

  2.   

    不一定!!!!如果你只打算用于本地管理不必将class2做成ejb,直接编写客户端程序,如果你想将来通过远程管理,可以将处理部分做成session bean
      

  3.   

    to qingrun:
    首先session bean 和 entity bean 不一定要同时存在,比如"hellow"范例其次session bean 代表的是会话,一般不止一个
    session bean 和 entity bean 都是从enterprise javabean 继承过来,因为他们不是网络对象,因此他们必须通过ejb对象和客户通讯,而ejb 对象继承了remote interface 因此客户端可以远程调用ejb,这就是为什么每个ejb 对象要复制ejb方法的原因(除create()方法外)
      

  4.   

    我的感觉是 class2 的实例要被 class1 的多个实例共享,那么在 class2 上你要实现 Singleton。
    我同意 blueseashore 的看法。
      

  5.   

    to blueseashore:
    当然你说得也有道理。不过,我是指一般的项目中的应用,特殊情况当然是允许的。
    Session bean一般是不止一个,这是指在ejb运行过程中,根据client的多少,home就会相应的创建多少个session bean,而自己编写ejb时,则是要根据具体的情况才能定下来的。
      

  6.   

    to qingrun:
      session 分为stateless session bean 和 stateful session bean
      一般stateless session bean 容易成池,但由服务器指定stateless session bean的实例的个数
      而stateful session bean 也有一个数目限制,在客户端没有调用时需钝化,调用时击活.
    如果没有限制的话!当有大量用户调用这些session bean 时,照你的说法"client的多少,home就会相应的创建多少个session bean",那么服务器肯定受不了.
      另外举个例子:一个电子商务应用一般会有多个sessionbean.
      根据软件组件和oop的概念,划分对象越细,有利于组件的可重用  
     
      
      
      

  7.   

    不错的 EJB 中文站点:
    http://d23xapp2.cn.ibm.com/developerWorks/java
      

  8.   

    还有一点小问题,如果Class2做在服务器端,是否要和Class1做在一个jar里,是否还需要发布,还是直接用就可以了。
      

  9.   

    象你这种情况class1 和 class 2,有着联系.需要做在一个jar里,而且要发布
      

  10.   

    我觉得class2不需要做成EJB的,而且关于connection的管理,一般的Application Server都会有管理的,只要你注册好DataSource的jidi名称,用
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup (EJBConf.getDataSourceName());
    就可以了,而且有的ApplicationServer可以监控Connection的,长时间不用会自动的抛弃
      

  11.   

    我觉得class2不需要做成EJB的,而且关于connection的管理,一般的Application Server都会有管理的,只要你注册好DataSource的jidi名称,用
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup ();
    就可以了,而且有的ApplicationServer可以监控Connection的,长时间不用会自动的抛弃