我有一个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)