有两个jsp,和一个java类, 
两个jsp  调用java类(从数据库中取数,数据量大)取得显示数组  一个先调。我是想在第一个调用后,就把java类 缓存住,当第二个jsp在调时,就不用在去数据库取。各位帮忙想个好办法,(除了把这been存入session 还有别的吗 ) 先谢了

解决方案 »

  1.   

    除了session?那就只有application了,呵呵。
    奇怪为什么要除了session
    做个static{ }看看
      

  2.   

    可以使用javax.rowset接口,他可以保存一个result,而且不需要和数据库保持连接,并且提供了修改等功能,希望可以帮助解决你的问题。
      

  3.   

    哦 先谢了,
    session能够把been设成session形式的吗,因为been里方法很多,返回的对象数组也很多,不想把那些返回值都放到session中,那样会很占内存,很想用类似于<jsp:useBean id="obj" scope="session"〉,但不知道been怎么存成session 形式 的been楼上说的静态的 恩 应该可以, 但是还是想知道怎么把been 存成session形式的
      

  4.   

    认识到“每个bean一个缓存”模型的限制,WebLogic Server(从版本7开始)开始支持实体bean的应用程序级缓存。这使得同一个J2EE应用程序中的多个实体bean共享一个运行时缓存。这个应该是楼主最希望的方式,但得用WebLogic Server喽。
      

  5.   

    哦,看错了,意义不同,看看下面这部分J2EE开发人员知道EJB容器维护了一个实体bean缓存或者池,通常可在部署描述符中配置。这并不意味着一旦J2EE服务器从数据库中加载一个特定的bean实例,它就不再去数据库中寻找该实例,因为该实例已经保存在缓存池中了。相反,默认情况下J2EE服务器执行ejbLoad()在每次事务的开始从数据库中同步该实例的状态。基本上,CMP bean每运行一次(即使该bean在前一个事务中已经被加载),服务器就执行一次SQL select语句来刷新它。只有在一个事务中操作多个实体bean实例时,服务器才会缓存它们。
      显然,在每次事务中都重新从数据库中加载状态会造成很大的性能影响!这个默认行为很容易理解:如果数据库被多个进程共享,并且每个进程都可以改变数据库中持久对象的状态,那么这将是最安全的方法。但是可以通过告诉J2EE服务器保留事务间实体bean的缓存实例,从而避免大部分时间里从数据库中刷新数据来略微改善这种情况。为了解决这个问题并生成一个最优的解决方案,首先我将讨论BEA WebLogic Server中可用的不同的并发策略。
      对于EJB开发人员来说很重要的一点是要知道实体bean中可用的不同并发策略。令人惊奇的是,有的开发人员甚至不知道并发选项的存在。那么适用于实体bean的并发策略是什么呢?EJB容器是一个高度多线程的应用程序,同时响应来自多个客户端的请求,这些请求通常会访问同一资源,比如数据表中的一行。因此,EJB容器应该管理对实体bean实例的并发访问;更加技术性地讲,并发策略决定了容器如何以及何时将实体bean的每个实例与底层数据库同步。
      

  6.   

    看了 theforever(碧海情天)  老兄所说
    对阿 我用的就是weblogic 
    难道我要用ejb吗,把我的数据访问been,建成实体been,这样就可以在缓存池中取得数据,而不用去在访问数据库。
    如果不是 
        那么 “把取出的数据暂存一下” 用什么存那。
      

  7.   

    把数据存在实体been里是不是不太好吧
    如果这样的话还要在weblogic里配连接池
    所以我觉得最好还是不要用实体been
    baobao28(阿呆)的方法试一下吧
      

  8.   

    自己写个缓存不就行了,用hashtable放在session里,在SessionListenser里初始化和清空。用的时候(Hashtable)session.getAttribute("mapName").put()和get(),设置hashtable最大容量。这样楼主的需求能解决。
      

  9.   

    用session吧,
    但是如果你的数据集合比较大,存在session很费资源,而且用完后还要及时释放,很不安全
    在数据量小的情况下考虑用session,大的时候重新读次数据库应该好过
      

  10.   

    哦 先谢了,
    session能够把been设成session形式的吗,因为been里方法很多,返回的对象数组也很多,不想把那些返回值都放到session中,那样会很占内存,很想用类似于<jsp:useBean id="obj" scope="session"〉,但不知道been怎么存成session 形式 的been楼上说的静态的 恩 应该可以, 但是还是想知道怎么把been 存成session形式的
    -----------------------------------
    你到底是想把该数据设置成和用户关联。还是所有人共享?
    如果和用户关联,那用session就是你想要的。
    如果让所有人共享。那就用static。自己作一个转门缓存的类。里面缓存你要的数据。
      

  11.   

    是和用户关联, 难道只能用session配连接池没有问题,我现在用的就是连接池,baobao28(阿呆)  老兄 所说的两个好像都提高不了多少速度吧, 
    我觉得还是缓存在内存中更好。谢谢各位帮忙,
    存在session 中 谁都知道了, 我是想和大家讨论一下,看看有没有别的方法。 感觉ejb好像能行。