【问题标题】:Limit connection in RESTful web service限制 RESTful Web 服务中的连接
【发布时间】:2015-09-23 11:36:41
【问题描述】:

有没有办法将 REST Web 服务配置为一次只允许一个连接?

我正在使用 Wildfly 9.0.1-Final 和 resteasy 3.0.11.Final 实现。

【问题讨论】:

  • 我能知道,你为什么需要这个吗?
  • 想要强制客户端在开始新呼叫之前完成连接
  • 之前的通话对新通话有何影响?您希望同一个客户端一次只有一个连接?
  • 我想确保顺序行为。客户必须先收到上一个呼叫的应答,然后才能开始新呼叫。

标签: jax-rs wildfly resteasy


【解决方案1】:

您可以在静态字段上使用同步块:

private static final Object LOCK = new Object();

@GET
@Path("find")
@Produces(MediaType.APPLICATION_JSON)
public Response find(){
     synchronized(LOCK){
          //your code
     }
}

【讨论】:

  • 你现在将如何释放锁?作为它的静态最终..每个类的每个类变量只有一个副本,无论从中创建了多少对象..
  • 可能是我错了,但据我所知,@Manuel 每次都需要单个活动连接/请求。实际上这是一个奇怪的要求,而且很可能是个坏主意。执行find 方法后释放锁。在此之后,它就可以执行下一个请求了。
  • 正是......它的客户端服务器架构......它由一次支持多个客户端组成。删除其核心功能不是一个好主意
  • 方法内的静态块不起作用,因为连接开始更早地存活,并且比方法处于活动状态的寿命更长。我也不认为这是一个奇怪的要求。我相信有一个允许打开连接数量的配置。否则服务器将面临饿死的风险。我只想将其设置为一个 :)
  • 它是配置 Java EE 服务器的一部分。通常 Java EE 服务器可以限制连接数,但不是针对一个应用程序内的 REST 框架,而是同时针对所有应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多