一客户提交一远程方法,提交中,程序经过处理,修改数据库 
但是这同一客户同一时间2台电脑提交或者多个客户端提交,如何能禁止他同时提交而修改数据库错误 
而在同一时间,必须要允许其他用户提交过来请求. 
服务器程序如下:public class BusinessService {
 //无效 public synchronized   int send(String account, String password) { 
         //无效synchronized(this){}
         public  int send(String account, String password) { 
        //里面代码省略
                int i=0;
return i;
 
}
        //其他方法省略
}
客户端调用webservice代码如下:public class Call {
public static void main(String[] args) {
BusinessService bs = new BusinessService();
bs.setWebService("http://127.0.0.1:8080/Server/services/BusinessService");
System.out.println(bs.send("test1", "1"));
}
}
使用加synchronized关键字的方法试过了都无效,我估计是webservice的问题,如果多个客户端电脑调用接口,无法形成同一个锁对象,就无法同步处理连接数据库是用的jdbc,有想过connection.setAutoCommit(false)的方法,但是连接修改数据库的的是使用其他公司开发的类包,无法修改里面的代码请高手帮忙解决,谢谢

解决方案 »

  1.   


    public class BusinessService {
             private static Object lock = new Object();
             public  int send(String account, String password) { 
                synchronized(lock)
                {
                    //里面代码省略
                      int i=0;
                    return i;
                }         
        }
            //其他方法省略
    }这样也不行么?
      

  2.   

    为什么不在 send 方法里面加上事务(Trasaction),用事务来管理并发的情况,而且不用考虑任何的 synchornized, 比如加额外的队列...