本帖最后由 zengxianjunccccccccc 于 2011-07-11 14:35:39 编辑

解决方案 »

  1.   

    1.你设置缓存了吗?hibernate缓存的属性是lazy=true就是设置缓存的
    另外一级缓存是指存放在session中的,session的有效期很短,你设置session的属性了吗?
    一级缓存的命中率是很低的。
    2.struct2中每一个action都会产生一个实例,然后它通过struts.xml里面的配置去寻找相应的action
    然后通过result返回结果。类似于pojo每一个action都有一个单一的返回对象。
    所以不会有问题的~
      

  2.   

    第一问我明白了,谢谢。
    第二问不理解我知道action是不会有问题因为它设置为原型,而service层的实例设置成单例了,并发的时候同一个action类的两个action实例,同时操作的一个service层的实例,但是两个action给service实例的参数都不同,这种做法不理解
      

  3.   

    1、session缓存涉及到几种状态 自由状态、持久状态、游离状态  具体google下!就明白了2、spring 2.x 后可以 scope="prototype" 在struts2要用,如果不设置就是单例模式!
      

  4.   

    再补充下  session缓存是open-close之间
      

  5.   

    第二问不理解,我们怕action的并发时使用同一个,就不怕service层实例的并发吗?为什么service层的实例不设置成原型,我只知道用,不知期所以然
      

  6.   

    service 单例  就不要定义属性变量,如果要定义属性变量就在方法中定义!(公用的除外·)service\dao层都是定义接口!
      

  7.   

    三个用户执行同一个功能,访问的同一个action产生的不同实例,与此同时,调用的却是同一个service实例,我们为什么只交action设置成原型,而service设置成单例,不怕多用户并发时使用一个对象产生的数据异常吗
    用户1   执行 功能一action1 --调用 service1
    用户2   执行 功能一action2 --调用 service1
    用户3   执行 功能一action3 --调用 service1
      

  8.   

    你说的action是否是struts2?为什么struts2不能是单例,请baidu\google,别人写的很清楚,我没必要粘贴复制了·