diff --git a/frameworks/Java/tadx/build/libs/tadx-benchmark-0.0.1-SNAPSHOT.jar b/frameworks/Java/tadx/build/libs/tadx-benchmark-0.0.1-SNAPSHOT.jar index d54b8cfb1d9..e29f08d5af2 100644 Binary files a/frameworks/Java/tadx/build/libs/tadx-benchmark-0.0.1-SNAPSHOT.jar and b/frameworks/Java/tadx/build/libs/tadx-benchmark-0.0.1-SNAPSHOT.jar differ diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/Application.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/Application.java index eff70906918..74af4db9866 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/Application.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/Application.java @@ -1,22 +1,8 @@ package io.tadx.benchmark; -/*import io.netty.util.concurrent.MultithreadEventExecutorGroup; -import io.tadx.core.logging.LogFactory; -import io.vertx.core.*; -import io.vertx.core.buffer.Buffer; -import io.vertx.core.http.*; -import io.vertx.core.impl.SysProps; -import io.vertx.core.internal.VertxInternal; -import io.vertx.core.json.JsonObject;*/ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -/*import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter;*/ - /** * The main program loads the configuration and starts the server by `tadx-web`
@@ -28,170 +14,6 @@ public class Application { // extends VerticleBase implements Handler public static void main(String[] args) { - SpringApplication.run(Application.class, args); - - - /*Vertx vertx = Vertx.vertx(new VertxOptions() - .setEventLoopPoolSize(Runtime.getRuntime().availableProcessors()) - .setPreferNativeTransport(true) - .setDisableTCCL(true) - ); - vertx.exceptionHandler(err -> { - LogFactory.frameworkLogger().warn("Uncaught exception: " + err); - }); - vertx.deployVerticle(Application.class.getName(), new DeploymentOptions().setInstances(Runtime.getRuntime().availableProcessors())) - .onComplete(event -> { - if (event.succeeded()) { - LogFactory.frameworkLogger().warn("Server listening on port " + 8080); - } else { - LogFactory.frameworkLogger().warn("Unable to start your application "+event.cause()); - } - });*/ } - - /* - - private HttpServer server; - private CharSequence dateString; - private MultiMap plaintextHeaders; - private MultiMap jsonHeaders;private static final String PATH_PLAINTEXT = "/plaintext"; - private static final String PATH_JSON = "/json"; - private static final String PATH_DB = "/db"; - private static final String PATH_QUERIES = "/queries"; - private static final String PATH_UPDATES = "/updates"; - private static final String PATH_FORTUNES = "/fortunes"; - private static final String PATH_CACHING = "/cached-queries"; - - private static final CharSequence RESPONSE_TYPE_PLAIN = HttpHeaders.createOptimized("text/plain"); - private static final CharSequence RESPONSE_TYPE_HTML = HttpHeaders.createOptimized("text/html; charset=UTF-8"); - private static final CharSequence RESPONSE_TYPE_JSON = HttpHeaders.createOptimized("application/json"); - - private static final String HELLO_WORLD = "Hello, world!"; - private static final Buffer HELLO_WORLD_BUFFER = Buffer.buffer(HELLO_WORLD, "UTF-8"); - - private static final CharSequence HEADER_SERVER = HttpHeaders.SERVER; - private static final CharSequence HEADER_DATE = HttpHeaders.DATE; - private static final CharSequence HEADER_CONTENT_TYPE = HttpHeaders.CONTENT_TYPE; - private static final CharSequence HEADER_CONTENT_LENGTH = HttpHeaders.CONTENT_LENGTH; - - private static final CharSequence HELLO_WORLD_LENGTH = HttpHeaders.createOptimized("" + HELLO_WORLD.length()); - private static final CharSequence JSON_LENGTH = HttpHeaders.createOptimized("" + JsonObject.of("message", "Hello, World!").toString().length()); - private static final CharSequence SERVER = HttpHeaders.createOptimized("vert.x"); - @Override - public Future start() throws Exception { - int port = 8000; - printConfig((VertxInternal) vertx); - server = vertx.createHttpServer(new HttpServerOptions() - .setHttp2ClearTextEnabled(false) - .setStrictThreadMode(true)) - .requestHandler(Application.this); - dateString = createDateHeader(); - plaintextHeaders = plaintextHeaders(); - jsonHeaders = jsonHeaders(); - JsonObject config = config(); - vertx.setPeriodic(1000, id -> { - dateString = createDateHeader(); - plaintextHeaders = plaintextHeaders(); - jsonHeaders = jsonHeaders(); - }); - return server.listen(port); - } - - @Override - public Future stop() throws Exception { - return super.stop(); - } - - @Override - public void handle(HttpServerRequest request) { - try { - switch (request.path()) { - case PATH_PLAINTEXT: - handlePlainText(request); - break; - case PATH_JSON: - handleJson(request); - break; - default: - request.response() - .setStatusCode(404) - .end(); - break; - } - } catch (Exception e) { - LogFactory.frameworkLogger().warn("Error: " + e); - request.response().setStatusCode(500).end(); - } - } - - private void handlePlainText(HttpServerRequest request) { - HttpServerResponse response = request.response(); - response.headers().setAll(plaintextHeaders); - response.end(HELLO_WORLD_BUFFER); - } - - private void handleJson(HttpServerRequest request) { - HttpServerResponse response = request.response(); - response.headers().setAll(jsonHeaders); - response.end(JsonObject.of("message", "Hello, World!").toString()); - } - - public static CharSequence createDateHeader() { - return HttpHeaders.createOptimized(DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.now())); - } - - private MultiMap plaintextHeaders() { - return HttpHeaders - .headers() - .add(HEADER_CONTENT_TYPE, RESPONSE_TYPE_PLAIN) - .add(HEADER_SERVER, SERVER) - .add(HEADER_DATE, dateString) - .add(HEADER_CONTENT_LENGTH, HELLO_WORLD_LENGTH) - .copy(false); - } - - private MultiMap jsonHeaders() { - return HttpHeaders - .headers() - .add(HEADER_CONTENT_TYPE, RESPONSE_TYPE_JSON) - .add(HEADER_SERVER, SERVER) - .add(HEADER_DATE, dateString) - .add(HEADER_CONTENT_LENGTH, JSON_LENGTH) - .copy(false); - } - - private static void printConfig(VertxInternal vertx) { - boolean nativeTransport = vertx.isNativeTransportEnabled(); - String transport = vertx.transport().getClass().getSimpleName(); - String version = "unknown"; - try { - InputStream in = Vertx.class.getClassLoader().getResourceAsStream("META-INF/vertx/vertx-version.txt"); - if (in == null) { - in = Vertx.class.getClassLoader().getResourceAsStream("vertx-version.txt"); - } - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] buffer = new byte[256]; - while (true) { - int amount = in.read(buffer); - if (amount == -1) { - break; - } - out.write(buffer, 0, amount); - } - version = out.toString(); - } catch (IOException e) { - LogFactory.frameworkLogger().warn("Could not read Vertx version" + e);; - } - LogFactory.frameworkLogger().warn("Vertx: " + version); - LogFactory.frameworkLogger().warn("Processors: " + Runtime.getRuntime().availableProcessors()); - LogFactory.frameworkLogger().warn("Event Loop Size: " + ((MultithreadEventExecutorGroup)vertx.nettyEventLoopGroup()).executorCount()); - LogFactory.frameworkLogger().warn("Native transport : " + nativeTransport); - LogFactory.frameworkLogger().warn("Transport : " + transport); - LogFactory.frameworkLogger().warn("Netty buffer bound check : " + System.getProperty("io.netty.buffer.checkBounds")); - LogFactory.frameworkLogger().warn("Netty buffer accessibility check : " + System.getProperty("io.netty.buffer.checkAccessible")); - for (SysProps sysProp : SysProps.values()) { - LogFactory.frameworkLogger().warn(sysProp.name + " : " + sysProp.get()); - } - }*/ } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/db/PgConnPool.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/db/PgConnPool.java index 80f4d7172f0..fccdb8af660 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/db/PgConnPool.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/db/PgConnPool.java @@ -28,8 +28,8 @@ private static synchronized void createClient() { setPassword("benchmarkdbpass"). setCachePreparedStatements(true). setPreparedStatementCacheMaxSize(1024). - setPipeliningLimit(100000); - PoolOptions poolOptions = new PoolOptions().setMaxSize(1900); + setPipeliningLimit(256); + PoolOptions poolOptions = new PoolOptions().setMaxSize(190); // Create the client pool client = (SqlClientInternal) PgBuilder.client().with(poolOptions).connectingTo(connectOptions).using(TadxApplication.vertx()).build(); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper1.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper1.java index f94cb31e03f..9e895276b03 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper1.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper1.java @@ -6,7 +6,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.RowSet; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -65,11 +65,8 @@ public void run(WebContext webContext) { int id = randomWorld(); worlds.add(cache.get(id)); } - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.stringify(worlds)); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(Json.stringify(worlds)); } static int randomWorld() { diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper2.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper2.java index 257eacd8136..7104ff7051e 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper2.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper2.java @@ -6,7 +6,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.RowSet; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -66,11 +66,8 @@ public void run(WebContext webContext) { int id = randomWorld(); worlds.add(cache.get(id)); } - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.stringify(worlds)); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(Json.stringify(worlds)); } static int randomWorld() { diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper3.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper3.java index 503a88922a4..6371f849c0c 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper3.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/CachedQueriesMapper3.java @@ -8,7 +8,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.RowSet; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -67,11 +67,8 @@ public void run(WebContext webContext) { for (int i = 0; i < count; i++) { worlds.add(cache.getIfPresent(current.nextInt(1000))); } - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.stringify(worlds)); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(Json.stringify(worlds)); } static int randomWorld() { diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_DbStorage.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_DbStorage.java index db382dcbcd7..687a0a8d2e4 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_DbStorage.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_DbStorage.java @@ -5,7 +5,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Tuple; import java.util.SplittableRandom; @@ -31,11 +31,8 @@ public void run(WebContext webContext) { //World world = dbStorage.findEntity(World.class, randomWorld()); DataMap row = dbStorage.queryRow("SELECT id, randomnumber FROM world WHERE id = ?", Tuple.of(randomWorld())); - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(row.toString()); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(row.toString()); //.end(world.toJsonString()); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Jdbc.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Jdbc.java index 49a200f4ca4..0514dfe5950 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Jdbc.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Jdbc.java @@ -5,7 +5,7 @@ import io.tadx.web.WebContext; import io.tadx.web.WebResult; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.jdbcclient.JDBCConnectOptions; import io.vertx.jdbcclient.JDBCPool; import io.vertx.sqlclient.*; @@ -43,11 +43,8 @@ public void run(WebContext webContext) { pool.preparedQuery(SELECT_WORLD).execute(Tuple.of(randomWorld())).onComplete(ar -> { if (ar.succeeded()) { RowSet rows = ar.result(); - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(rows.iterator().next().toJson().toString()); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(rows.iterator().next().toJson().toString()); } else { webContext.exception(WebResult.errorResult(ar.cause().getMessage())); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Postgresql.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Postgresql.java index 94c8ec4a960..f86bbe79ee7 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Postgresql.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/DbRouteMapper_Postgresql.java @@ -5,7 +5,7 @@ import io.tadx.web.WebContext; import io.tadx.web.WebResult; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.*; import java.util.SplittableRandom; @@ -33,11 +33,8 @@ public void run(WebContext webContext) { //client.preparedQuery(SELECT_WORLD)的性能高于SELECT_WORLD_QUERY.execute,但整体差异不大 client.preparedQuery(SELECT_WORLD).execute(Tuple.of(randomWorld())).onComplete(ar -> { if (ar.succeeded()) { - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(ar.result().iterator().next().toJson().toString()); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(ar.result().iterator().next().toJson().toString()); } else { webContext.exception(WebResult.errorResult(ar.cause().getMessage())); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper1.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper1.java index ece8708932e..1ad5a15d10b 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper1.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper1.java @@ -7,7 +7,7 @@ import io.tadx.web.WebResult; import io.tadx.web.annotation.RouteMapping; import io.tadx.web.template.FreemarkerEngine; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -47,10 +47,7 @@ public void run(WebContext webContext) { fortunes.addFirst(new Fortune(0, "Additional fortune added at request time.")); Collections.sort(fortunes); - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); webContext.complete(WebResult.pageResult(FreemarkerEngine.class).put("fortunes", fortunes).templateContent(""" diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper2.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper2.java index 3694c27471e..a973a77a563 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper2.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/FortunesRouteMapper2.java @@ -6,7 +6,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -51,10 +51,8 @@ public void run(WebContext webContext) { } sb.append(""); - webContext.routingContext().response() - .putHeader("Content-Type", "text/html;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString).end(sb.toString()); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(sb.toString()); } }); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/JsonRouteMapper.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/JsonRouteMapper.java index a39cb03b980..2c205247515 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/JsonRouteMapper.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/JsonRouteMapper.java @@ -1,10 +1,13 @@ package io.tadx.benchmark.route_mapper; +import io.tadx.core.TadxApplication; import io.tadx.core.data.Json; import io.tadx.web.TadxWebApplication; import io.tadx.web.*; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; +import io.vertx.core.MultiMap; +import io.vertx.core.http.HttpHeaders; /** @@ -13,12 +16,26 @@ @RouteMapping(path = "/json") public class JsonRouteMapper implements RouteMapper { + public static MultiMap jsonHeaders = jsonHeaders(); + + public JsonRouteMapper() { + TadxApplication.vertx().setPeriodic(1000, id -> { + jsonHeaders = jsonHeaders(); + }); + } + @Override public void run(WebContext webContext) { - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.createNew().put("message", "Hello, World!").stringify()); + webContext.routingContext().response().headers().addAll(jsonHeaders); + webContext.routingContext().response().end(Json.createNew().put("message", "Hello, World!").stringify()); + } + + private static MultiMap jsonHeaders() { + return HttpHeaders + .headers() + .add("Content-Type", "application/json;charset=UTF-8") + .add("Server", "Tad.x") + .add("Date", TadxWebApplication.currentDateString) + .copy(false); } } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/PlainTextRouteMapper.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/PlainTextRouteMapper.java index 73e070c5dab..4da542d0c34 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/PlainTextRouteMapper.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/PlainTextRouteMapper.java @@ -1,14 +1,12 @@ package io.tadx.benchmark.route_mapper; +import io.tadx.core.TadxApplication; import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; -import io.tadx.web.*; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; -import io.vertx.core.Future; -import io.vertx.ext.web.RoutingContext; - -import java.util.List; +import io.tadx.web.route_mapper.RouteMapper; +import io.vertx.core.MultiMap; +import io.vertx.core.http.HttpHeaders; /** @@ -17,12 +15,27 @@ @RouteMapping(path = "/plaintext") public class PlainTextRouteMapper implements RouteMapper { + private MultiMap textHeaders; + + public PlainTextRouteMapper() { + textHeaders(); + TadxApplication.vertx().setPeriodic(1000, id -> { + textHeaders(); + }); + } + @Override public void run(WebContext webContext) { - webContext.routingContext().response() - .putHeader("Content-Type", "text/plain;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end("Hello, world!"); + webContext.routingContext().response().headers().addAll(textHeaders); + webContext.routingContext().response().end("Hello, world!"); + } + + private void textHeaders() { + textHeaders = HttpHeaders + .headers() + .add("Content-Type", "text/plain;charset=UTF-8") + .add("Server", "Tad.x") + .add("Date", TadxWebApplication.currentDateString) + .copy(false); } } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper1_Postgresql.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper1_Postgresql.java index 9452e138a76..0f3e8ba1b97 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper1_Postgresql.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper1_Postgresql.java @@ -6,7 +6,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.*; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -59,11 +59,8 @@ public void run(WebContext webContext) { i.getAndDecrement(); } if (worlds.size() == count) { - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.stringify(worlds)); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(Json.stringify(worlds)); } }); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper2_Postgresql.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper2_Postgresql.java index 8e78dc92fc5..97302050b5e 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper2_Postgresql.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/QueriesRouteMapper2_Postgresql.java @@ -6,7 +6,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.RowSet; import io.vertx.sqlclient.Tuple; @@ -66,11 +66,8 @@ public void run(WebContext webContext) { rows = rows.next(); } - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.stringify(worlds)); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(Json.stringify(worlds)); } }); } diff --git a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/UpdateMapper.java b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/UpdateMapper.java index 334f61d7c98..48338de14ba 100644 --- a/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/UpdateMapper.java +++ b/frameworks/Java/tadx/src/main/java/io/tadx/benchmark/route_mapper/UpdateMapper.java @@ -6,7 +6,7 @@ import io.tadx.web.TadxWebApplication; import io.tadx.web.WebContext; import io.tadx.web.annotation.RouteMapping; -import io.tadx.web.route.RouteMapper; +import io.tadx.web.route_mapper.RouteMapper; import io.vertx.sqlclient.*; import io.vertx.sqlclient.impl.SqlClientInternal; @@ -61,11 +61,8 @@ public void run(WebContext webContext) { List params = new ArrayList<>(); client.preparedQuery(buildUpdateQuery(worlds, params)).execute(Tuple.wrap(params)).onComplete(ar2 -> { if (ar2.succeeded()) { - webContext.routingContext().response() - .putHeader("Content-Type", "application/json;charset=UTF-8") - .putHeader("Server", "Tad.x") - .putHeader("Date", TadxWebApplication.currentDateString) - .end(Json.stringify(worlds)); + webContext.routingContext().response().headers().addAll(JsonRouteMapper.jsonHeaders); + webContext.routingContext().response().end(Json.stringify(worlds)); } else { webContext.response().end(ar2.cause().getMessage()); }