Java Restlet并发问题
在一些(非常简单的)并发调用之后,我的Restlet似乎变得没有响应。为了以最简单的方式复制,我设置了一个简单的应用程序:Java Restlet并发问题,java,restlet,Java,Restlet,在一些(非常简单的)并发调用之后,我的Restlet似乎变得没有响应。为了以最简单的方式复制,我设置了一个简单的应用程序: public final class TestRestlet extends Application { public static final String COUNT_10_ROUTE = "/countTen"; public static final String COUNT_20_ROUTE = "/countTwenty"; @Ove
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");
}
}
然后我继续同时卷曲这两个资源
curl -X GET http://localhost:12345/countTen
curl -X GET http://localhost:12345/countTwenty
第一个资源成功地返回了它的消息,但是第二个资源似乎冻结了,并且从那时起整个restlet都没有响应。我对restlet执行了相同的测试,并且restlet再次被卡住
有人知道为什么会发生这种情况以及如何解决吗?我做错了什么?我使用的是Restlet版本2.1.0。Theo,请尝试将Jetty或简单扩展JAR及其依赖项添加到类路径中。这将替换不够稳定的内部/默认HTTP连接器。是否应捕获一般异常?可能第二个调用引发异常,服务器中止?
curl -X GET http://localhost:12345/countTen
curl -X GET http://localhost:12345/countTwenty