gpt4 book ai didi

java - ReSTLet并发问题

转载 作者:行者123 更新时间:2023-12-03 06:03:29 27 4
gpt4 key购买 nike

在一些(非常简单的)并发调用后,我的 ReSTLet 似乎变得没有响应。为了以最简单的方式重现,我设置了一个简单的应用程序:

public final class TestRestlet extends Application {

public static final String COUNT_10_ROUTE = "/countTen";
public static final String COUNT_20_ROUTE = "/countTwenty";

@Override
public final Restlet createInboundRoot() {
final Router mainRouter = new Router(getContext());

mainRouter.attach(COUNT_10_ROUTE, CountToTenResource.class);
mainRouter.attach(COUNT_20_ROUTE, CountToTwentyResource.class);

return mainRouter;
}
}

这些资源仅执行简单的迭代,如下所示:

public final class CountToTenResource extends ServerResource {

@Get
public Representation count() {
for (int i = 0; i < 10; i++) {
System.out.println("CT10 resource - counted up to " + i);
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
e.printStackTrace();
}
}
return new StringRepresentation("Counted to 10\n");
}
}

... CountToTwentyResource 也类似。我像这样启动我的 ReSTLet:

final Component component = new Component();
component.getServers().add(Protocol.HTTP, 12345);
final TestRestlet testRestlet = new TestRestlet();
component.getDefaultHost().attach(testRestlet);
component.start();

然后我继续同时 curl 这两个资源

curl -X GET http://localhost:12345/countTen
curl -X GET http://localhost:12345/countTwenty

第一个资源成功返回其消息,但第二个资源似乎卡住了,从那时起整个 ReSTLet 变得没有响应。我用 this java RESTClient 进行了相同的测试然后reSTLet又卡住了。

有谁知道为什么会发生这种情况以及如何解决它?我究竟做错了什么?我使用的是 ReSTLet 版本 2.1.0。

最佳答案

Theo,请尝试将 Jetty 或 Simple 扩展 JAR 及其依赖项添加到类路径中。这将取代不够稳定的内部/默认 HTTP 连接器。

关于java - ReSTLet并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com