X Tutup
package com.zetcode; import com.github.jasync.sql.db.Connection; import com.github.jasync.sql.db.ConnectionPoolConfigurationBuilder; import com.github.jasync.sql.db.QueryResult; import com.github.jasync.sql.db.postgresql.PostgreSQLConnectionBuilder; import io.javalin.Javalin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; // example for asynchronous database access with Jasync and Javalin public class AsyncDatabase { private static final Logger logger = LoggerFactory.getLogger(AsyncDatabase.class); public static void main(String[] args) { var config = new ConnectionPoolConfigurationBuilder(); config.setUsername("postgres"); config.setPassword("s$cret"); config.setDatabase("postgres"); config.setMaxActiveConnections(100); config.setMaxIdleTime(TimeUnit.MINUTES.toMillis(15)); config.setMaxPendingQueries(10000); config.setConnectionValidationInterval(TimeUnit.SECONDS.toMillis(30)); Connection connection = PostgreSQLConnectionBuilder.createConnectionPool(config); Javalin app = Javalin.create() .events(event -> { event.serverStarting(() -> { logger.info("--- SERVER STARTING!"); connection.connect().get(); logger.info("--- connection STARTED!"); }); event.serverStopping(() -> { logger.info("--- SERVER STOPPING!"); connection.disconnect().get(); logger.info("--- connection STOPPED!"); }); }) .start(7000); app.get("/", (ctx) -> { final CompletableFuture queryResultCompletableFuture = connection.sendPreparedStatement("select 3+6"); ctx.result( queryResultCompletableFuture .thenApply((t) -> "got result: " + t.getRows().get(0).get(0)) ); }); } }
X Tutup