首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理并行REST post请求

处理并行REST post请求
EN

Stack Overflow用户
提问于 2015-04-22 18:59:33
回答 2查看 707关注 0票数 1

我根据来自901v00_11.20141217-1000 version of XPages Extension Library的"Domino Sample REST service Feature“中的示例创建了自己的REST服务。

根据我对库设计的理解,每个REST请求都将在服务器上的自己的线程中运行。这种方法不允许处理对同一文档的并行POST请求。

我在XPages扩展库中没有找到任何示例,它将post请求作为服务器上的事务处理,即在整个请求处理时间内阻塞服务器资源,并将下一个请求放入队列中?

谁能指出允许处理并行请求的服务的源代码?

我的post请求处理函数的框架如下

代码语言:javascript
运行
复制
@POST
@Path(PATH_SEPARATOR + MyURL)
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response myPost(
  String requestEntity,
  @Context final UriInfo uriInfo)
{
  LogMgr.traceEntry(this, "myPost");

  RestContext.verifyUserContext();

  String myJson = ... // Process post

  Response response = buildResponse(myJson);

  LogMgr.traceExit(this, "myPost", "OK");

  return response;
} 

我想实现像这样的东西

代码语言:javascript
运行
复制
// Start transaction

String myJson = ... // Process post

// Stop transaction

有没有办法在Java中做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2015-04-22 20:04:09

我想您可以在传统的Notes/Domino上下文中使用document locking --在Java语言中使用synchronized :-)

你有没有试过这些?我不明白他们为什么不能工作。

/John

票数 2
EN

Stack Overflow用户

发布于 2015-04-22 23:08:42

我同意约翰的观点。您可以使用文档锁定来防止同时更新同一文档。您可能还需要考虑对REST API的定义进行一些更改。

首先,您暗示您正在使用POST更新现有文档。通常,POST用于创建新资源。考虑使用PUT而不是POST。

其次,即使使用文档锁定,您也可能希望检查版本冲突。例如,假设客户端读取文档的版本2,然后尝试更新它。同时,另一个客户端已经将文档更新到版本3。许多REST API使用HTTP ETags来处理此类版本冲突。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29795432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档