当前位置: 代码迷 >> J2SE >> 请问,webservice远程调用方法的同步解决方法
  详细解决方案

请问,webservice远程调用方法的同步解决方法

热度:87   发布时间:2016-04-24 02:16:59.0
请教,webservice远程调用方法的同步解决办法~
一客户提交一远程方法,提交中,程序经过处理,修改数据库 
但是这同一客户同一时间2台电脑提交或者多个客户端提交,如何能禁止他同时提交而修改数据库错误 
而在同一时间,必须要允许其他用户提交过来请求. 


服务器程序如下:
Java code
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代码如下:
Java code
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)的方法,但是连接修改数据库的的是使用其他公司开发的类包,无法修改里面的代码

请高手帮忙解决,谢谢

------解决方案--------------------
Java code
public class BusinessService {         private static Object lock = new Object();         public  int send(String account, String password) {             synchronized(lock)            {                //里面代码省略                  int i=0;                return i;            }             }        //其他方法省略}
------解决方案--------------------
加个队列是否可以呢

如果要满足你说的要求,动态维护多个队列,如果并发量很大的话,需要再想想其他方式,或者程序性能比较高才行
  相关解决方案