甚至可以对于无状态会话ejb,直接拷贝实例

解决方案 »

  1.   

    本来就是放在实例池里的 ! ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??
      

  2.   

    ejb的实例都是放在实力池里面的,你可以查看相关资料。此外,你可以通过编写一个singleton来缓冲jndi的搜索结果(这个过程是非常耗费时间的),比如:  private Map cache;
      ...  public EJBHome getEJBHome(String jndi, java.lang.Class classObject) throws ServiceLocatorException {
        try {
          EJBHome ejbHome = null;      if (cache.containsKey(jndi))
            ejbHome = (EJBHome) cache.get(jndi);
          else {
            Object objref = null;
            objref = ic.lookup(jndi);
            ejbHome = (EJBHome) PortableRemoteObject.narrow(objref, classObject);
            cache.put(jndi, ejbHome);
          }
          return ejbHome;
        }
        catch (NamingException ex) {
          ex.printStackTrace();
          throw new ServiceLocatorException(ex);
        }
        catch (Exception ex) {
          ex.printStackTrace();
          throw new ServiceLocatorException(ex);
        }
      }
      

  3.   

    疑问:
     1。我都获得了ejb的远程接口,当然就不要home接口了,不知道客户端缓存home接口有什么用?
     2。既然存在实例池了,那么耗费的时间不是在实例化上面,我的ejb容器就那么一个ejb查找也费时吗?
     3。weblogic是不是具备群集功能?就是多搞几个服务器让他们负载平衡是不是要好些
      

  4.   

    将每个ejb分开发布,一个表一个。
      

  5.   

    j2ee应用服务器对于EJB实例本身就有一个实例池,如果你真的想提高性能,可以将EJBHandler序列化到文件中,需要时再取出来,不过通常不会这么做,因为没有必要,hehe
      

  6.   

    load balace的话,如果你的client不多,你做了也没用的。
    仅仅是因为ejb的连接速度不快跟LOAD BALANCE 没关系
      

  7.   

    EJB的缓冲池实在EJB规范里面规定的,所有的ejb container provider包括weblogic都要遵守。如果性能不好的话,可以考虑以下几个方法:
    1。第一,增加cache
    2。如果使用EJB2.0规范,使用local而不是remote
    3。尽量cache InitialContext,EJBHome这种东西。
    4。在数据库性能优化上打主意。
    5。实在不行就只能上SQL,反正用户/密码是只读信息。
      

  8.   

    你可以使用其它模式来完成
    如:
    dao模式是不错的,reading for 
    jdbc可以,command的模式等等
      

  9.   

    刚刚测试了,如果将ctx.lookup("MyEjb");这句取消,程序启动速度快了很多,