如何定义没有并发行为的EJB JAX-RS Web服务

时间:2016-11-24 18:03:38

标签: java web-services jax-rs

我有一个EJB实现的休息Web服务。该服务由一个接口和一个实现组成:

@Remote
@Path(value="bidsystem")
@PermitAll
public interface BidSystemRemote extends InterfaceRemote<Bid> {

  @POST
  @Path(value = "addbid")
  @Produces(value = {MediaType.APPLICATION_JSON})
  @Consumes(value = {MediaType.APPLICATION_FORM_URLENCODED})
  @PermessiNecessari(operation = STANDARD_OP.UPDATE)
  public void addbid(
        @FormParam(value = "iduser") Long iduser, 
        @FormParam(value = "value") Double value) 
        throws BadRequestException;
  ...
}

@Stateless
@PermitAll
public class BidSystemImpl implements BidSystemRemote {

   public void addbid(Long iduser,Double value) throws BadRequestException {
    ...
   }
}

当用户调用/ bidsistem / addbid时,会出价。仅当最后一个出价值小于传递值时,用户才能出价。

所以,当前值是100;出价101,出价接受的地方。

如果B在同一时刻发送105和C发送102,则两个线程开始并且接受出价(105> 101; 102> 101)......但是C bid是错误的。

我如何一次执行一个请求?

我知道我可以用 @Singleton 类做到这一点,但是这个类有其他方法执行读数,我想同时执行它们。

我可以在另一个类中移动addbid方法,但我想使用更少的url s root(例如,现在我有bidystem / list,bidystem / last,bidystem / addbid,如果我移动方法,我会有bidystem2 / addbid)

0 个答案:

没有答案