HTTPスレッドをブロックせずに非同期的に最大接続を許可しようとしている、以下の安らかなAPIを作成しました。非同期スレッドからのJava同期データベースマネージャー
@GET
@Path("sites")
@Produces(value = MediaType.APPLICATION_JSON)
public void getSites(@Suspended AsyncResponse response) {
System.out.println("calling sites");
CompletableFuture
.supplyAsync(() -> DatabaseManager.getInstance().getSites())
.exceptionally(this::handel)
.thenAccept(response::resume);
}
ただし、DatabaseManagerメソッドが呼び出されると問題が発生します。すべてのHTTP接続に対して新しいスレッドが作成されるためです。これによりデータベースサーバーへの新しいデータベース接続が作成されます。
これは、その後のDatabaseManagerがアイドル状態であり、唯一までデータベースがそれでは私が作成しようとしていますが待機している状態で新しいスレッドを保持する機能をブロックのいくつかの種類があるエラー「あまりにも多くの接続」
になりいつでも単一のデータベース接続を可能にします。
私は質問を投稿した後、それはそれのようなものになると思いました。私はこれを正しいとマークする前に10分待たなければなりません:) –