现有2个JSP程序(x.jsp/y.jsp)
x.jsp里有一个方法queryOrinsert(object obj)根据obj id查询表A的数据是否有记录,如果有返回,没有就插入一条数据.
y.jsp里有一个方法update(int id),根据用户id更新呢A表的记录。服务器是集群环境。这2个jsp都是实时访问!访问量很大!困惑是这样的环境是否要将这2个方法都加上synchronized?本人不是很懂请高手回答!欢迎讨论!

解决方案 »

  1.   

    1) update(int id)如果找不到id会怎么做,会插入记录吗?如果不插入,则问题不大。
    2) 就算有问题,这两个方法分别在两个jsp中,给这两个方法加上synchronized是没有用的。必须给他们分配一把公共锁才行。
      

  2.   

    那不太需要担心这两个方法之间冲突但是你的queryOrinsert方法本身就可能会有冲突,当不同客户端同时调用它时可能会有冲突,导致重复插入数据库。但是在Jsp文件中给它加synchronized是没用的,要把它放到一个静态类里去成为静态方法再加synchronized才会起作用。
      

  3.   

    我是在JSP里声明了这些方法。如何避免重复插入数据的问题集群环境里?
    在JSP里声明了方法是可以的。例如<%!public void queryOrinsert(Object obj){.....}%>
    还有一个困惑。这2个x.jsp/y.jsp是频繁被访问的。这样客户端频繁调用连续操作数据库会不会造成表锁住啊
    我是菜鸟!谢谢回答!
      

  4.   

    加上synchronized它,那就是同一时间只能有一个人在访问,这样可以吗?貌似不行。
    主要是代码,写好一点,注意性能!这样不管多少都没问题了。
    你不能动不动就加上它,限制访问,这样就不好了嘛!
    除非你是在做银行金额这一块,那加上它是非须的!
      

  5.   

    因为在集训里session比较麻烦。不用session的话。有没有好的方法防止重复提交数据!不要JS方面的。
      

  6.   

    因为在集群里session比较麻烦。不用session的话。有没有好的方法防止重复提交数据!不要JS方面的。
      

  7.   

    看你JSP框架用的是什么。比如struts 1X 或者 2 都有防止重复提交机制。
      

  8.   

    不用struts/也没有js。 就是单纯的JSP。是集群的环境里也没有共享session。所以很郁闷。没有想好的好的办法防止重复提交。