gpt4 book ai didi

java - Play Framework : How to create & use connection pool?

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:24 25 4
gpt4 key购买 nike

在 Play 文档中有这个示例:

public class AsyncTest extends Controller {

public static void remoteData() {
F.Promise<WS.HttpResponse> r1 = WS.url("http://example.org/1").getAsync();
F.Promise<WS.HttpResponse> r2 = WS.url("http://example.org/2").getAsync();
F.Promise<WS.HttpResponse> r3 = WS.url("http://example.org/3").getAsync();

F.Promise<List<WS.HttpResponse>> promises = F.Promise.waitAll(r1, r2, r3);

// Suspend processing here, until all three remote calls are complete.
List<WS.HttpResponse> httpResponses = await(promises);

render(httpResponses);
}
}

在上面的示例中,创建了 3 个到 example.org 的新 HTTP 连接,对吗?

有没有办法在启动时创建连接池,然后从该池中获取并重用连接,而不是重复创建和拆除连接?

理想情况下,我可以有多个连接池,例如HTTP 连接池、数据库连接池等。我该怎么做?

谢谢。

最佳答案

在您的示例中,您没有获得连接,而是获得了 HttpResponse,这是您在给定 URL 上发出的特定 GET 请求的答案。由于您使用的 API 与连接无关,因此底层框架可以创建 3 个单独的连接,或者可以为所有 3 个连接重用单个连接,并且您应该得到相同的答案。

我不知道这个框架在幕后做什么,但我敢打赌它非常好。

但是,如果您想在应用程序启动时手动建立一组资源(也许是到工作节点的 TCP 连接?),您可以在应用程序启动时初始化任何内容,如下所示:

import play.jobs.Job;
import play.jobs.OnApplicationStart;

@OnApplicationStart
public class InitializeConnectionPool extends Job {
@Override
public void doJob() {
//initialize your connection pools here, storing them in a static variable
}
}

关于java - Play Framework : How to create & use connection pool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891460/

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