约束JAX-WS CXF Web服务请求方法调用每个客户端IP一个请求

时间:2012-06-26 07:17:44

标签: java servlets locking jax-ws cxf

我有一个基于CXF的Web服务,使用单向方法说: Service.report()

当正在处理来自客户端的报告()时,我想从同一客户端IP等待另一个传入报告(),直到第一个请求被处理。从客户端看,report()是一个原子操作,应该按顺序处理对report()的连续调用。

我怎样才能最好地实现这种锁定机制?我是否需要实现每个客户端队列,还是有一种简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

你不需要一个完整的队列。一个简单的对象同步应该可以工作

static ConcurrentMap syncMap = new ConcurrentHashMap();

public void report()
{
   String clientIp =  ...
   syncMap.putIfAbsent(clientIp, new Object()); // just new Object is good enough to sync on
   synchronized(syncMap.get(clientIp))
   {
      //do synchronized stuff.
   }
}