From ec495abac1f43aad0c32be02baad86ad7fb5152c Mon Sep 17 00:00:00 2001 From: noear Date: Sat, 24 Aug 2024 21:01:46 +0800 Subject: [PATCH 01/28] Update Solon Version To 2.9.1 --- frameworks/Java/solon/pom.xml | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 58e7d792301..384f49be278 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -2,28 +2,31 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + org.noear + solon-parent + 2.9.1 + + + org.noear.solon solon-benchmark 1.0 jar - UTF-8 - 11 - 11 - 2.0.0 + 11 org.noear solon.boot.smarthttp - ${solon.version} + org.noear solon.serialization.snack3 - ${solon.version} @@ -63,23 +66,9 @@ ${project.artifactId} - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - -parameters - 1.8 - 1.8 - UTF-8 - false - - - org.apache.maven.plugins maven-assembly-plugin - 3.3.0 jar-with-dependencies From 68230d62c068ea43910c714bf078bd6e169bb0a0 Mon Sep 17 00:00:00 2001 From: noear Date: Sun, 25 Aug 2024 08:54:12 +0800 Subject: [PATCH 02/28] Update Solon Version To 2.9.1 --- frameworks/Java/solon/pom.xml | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 384f49be278..df69e436229 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -2,31 +2,27 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - org.noear - solon-parent - 2.9.1 - - - org.noear.solon solon-benchmark 1.0 jar - 11 + UTF-8 + 11 + 2.9.1 org.noear solon.boot.smarthttp + ${solon.version} - org.noear solon.serialization.snack3 + ${solon.version} @@ -66,9 +62,23 @@ ${project.artifactId} + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + -parameters + ${java.vertsion} + ${java.vertsion} + UTF-8 + false + + + org.apache.maven.plugins maven-assembly-plugin + 3.6.0 jar-with-dependencies From 4f889c75e38b29c0908dd5e93d19efaa352de2cd Mon Sep 17 00:00:00 2001 From: noear Date: Sat, 31 Aug 2024 21:54:35 +0800 Subject: [PATCH 03/28] Update Solon Jdk To 21 --- frameworks/Java/solon/README.md | 8 +- frameworks/Java/solon/pom.xml | 83 +++---------------- frameworks/Java/solon/solon.dockerfile | 8 +- .../src/main/java/{pmg => hello}/Main.java | 26 +++--- .../controller/HelloController.java | 4 +- .../java/{pmg => hello}/model/Message.java | 2 +- 6 files changed, 37 insertions(+), 94 deletions(-) rename frameworks/Java/solon/src/main/java/{pmg => hello}/Main.java (87%) rename frameworks/Java/solon/src/main/java/{pmg => hello}/controller/HelloController.java (88%) rename frameworks/Java/solon/src/main/java/{pmg => hello}/model/Message.java (93%) diff --git a/frameworks/Java/solon/README.md b/frameworks/Java/solon/README.md index 0824b5effd9..f2370ab2305 100644 --- a/frameworks/Java/solon/README.md +++ b/frameworks/Java/solon/README.md @@ -4,13 +4,13 @@ This is the solon portion of a [benchmarking test suite](../) comparing a variety of web development platforms. ### JSON Encoding Test -* [JSON test source](src/main/java/pmg/Main.java) -* [Plaintext test source](src/main/java/pmg/Main.java) +* [JSON test source](src/main/java/hello/Main.java) +* [Plaintext test source](src/main/java/hello/Main.java) ## Versions -* [Java OpenJDK 1.8](http://openjdk.java.net/) -* [solon 2.0.0](https://github.com/noear/solon) +* [Java OpenJDK 21](http://openjdk.java.net/) +* [solon 2.9.1](https://github.com/noear/solon) ## Test URLs diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index df69e436229..9f578134598 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -2,15 +2,19 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.noear.solon - solon-benchmark + + org.noear + solon-parent + 2.9.1 + + + hello + hello-solon 1.0 jar - UTF-8 - 11 - 2.9.1 + 21 @@ -19,6 +23,7 @@ solon.boot.smarthttp ${solon.version} + org.noear solon.serialization.snack3 @@ -26,78 +31,16 @@ - - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - sonatype-nexus-snapshots - Sonatype Nexus Snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - - - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - sonatype-nexus-snapshots - Sonatype Nexus Snapshots - https://oss.sonatype.org/content/repositories/snapshots - - false - - - true - - - - ${project.artifactId} - org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 - - -parameters - ${java.vertsion} - ${java.vertsion} - UTF-8 - false - - - - - org.apache.maven.plugins - maven-assembly-plugin - 3.6.0 + org.noear + solon-maven-plugin - - jar-with-dependencies - - - - pmg.Main - - + hello.Main - - - make-assembly - package - - single - - - diff --git a/frameworks/Java/solon/solon.dockerfile b/frameworks/Java/solon/solon.dockerfile index 21d7f50d8a8..8371b74a8df 100644 --- a/frameworks/Java/solon/solon.dockerfile +++ b/frameworks/Java/solon/solon.dockerfile @@ -1,13 +1,13 @@ -FROM maven:3.6.1-jdk-11-slim as maven +FROM maven:3.9.7-amazoncorretto-21 as maven WORKDIR /solon COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q -FROM openjdk:11.0.3-jdk-slim +FROM openjdk:21-jdk-slim WORKDIR /solon -COPY --from=maven /solon/target/solon-benchmark-jar-with-dependencies.jar app.jar +COPY --from=maven /solon/target/hello-solon.jar app.jar EXPOSE 8080 -CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-cp", "app.jar", "pmg.Main"] +CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-cp", "app.jar", "hello.Main"] \ No newline at end of file diff --git a/frameworks/Java/solon/src/main/java/pmg/Main.java b/frameworks/Java/solon/src/main/java/hello/Main.java similarity index 87% rename from frameworks/Java/solon/src/main/java/pmg/Main.java rename to frameworks/Java/solon/src/main/java/hello/Main.java index b4b7b651797..0746f86be45 100644 --- a/frameworks/Java/solon/src/main/java/pmg/Main.java +++ b/frameworks/Java/solon/src/main/java/hello/Main.java @@ -1,13 +1,13 @@ -package pmg; - -import org.noear.solon.Solon; - -/** - * @author pmg1991 - * @version V1.0 - */ -public class Main { - public static void main(String[] args) { - Solon.start(Main.class, args); - } -} +package hello; + +import org.noear.solon.Solon; + +/** + * @author pmg1991 + * @version V1.0 + */ +public class Main { + public static void main(String[] args) { + Solon.start(Main.class, args); + } +} diff --git a/frameworks/Java/solon/src/main/java/pmg/controller/HelloController.java b/frameworks/Java/solon/src/main/java/hello/controller/HelloController.java similarity index 88% rename from frameworks/Java/solon/src/main/java/pmg/controller/HelloController.java rename to frameworks/Java/solon/src/main/java/hello/controller/HelloController.java index fe9a1b43e3a..77049043e97 100644 --- a/frameworks/Java/solon/src/main/java/pmg/controller/HelloController.java +++ b/frameworks/Java/solon/src/main/java/hello/controller/HelloController.java @@ -1,9 +1,9 @@ -package pmg.controller; +package hello.controller; import org.noear.solon.annotation.Controller; import org.noear.solon.annotation.Get; import org.noear.solon.annotation.Mapping; -import pmg.model.Message; +import hello.model.Message; /** * @author noear diff --git a/frameworks/Java/solon/src/main/java/pmg/model/Message.java b/frameworks/Java/solon/src/main/java/hello/model/Message.java similarity index 93% rename from frameworks/Java/solon/src/main/java/pmg/model/Message.java rename to frameworks/Java/solon/src/main/java/hello/model/Message.java index f88b9b1a8d4..1df5276ca8d 100644 --- a/frameworks/Java/solon/src/main/java/pmg/model/Message.java +++ b/frameworks/Java/solon/src/main/java/hello/model/Message.java @@ -1,4 +1,4 @@ -package pmg.model; +package hello.model; /** * @author pmg1991 From a9fb8dee024f7fea36374bac679b463cd79f9b96 Mon Sep 17 00:00:00 2001 From: noear Date: Sun, 1 Sep 2024 13:53:46 +0800 Subject: [PATCH 04/28] Update Solon Jdk To 21 --- frameworks/Java/solon/solon.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon/solon.dockerfile b/frameworks/Java/solon/solon.dockerfile index 8371b74a8df..34fc9b518ca 100644 --- a/frameworks/Java/solon/solon.dockerfile +++ b/frameworks/Java/solon/solon.dockerfile @@ -10,4 +10,4 @@ COPY --from=maven /solon/target/hello-solon.jar app.jar EXPOSE 8080 -CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-cp", "app.jar", "hello.Main"] \ No newline at end of file +CMD ["java", "-jar", "app.jar"] \ No newline at end of file From 9ae3b14871bca605231ee9196ca157d12a004277 Mon Sep 17 00:00:00 2001 From: noear Date: Sun, 1 Sep 2024 14:00:33 +0800 Subject: [PATCH 05/28] Update Solon Jdk To 21 --- frameworks/Java/solon/solon.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon/solon.dockerfile b/frameworks/Java/solon/solon.dockerfile index 34fc9b518ca..0cb12bc444b 100644 --- a/frameworks/Java/solon/solon.dockerfile +++ b/frameworks/Java/solon/solon.dockerfile @@ -10,4 +10,4 @@ COPY --from=maven /solon/target/hello-solon.jar app.jar EXPOSE 8080 -CMD ["java", "-jar", "app.jar"] \ No newline at end of file +CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-cp", "app.jar", "hello.Main"] \ No newline at end of file From c47ce323d37b6c0dc75f1ba3add199323907edce Mon Sep 17 00:00:00 2001 From: noear Date: Sun, 1 Sep 2024 14:03:54 +0800 Subject: [PATCH 06/28] Update Solon Jdk To 21 --- frameworks/Java/solon/pom.xml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 9f578134598..a9568927908 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -36,11 +36,27 @@ - org.noear - solon-maven-plugin + org.apache.maven.plugins + maven-assembly-plugin - hello.Main + + jar-with-dependencies + + + + hello.Main + + + + + make-assembly + package + + single + + + From da9ba214d47d76dd1e8373200470caf6c57ae7c9 Mon Sep 17 00:00:00 2001 From: noear Date: Sun, 1 Sep 2024 14:06:19 +0800 Subject: [PATCH 07/28] Update Solon Jdk To 21 --- frameworks/Java/solon/solon.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon/solon.dockerfile b/frameworks/Java/solon/solon.dockerfile index 0cb12bc444b..c387938661c 100644 --- a/frameworks/Java/solon/solon.dockerfile +++ b/frameworks/Java/solon/solon.dockerfile @@ -10,4 +10,4 @@ COPY --from=maven /solon/target/hello-solon.jar app.jar EXPOSE 8080 -CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-cp", "app.jar", "hello.Main"] \ No newline at end of file +CMD ["java", "-server", "-cp", "app.jar", "hello.Main"] \ No newline at end of file From 72ca067c8732501642bd295683599aa0c1481efc Mon Sep 17 00:00:00 2001 From: noear Date: Mon, 9 Sep 2024 07:20:11 +0800 Subject: [PATCH 08/28] Update Solon Version To 2.9.2 --- frameworks/Java/solon/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index a9568927908..035ad60951a 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -5,7 +5,7 @@ org.noear solon-parent - 2.9.1 + 2.9.2 hello @@ -26,7 +26,7 @@ org.noear - solon.serialization.snack3 + solon.serialization.fastjson2 ${solon.version} From 940b673dd98929e0db5f78edf3c4d32dbbe381ce Mon Sep 17 00:00:00 2001 From: noear Date: Mon, 9 Sep 2024 07:29:14 +0800 Subject: [PATCH 09/28] Add Solon-Virtual --- frameworks/Java/solon-virtual/README.md | 23 +++++++ .../Java/solon-virtual/benchmark_config.json | 26 ++++++++ frameworks/Java/solon-virtual/config.toml | 15 +++++ frameworks/Java/solon-virtual/pom.xml | 63 +++++++++++++++++++ .../Java/solon-virtual/solon.dockerfile | 13 ++++ .../src/main/java/hello/Main.java | 13 ++++ .../hello/controller/HelloController.java | 25 ++++++++ .../src/main/java/hello/model/Message.java | 21 +++++++ .../src/main/resources/app.properties | 1 + 9 files changed, 200 insertions(+) create mode 100644 frameworks/Java/solon-virtual/README.md create mode 100644 frameworks/Java/solon-virtual/benchmark_config.json create mode 100644 frameworks/Java/solon-virtual/config.toml create mode 100644 frameworks/Java/solon-virtual/pom.xml create mode 100644 frameworks/Java/solon-virtual/solon.dockerfile create mode 100644 frameworks/Java/solon-virtual/src/main/java/hello/Main.java create mode 100644 frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java create mode 100644 frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java create mode 100644 frameworks/Java/solon-virtual/src/main/resources/app.properties diff --git a/frameworks/Java/solon-virtual/README.md b/frameworks/Java/solon-virtual/README.md new file mode 100644 index 00000000000..f2370ab2305 --- /dev/null +++ b/frameworks/Java/solon-virtual/README.md @@ -0,0 +1,23 @@ +# solon Benchmarking Test + + +This is the solon portion of a [benchmarking test suite](../) comparing a variety of web development platforms. + +### JSON Encoding Test +* [JSON test source](src/main/java/hello/Main.java) +* [Plaintext test source](src/main/java/hello/Main.java) + +## Versions + +* [Java OpenJDK 21](http://openjdk.java.net/) +* [solon 2.9.1](https://github.com/noear/solon) + +## Test URLs + +### JSON Encoding Test + + http://localhost:8080/json + +### Plaintext Encoding Test + + http://localhost:8080/plaintext \ No newline at end of file diff --git a/frameworks/Java/solon-virtual/benchmark_config.json b/frameworks/Java/solon-virtual/benchmark_config.json new file mode 100644 index 00000000000..a0d157f8710 --- /dev/null +++ b/frameworks/Java/solon-virtual/benchmark_config.json @@ -0,0 +1,26 @@ +{ + "framework": "solon-virtual", + "tests": [ + { + "default": { + "json_url": "/json", + "plaintext_url": "/plaintext", + "port": 8080, + "approach": "Realistic", + "classification": "Fullstack", + "database": "None", + "framework": "solon", + "language": "Java", + "flavor": "None", + "orm": "Full", + "platform": "solon", + "webserver": "smarthttp", + "os": "Linux", + "database_os": "Linux", + "display_name": "solon", + "notes": "", + "versus": "None" + } + } + ] +} diff --git a/frameworks/Java/solon-virtual/config.toml b/frameworks/Java/solon-virtual/config.toml new file mode 100644 index 00000000000..7b11ce9b553 --- /dev/null +++ b/frameworks/Java/solon-virtual/config.toml @@ -0,0 +1,15 @@ +[framework] +name = "solon-virtual" + +[main] +urls.plaintext = "/plaintext" +urls.json = "/json" +approach = "Realistic" +classification = "Platform" +database = "None" +database_os = "Linux" +os = "Linux" +orm = "Raw" +platform = "solon" +webserver = "smarthttp" +versus = "None" diff --git a/frameworks/Java/solon-virtual/pom.xml b/frameworks/Java/solon-virtual/pom.xml new file mode 100644 index 00000000000..035ad60951a --- /dev/null +++ b/frameworks/Java/solon-virtual/pom.xml @@ -0,0 +1,63 @@ + + 4.0.0 + + + org.noear + solon-parent + 2.9.2 + + + hello + hello-solon + 1.0 + jar + + + 21 + + + + + org.noear + solon.boot.smarthttp + ${solon.version} + + + + org.noear + solon.serialization.fastjson2 + ${solon.version} + + + + + ${project.artifactId} + + + + org.apache.maven.plugins + maven-assembly-plugin + + + jar-with-dependencies + + + + hello.Main + + + + + + make-assembly + package + + single + + + + + + + diff --git a/frameworks/Java/solon-virtual/solon.dockerfile b/frameworks/Java/solon-virtual/solon.dockerfile new file mode 100644 index 00000000000..c387938661c --- /dev/null +++ b/frameworks/Java/solon-virtual/solon.dockerfile @@ -0,0 +1,13 @@ +FROM maven:3.9.7-amazoncorretto-21 as maven +WORKDIR /solon +COPY pom.xml pom.xml +COPY src src +RUN mvn compile assembly:single -q + +FROM openjdk:21-jdk-slim +WORKDIR /solon +COPY --from=maven /solon/target/hello-solon.jar app.jar + +EXPOSE 8080 + +CMD ["java", "-server", "-cp", "app.jar", "hello.Main"] \ No newline at end of file diff --git a/frameworks/Java/solon-virtual/src/main/java/hello/Main.java b/frameworks/Java/solon-virtual/src/main/java/hello/Main.java new file mode 100644 index 00000000000..0746f86be45 --- /dev/null +++ b/frameworks/Java/solon-virtual/src/main/java/hello/Main.java @@ -0,0 +1,13 @@ +package hello; + +import org.noear.solon.Solon; + +/** + * @author pmg1991 + * @version V1.0 + */ +public class Main { + public static void main(String[] args) { + Solon.start(Main.class, args); + } +} diff --git a/frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java b/frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java new file mode 100644 index 00000000000..77049043e97 --- /dev/null +++ b/frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java @@ -0,0 +1,25 @@ +package hello.controller; + +import org.noear.solon.annotation.Controller; +import org.noear.solon.annotation.Get; +import org.noear.solon.annotation.Mapping; +import hello.model.Message; + +/** + * @author noear + * @version V1.0 + */ +@Controller +public class HelloController { + @Get + @Mapping("plaintext") + public String plaintext() { + return "Hello, World!"; + } + + @Get + @Mapping("json") + public Message json() { + return new Message("Hello, World!"); + } +} diff --git a/frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java b/frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java new file mode 100644 index 00000000000..1df5276ca8d --- /dev/null +++ b/frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java @@ -0,0 +1,21 @@ +package hello.model; + +/** + * @author pmg1991 + * @version V1.0 + */ +public class Message { + private String message; + + public Message(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/frameworks/Java/solon-virtual/src/main/resources/app.properties b/frameworks/Java/solon-virtual/src/main/resources/app.properties new file mode 100644 index 00000000000..9e81a1a9c31 --- /dev/null +++ b/frameworks/Java/solon-virtual/src/main/resources/app.properties @@ -0,0 +1 @@ +solon.threads.virtual.enabled=true \ No newline at end of file From dcc414a65e76dd5466f3aa70fe5e7c557c7da445 Mon Sep 17 00:00:00 2001 From: noear Date: Mon, 9 Sep 2024 07:43:51 +0800 Subject: [PATCH 10/28] Remove solon-virtual --- frameworks/Java/solon-virtual/README.md | 23 ------- .../Java/solon-virtual/benchmark_config.json | 26 -------- frameworks/Java/solon-virtual/config.toml | 15 ----- frameworks/Java/solon-virtual/pom.xml | 63 ------------------- .../Java/solon-virtual/solon.dockerfile | 13 ---- .../src/main/java/hello/Main.java | 13 ---- .../hello/controller/HelloController.java | 25 -------- .../src/main/java/hello/model/Message.java | 21 ------- .../src/main/resources/app.properties | 1 - 9 files changed, 200 deletions(-) delete mode 100644 frameworks/Java/solon-virtual/README.md delete mode 100644 frameworks/Java/solon-virtual/benchmark_config.json delete mode 100644 frameworks/Java/solon-virtual/config.toml delete mode 100644 frameworks/Java/solon-virtual/pom.xml delete mode 100644 frameworks/Java/solon-virtual/solon.dockerfile delete mode 100644 frameworks/Java/solon-virtual/src/main/java/hello/Main.java delete mode 100644 frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java delete mode 100644 frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java delete mode 100644 frameworks/Java/solon-virtual/src/main/resources/app.properties diff --git a/frameworks/Java/solon-virtual/README.md b/frameworks/Java/solon-virtual/README.md deleted file mode 100644 index f2370ab2305..00000000000 --- a/frameworks/Java/solon-virtual/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# solon Benchmarking Test - - -This is the solon portion of a [benchmarking test suite](../) comparing a variety of web development platforms. - -### JSON Encoding Test -* [JSON test source](src/main/java/hello/Main.java) -* [Plaintext test source](src/main/java/hello/Main.java) - -## Versions - -* [Java OpenJDK 21](http://openjdk.java.net/) -* [solon 2.9.1](https://github.com/noear/solon) - -## Test URLs - -### JSON Encoding Test - - http://localhost:8080/json - -### Plaintext Encoding Test - - http://localhost:8080/plaintext \ No newline at end of file diff --git a/frameworks/Java/solon-virtual/benchmark_config.json b/frameworks/Java/solon-virtual/benchmark_config.json deleted file mode 100644 index a0d157f8710..00000000000 --- a/frameworks/Java/solon-virtual/benchmark_config.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "framework": "solon-virtual", - "tests": [ - { - "default": { - "json_url": "/json", - "plaintext_url": "/plaintext", - "port": 8080, - "approach": "Realistic", - "classification": "Fullstack", - "database": "None", - "framework": "solon", - "language": "Java", - "flavor": "None", - "orm": "Full", - "platform": "solon", - "webserver": "smarthttp", - "os": "Linux", - "database_os": "Linux", - "display_name": "solon", - "notes": "", - "versus": "None" - } - } - ] -} diff --git a/frameworks/Java/solon-virtual/config.toml b/frameworks/Java/solon-virtual/config.toml deleted file mode 100644 index 7b11ce9b553..00000000000 --- a/frameworks/Java/solon-virtual/config.toml +++ /dev/null @@ -1,15 +0,0 @@ -[framework] -name = "solon-virtual" - -[main] -urls.plaintext = "/plaintext" -urls.json = "/json" -approach = "Realistic" -classification = "Platform" -database = "None" -database_os = "Linux" -os = "Linux" -orm = "Raw" -platform = "solon" -webserver = "smarthttp" -versus = "None" diff --git a/frameworks/Java/solon-virtual/pom.xml b/frameworks/Java/solon-virtual/pom.xml deleted file mode 100644 index 035ad60951a..00000000000 --- a/frameworks/Java/solon-virtual/pom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - 4.0.0 - - - org.noear - solon-parent - 2.9.2 - - - hello - hello-solon - 1.0 - jar - - - 21 - - - - - org.noear - solon.boot.smarthttp - ${solon.version} - - - - org.noear - solon.serialization.fastjson2 - ${solon.version} - - - - - ${project.artifactId} - - - - org.apache.maven.plugins - maven-assembly-plugin - - - jar-with-dependencies - - - - hello.Main - - - - - - make-assembly - package - - single - - - - - - - diff --git a/frameworks/Java/solon-virtual/solon.dockerfile b/frameworks/Java/solon-virtual/solon.dockerfile deleted file mode 100644 index c387938661c..00000000000 --- a/frameworks/Java/solon-virtual/solon.dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM maven:3.9.7-amazoncorretto-21 as maven -WORKDIR /solon -COPY pom.xml pom.xml -COPY src src -RUN mvn compile assembly:single -q - -FROM openjdk:21-jdk-slim -WORKDIR /solon -COPY --from=maven /solon/target/hello-solon.jar app.jar - -EXPOSE 8080 - -CMD ["java", "-server", "-cp", "app.jar", "hello.Main"] \ No newline at end of file diff --git a/frameworks/Java/solon-virtual/src/main/java/hello/Main.java b/frameworks/Java/solon-virtual/src/main/java/hello/Main.java deleted file mode 100644 index 0746f86be45..00000000000 --- a/frameworks/Java/solon-virtual/src/main/java/hello/Main.java +++ /dev/null @@ -1,13 +0,0 @@ -package hello; - -import org.noear.solon.Solon; - -/** - * @author pmg1991 - * @version V1.0 - */ -public class Main { - public static void main(String[] args) { - Solon.start(Main.class, args); - } -} diff --git a/frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java b/frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java deleted file mode 100644 index 77049043e97..00000000000 --- a/frameworks/Java/solon-virtual/src/main/java/hello/controller/HelloController.java +++ /dev/null @@ -1,25 +0,0 @@ -package hello.controller; - -import org.noear.solon.annotation.Controller; -import org.noear.solon.annotation.Get; -import org.noear.solon.annotation.Mapping; -import hello.model.Message; - -/** - * @author noear - * @version V1.0 - */ -@Controller -public class HelloController { - @Get - @Mapping("plaintext") - public String plaintext() { - return "Hello, World!"; - } - - @Get - @Mapping("json") - public Message json() { - return new Message("Hello, World!"); - } -} diff --git a/frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java b/frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java deleted file mode 100644 index 1df5276ca8d..00000000000 --- a/frameworks/Java/solon-virtual/src/main/java/hello/model/Message.java +++ /dev/null @@ -1,21 +0,0 @@ -package hello.model; - -/** - * @author pmg1991 - * @version V1.0 - */ -public class Message { - private String message; - - public Message(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/frameworks/Java/solon-virtual/src/main/resources/app.properties b/frameworks/Java/solon-virtual/src/main/resources/app.properties deleted file mode 100644 index 9e81a1a9c31..00000000000 --- a/frameworks/Java/solon-virtual/src/main/resources/app.properties +++ /dev/null @@ -1 +0,0 @@ -solon.threads.virtual.enabled=true \ No newline at end of file From d4bfde6c254c8e3673ed4db5926cef051d11c94a Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 24 Oct 2024 09:57:14 +0800 Subject: [PATCH 11/28] Update Solon Version To 3.0.2 --- frameworks/Java/solon/README.md | 2 +- frameworks/Java/solon/pom.xml | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/frameworks/Java/solon/README.md b/frameworks/Java/solon/README.md index f2370ab2305..49d4aef9fe8 100644 --- a/frameworks/Java/solon/README.md +++ b/frameworks/Java/solon/README.md @@ -10,7 +10,7 @@ This is the solon portion of a [benchmarking test suite](../) comparing a variet ## Versions * [Java OpenJDK 21](http://openjdk.java.net/) -* [solon 2.9.1](https://github.com/noear/solon) +* [solon 3.0.2](https://github.com/noear/solon) ## Test URLs diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 035ad60951a..0c9d8d570ce 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -5,7 +5,7 @@ org.noear solon-parent - 2.9.2 + 3.0.2 hello @@ -20,14 +20,12 @@ org.noear - solon.boot.smarthttp - ${solon.version} + solon-boot-smarthttp org.noear - solon.serialization.fastjson2 - ${solon.version} + solon-serialization-snack3 From 574595c1ea2deb27c3baedb08f30b633dd2cb1b6 Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:05:32 +0800 Subject: [PATCH 12/28] Add Solon-Vertx --- frameworks/Java/solon-vertx/README.md | 23 +++++++ .../Java/solon-vertx/benchmark_config.json | 26 ++++++++ frameworks/Java/solon-vertx/config.toml | 15 +++++ frameworks/Java/solon-vertx/pom.xml | 61 +++++++++++++++++++ frameworks/Java/solon-vertx/solon.dockerfile | 13 ++++ .../solon-vertx/src/main/java/hello/Main.java | 13 ++++ .../hello/controller/HelloController.java | 25 ++++++++ .../src/main/java/hello/model/Message.java | 21 +++++++ .../src/main/resources/app.properties | 1 + 9 files changed, 198 insertions(+) create mode 100644 frameworks/Java/solon-vertx/README.md create mode 100644 frameworks/Java/solon-vertx/benchmark_config.json create mode 100644 frameworks/Java/solon-vertx/config.toml create mode 100644 frameworks/Java/solon-vertx/pom.xml create mode 100644 frameworks/Java/solon-vertx/solon.dockerfile create mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/Main.java create mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java create mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java create mode 100644 frameworks/Java/solon-vertx/src/main/resources/app.properties diff --git a/frameworks/Java/solon-vertx/README.md b/frameworks/Java/solon-vertx/README.md new file mode 100644 index 00000000000..40b8ab3b2cf --- /dev/null +++ b/frameworks/Java/solon-vertx/README.md @@ -0,0 +1,23 @@ +# solon-vertx Benchmarking Test + + +This is the solon-vertx portion of a [benchmarking test suite](../) comparing a variety of web development platforms. + +### JSON Encoding Test +* [JSON test source](src/main/java/hello/Main.java) +* [Plaintext test source](src/main/java/hello/Main.java) + +## Versions + +* [Java OpenJDK 21](http://openjdk.java.net/) +* [solon 3.0.2](https://github.com/noear/solon) + +## Test URLs + +### JSON Encoding Test + + http://localhost:8080/json + +### Plaintext Encoding Test + + http://localhost:8080/plaintext \ No newline at end of file diff --git a/frameworks/Java/solon-vertx/benchmark_config.json b/frameworks/Java/solon-vertx/benchmark_config.json new file mode 100644 index 00000000000..028ea1341ef --- /dev/null +++ b/frameworks/Java/solon-vertx/benchmark_config.json @@ -0,0 +1,26 @@ +{ + "framework": "solon-vertx", + "tests": [ + { + "default": { + "json_url": "/json", + "plaintext_url": "/plaintext", + "port": 8080, + "approach": "Realistic", + "classification": "Fullstack", + "database": "None", + "framework": "solon", + "language": "Java", + "flavor": "None", + "orm": "Full", + "platform": "solon", + "webserver": "vertx", + "os": "Linux", + "database_os": "Linux", + "display_name": "solon-vertx", + "notes": "", + "versus": "None" + } + } + ] +} diff --git a/frameworks/Java/solon-vertx/config.toml b/frameworks/Java/solon-vertx/config.toml new file mode 100644 index 00000000000..ef6eaa43285 --- /dev/null +++ b/frameworks/Java/solon-vertx/config.toml @@ -0,0 +1,15 @@ +[framework] +name = "solon-vertx" + +[main] +urls.plaintext = "/plaintext" +urls.json = "/json" +approach = "Realistic" +classification = "Platform" +database = "None" +database_os = "Linux" +os = "Linux" +orm = "Raw" +platform = "solon" +webserver = "vertx" +versus = "None" diff --git a/frameworks/Java/solon-vertx/pom.xml b/frameworks/Java/solon-vertx/pom.xml new file mode 100644 index 00000000000..a8ba7a8c1bc --- /dev/null +++ b/frameworks/Java/solon-vertx/pom.xml @@ -0,0 +1,61 @@ + + 4.0.0 + + + org.noear + solon-parent + 3.0.2 + + + hello + hello-solon + 1.0 + jar + + + 21 + + + + + org.noear + solon-boot-vertx + + + + org.noear + solon-serialization-snack3 + + + + + ${project.artifactId} + + + + org.apache.maven.plugins + maven-assembly-plugin + + + jar-with-dependencies + + + + hello.Main + + + + + + make-assembly + package + + single + + + + + + + diff --git a/frameworks/Java/solon-vertx/solon.dockerfile b/frameworks/Java/solon-vertx/solon.dockerfile new file mode 100644 index 00000000000..c387938661c --- /dev/null +++ b/frameworks/Java/solon-vertx/solon.dockerfile @@ -0,0 +1,13 @@ +FROM maven:3.9.7-amazoncorretto-21 as maven +WORKDIR /solon +COPY pom.xml pom.xml +COPY src src +RUN mvn compile assembly:single -q + +FROM openjdk:21-jdk-slim +WORKDIR /solon +COPY --from=maven /solon/target/hello-solon.jar app.jar + +EXPOSE 8080 + +CMD ["java", "-server", "-cp", "app.jar", "hello.Main"] \ No newline at end of file diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/Main.java b/frameworks/Java/solon-vertx/src/main/java/hello/Main.java new file mode 100644 index 00000000000..0746f86be45 --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/java/hello/Main.java @@ -0,0 +1,13 @@ +package hello; + +import org.noear.solon.Solon; + +/** + * @author pmg1991 + * @version V1.0 + */ +public class Main { + public static void main(String[] args) { + Solon.start(Main.class, args); + } +} diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java b/frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java new file mode 100644 index 00000000000..77049043e97 --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java @@ -0,0 +1,25 @@ +package hello.controller; + +import org.noear.solon.annotation.Controller; +import org.noear.solon.annotation.Get; +import org.noear.solon.annotation.Mapping; +import hello.model.Message; + +/** + * @author noear + * @version V1.0 + */ +@Controller +public class HelloController { + @Get + @Mapping("plaintext") + public String plaintext() { + return "Hello, World!"; + } + + @Get + @Mapping("json") + public Message json() { + return new Message("Hello, World!"); + } +} diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java b/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java new file mode 100644 index 00000000000..1df5276ca8d --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java @@ -0,0 +1,21 @@ +package hello.model; + +/** + * @author pmg1991 + * @version V1.0 + */ +public class Message { + private String message; + + public Message(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/frameworks/Java/solon-vertx/src/main/resources/app.properties b/frameworks/Java/solon-vertx/src/main/resources/app.properties new file mode 100644 index 00000000000..26a5df70351 --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/resources/app.properties @@ -0,0 +1 @@ +server.http.ioBound=false \ No newline at end of file From 69ec85b55dcaf825c0ec39c85e97fbf3b80ee395 Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:14:00 +0800 Subject: [PATCH 13/28] Tweak description --- frameworks/Java/solon-vertx/benchmark_config.json | 2 +- frameworks/Java/solon-vertx/src/main/java/hello/Main.java | 2 +- .../Java/solon-vertx/src/main/java/hello/model/Message.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frameworks/Java/solon-vertx/benchmark_config.json b/frameworks/Java/solon-vertx/benchmark_config.json index 028ea1341ef..efa7c09ba07 100644 --- a/frameworks/Java/solon-vertx/benchmark_config.json +++ b/frameworks/Java/solon-vertx/benchmark_config.json @@ -9,7 +9,7 @@ "approach": "Realistic", "classification": "Fullstack", "database": "None", - "framework": "solon", + "framework": "solon-vertx", "language": "Java", "flavor": "None", "orm": "Full", diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/Main.java b/frameworks/Java/solon-vertx/src/main/java/hello/Main.java index 0746f86be45..bc6467e87af 100644 --- a/frameworks/Java/solon-vertx/src/main/java/hello/Main.java +++ b/frameworks/Java/solon-vertx/src/main/java/hello/Main.java @@ -3,7 +3,7 @@ import org.noear.solon.Solon; /** - * @author pmg1991 + * @author noear * @version V1.0 */ public class Main { diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java b/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java index 1df5276ca8d..235dd2d86dd 100644 --- a/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java +++ b/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java @@ -1,7 +1,7 @@ package hello.model; /** - * @author pmg1991 + * @author noear * @version V1.0 */ public class Message { From 190ad2087a8805857e9405b941a570ec9f6c63e0 Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:18:42 +0800 Subject: [PATCH 14/28] Tweak the dockerfile --- frameworks/Java/solon-vertx/solon.dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/Java/solon-vertx/solon.dockerfile b/frameworks/Java/solon-vertx/solon.dockerfile index c387938661c..73e19e6e25b 100644 --- a/frameworks/Java/solon-vertx/solon.dockerfile +++ b/frameworks/Java/solon-vertx/solon.dockerfile @@ -1,11 +1,11 @@ FROM maven:3.9.7-amazoncorretto-21 as maven -WORKDIR /solon +WORKDIR /solon-vertx COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q FROM openjdk:21-jdk-slim -WORKDIR /solon +WORKDIR /solon-vertx COPY --from=maven /solon/target/hello-solon.jar app.jar EXPOSE 8080 From ccd3a29e057342724b7da8edc4da7f243241c1aa Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:21:48 +0800 Subject: [PATCH 15/28] Tweak the dockerfile --- frameworks/Java/solon-vertx/solon.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon-vertx/solon.dockerfile b/frameworks/Java/solon-vertx/solon.dockerfile index 73e19e6e25b..ea69d457cac 100644 --- a/frameworks/Java/solon-vertx/solon.dockerfile +++ b/frameworks/Java/solon-vertx/solon.dockerfile @@ -6,7 +6,7 @@ RUN mvn compile assembly:single -q FROM openjdk:21-jdk-slim WORKDIR /solon-vertx -COPY --from=maven /solon/target/hello-solon.jar app.jar +COPY --from=maven /solon-vertx/target/hello-solon.jar app.jar EXPOSE 8080 From be86ab713354335bca3c3747cfdca5b4373fdea5 Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:30:20 +0800 Subject: [PATCH 16/28] Tweak config --- frameworks/Java/solon-vertx/benchmark_config.json | 10 +++++----- frameworks/Java/solon-vertx/config.toml | 8 ++++---- frameworks/Java/solon-vertx/solon.dockerfile | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/frameworks/Java/solon-vertx/benchmark_config.json b/frameworks/Java/solon-vertx/benchmark_config.json index efa7c09ba07..3b7de26f5d4 100644 --- a/frameworks/Java/solon-vertx/benchmark_config.json +++ b/frameworks/Java/solon-vertx/benchmark_config.json @@ -9,17 +9,17 @@ "approach": "Realistic", "classification": "Fullstack", "database": "None", - "framework": "solon-vertx", + "framework": "solon", "language": "Java", "flavor": "None", - "orm": "Full", - "platform": "solon", - "webserver": "vertx", + "orm": "Micro", + "platform": "Netty", + "webserver": "None", "os": "Linux", "database_os": "Linux", "display_name": "solon-vertx", "notes": "", - "versus": "None" + "versus": "solon" } } ] diff --git a/frameworks/Java/solon-vertx/config.toml b/frameworks/Java/solon-vertx/config.toml index ef6eaa43285..8306ab94cd1 100644 --- a/frameworks/Java/solon-vertx/config.toml +++ b/frameworks/Java/solon-vertx/config.toml @@ -9,7 +9,7 @@ classification = "Platform" database = "None" database_os = "Linux" os = "Linux" -orm = "Raw" -platform = "solon" -webserver = "vertx" -versus = "None" +orm = "Micro" +platform = "Netty" +webserver = "None" +versus = "solon" diff --git a/frameworks/Java/solon-vertx/solon.dockerfile b/frameworks/Java/solon-vertx/solon.dockerfile index ea69d457cac..c387938661c 100644 --- a/frameworks/Java/solon-vertx/solon.dockerfile +++ b/frameworks/Java/solon-vertx/solon.dockerfile @@ -1,12 +1,12 @@ FROM maven:3.9.7-amazoncorretto-21 as maven -WORKDIR /solon-vertx +WORKDIR /solon COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q FROM openjdk:21-jdk-slim -WORKDIR /solon-vertx -COPY --from=maven /solon-vertx/target/hello-solon.jar app.jar +WORKDIR /solon +COPY --from=maven /solon/target/hello-solon.jar app.jar EXPOSE 8080 From 2e6fc3a567e212366b9b085709d0e1184f4f0d2e Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:31:52 +0800 Subject: [PATCH 17/28] Tweak dockefile name --- .../Java/solon-vertx/{solon.dockerfile => solon-vertx.dockerfile} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename frameworks/Java/solon-vertx/{solon.dockerfile => solon-vertx.dockerfile} (100%) diff --git a/frameworks/Java/solon-vertx/solon.dockerfile b/frameworks/Java/solon-vertx/solon-vertx.dockerfile similarity index 100% rename from frameworks/Java/solon-vertx/solon.dockerfile rename to frameworks/Java/solon-vertx/solon-vertx.dockerfile From 9ad4a99a36aebe123cfd514904a5f93a40f7a666 Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:46:11 +0800 Subject: [PATCH 18/28] Add FilterImpl --- .../java/hello/controller/FilterImpl.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java new file mode 100644 index 00000000000..1f670839695 --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java @@ -0,0 +1,22 @@ +package hello.controller; + +import org.noear.solon.annotation.Component; +import org.noear.solon.core.handle.Context; +import org.noear.solon.core.handle.Filter; +import org.noear.solon.core.handle.FilterChain; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class FilterImpl implements Filter { + private static DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyyy HH:mm:ss z"); + + @Override + public void doFilter(Context ctx, FilterChain chain) throws Throwable { + String dateString = DATE_FORMAT.format(new Date()); + ctx.headerSet("Date", dateString); + chain.doFilter(ctx); + } +} From 68d43a13511b5a0a3555fc146276ac668d581de4 Mon Sep 17 00:00:00 2001 From: noear Date: Tue, 29 Oct 2024 15:52:57 +0800 Subject: [PATCH 19/28] Add FilterImpl --- .../solon-vertx/src/main/java/hello/controller/FilterImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java index 1f670839695..517ee4a1eff 100644 --- a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java +++ b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java @@ -17,6 +17,7 @@ public class FilterImpl implements Filter { public void doFilter(Context ctx, FilterChain chain) throws Throwable { String dateString = DATE_FORMAT.format(new Date()); ctx.headerSet("Date", dateString); + ctx.headerSet("Server", "solon-boot-vertx"); chain.doFilter(ctx); } } From 819162791abe9d1d776413b5b4e697264748f6d5 Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:32:22 +0800 Subject: [PATCH 20/28] The json plugin is changed to jackson --- frameworks/Java/solon/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 0c9d8d570ce..428d95b35b7 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -25,7 +25,7 @@ org.noear - solon-serialization-snack3 + solon-serialization-jackson From 2440838e8d2be325ad11f85c4827a6eb691c84cd Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:36:10 +0800 Subject: [PATCH 21/28] Update Solon Jdk To 23 --- frameworks/Java/solon/pom.xml | 2 +- frameworks/Java/solon/solon.dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 428d95b35b7..4ddec81fd73 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -14,7 +14,7 @@ jar - 21 + 23 diff --git a/frameworks/Java/solon/solon.dockerfile b/frameworks/Java/solon/solon.dockerfile index c387938661c..e1e3b7dde96 100644 --- a/frameworks/Java/solon/solon.dockerfile +++ b/frameworks/Java/solon/solon.dockerfile @@ -1,10 +1,10 @@ -FROM maven:3.9.7-amazoncorretto-21 as maven +FROM maven:3.9.7-amazoncorretto-23 as maven WORKDIR /solon COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q -FROM openjdk:21-jdk-slim +FROM openjdk:23-jdk-slim WORKDIR /solon COPY --from=maven /solon/target/hello-solon.jar app.jar From 6981e6a03fd7b449d12c75349a19f00673e114dd Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:41:38 +0800 Subject: [PATCH 22/28] Update Solon-Vertx Jdk To 23 --- frameworks/Java/solon-vertx/pom.xml | 2 +- frameworks/Java/solon-vertx/solon-vertx.dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frameworks/Java/solon-vertx/pom.xml b/frameworks/Java/solon-vertx/pom.xml index a8ba7a8c1bc..2546baecf35 100644 --- a/frameworks/Java/solon-vertx/pom.xml +++ b/frameworks/Java/solon-vertx/pom.xml @@ -25,7 +25,7 @@ org.noear - solon-serialization-snack3 + solon-serialization-jackson diff --git a/frameworks/Java/solon-vertx/solon-vertx.dockerfile b/frameworks/Java/solon-vertx/solon-vertx.dockerfile index c387938661c..e1e3b7dde96 100644 --- a/frameworks/Java/solon-vertx/solon-vertx.dockerfile +++ b/frameworks/Java/solon-vertx/solon-vertx.dockerfile @@ -1,10 +1,10 @@ -FROM maven:3.9.7-amazoncorretto-21 as maven +FROM maven:3.9.7-amazoncorretto-23 as maven WORKDIR /solon COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q -FROM openjdk:21-jdk-slim +FROM openjdk:23-jdk-slim WORKDIR /solon COPY --from=maven /solon/target/hello-solon.jar app.jar From 6316e88597d296eca04b2260386adf608e066d17 Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:48:39 +0800 Subject: [PATCH 23/28] Solon-vertx is restored to jdk 21 --- frameworks/Java/solon-vertx/solon-vertx.dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/Java/solon-vertx/solon-vertx.dockerfile b/frameworks/Java/solon-vertx/solon-vertx.dockerfile index e1e3b7dde96..c387938661c 100644 --- a/frameworks/Java/solon-vertx/solon-vertx.dockerfile +++ b/frameworks/Java/solon-vertx/solon-vertx.dockerfile @@ -1,10 +1,10 @@ -FROM maven:3.9.7-amazoncorretto-23 as maven +FROM maven:3.9.7-amazoncorretto-21 as maven WORKDIR /solon COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q -FROM openjdk:23-jdk-slim +FROM openjdk:21-jdk-slim WORKDIR /solon COPY --from=maven /solon/target/hello-solon.jar app.jar From df26e435e795a5db2bb047da48a5a4b8882f751d Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:49:27 +0800 Subject: [PATCH 24/28] Solon is restored to jdk 21 --- frameworks/Java/solon/solon.dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/Java/solon/solon.dockerfile b/frameworks/Java/solon/solon.dockerfile index e1e3b7dde96..c387938661c 100644 --- a/frameworks/Java/solon/solon.dockerfile +++ b/frameworks/Java/solon/solon.dockerfile @@ -1,10 +1,10 @@ -FROM maven:3.9.7-amazoncorretto-23 as maven +FROM maven:3.9.7-amazoncorretto-21 as maven WORKDIR /solon COPY pom.xml pom.xml COPY src src RUN mvn compile assembly:single -q -FROM openjdk:23-jdk-slim +FROM openjdk:21-jdk-slim WORKDIR /solon COPY --from=maven /solon/target/hello-solon.jar app.jar From 06987657a65c5fdf8889d636431e328814576cd5 Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:55:10 +0800 Subject: [PATCH 25/28] Solon-vertx adjusts the Date output format --- .../solon-vertx/src/main/java/hello/controller/FilterImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java index 517ee4a1eff..7fb22e497f8 100644 --- a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java +++ b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java @@ -11,7 +11,7 @@ @Component public class FilterImpl implements Filter { - private static DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyyy HH:mm:ss z"); + private static DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, d MMM yyyyy HH:mm:ss z"); @Override public void doFilter(Context ctx, FilterChain chain) throws Throwable { From d2c20e75eaea4f09386a00b45f96896623e53428 Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 31 Oct 2024 16:59:03 +0800 Subject: [PATCH 26/28] Solon is restored to jdk 21 --- frameworks/Java/solon/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 4ddec81fd73..428d95b35b7 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -14,7 +14,7 @@ jar - 23 + 21 From 70329ff8ea615643d05cc7af8cfe18a570daa861 Mon Sep 17 00:00:00 2001 From: noear Date: Mon, 11 Nov 2024 16:41:02 +0800 Subject: [PATCH 27/28] Remove solon-vertx --- frameworks/Java/solon-vertx/README.md | 23 ------- .../Java/solon-vertx/benchmark_config.json | 26 -------- frameworks/Java/solon-vertx/config.toml | 15 ----- frameworks/Java/solon-vertx/pom.xml | 61 ------------------- .../Java/solon-vertx/solon-vertx.dockerfile | 13 ---- .../solon-vertx/src/main/java/hello/Main.java | 13 ---- .../java/hello/controller/FilterImpl.java | 23 ------- .../hello/controller/HelloController.java | 25 -------- .../src/main/java/hello/model/Message.java | 21 ------- .../src/main/resources/app.properties | 1 - 10 files changed, 221 deletions(-) delete mode 100644 frameworks/Java/solon-vertx/README.md delete mode 100644 frameworks/Java/solon-vertx/benchmark_config.json delete mode 100644 frameworks/Java/solon-vertx/config.toml delete mode 100644 frameworks/Java/solon-vertx/pom.xml delete mode 100644 frameworks/Java/solon-vertx/solon-vertx.dockerfile delete mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/Main.java delete mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java delete mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java delete mode 100644 frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java delete mode 100644 frameworks/Java/solon-vertx/src/main/resources/app.properties diff --git a/frameworks/Java/solon-vertx/README.md b/frameworks/Java/solon-vertx/README.md deleted file mode 100644 index 40b8ab3b2cf..00000000000 --- a/frameworks/Java/solon-vertx/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# solon-vertx Benchmarking Test - - -This is the solon-vertx portion of a [benchmarking test suite](../) comparing a variety of web development platforms. - -### JSON Encoding Test -* [JSON test source](src/main/java/hello/Main.java) -* [Plaintext test source](src/main/java/hello/Main.java) - -## Versions - -* [Java OpenJDK 21](http://openjdk.java.net/) -* [solon 3.0.2](https://github.com/noear/solon) - -## Test URLs - -### JSON Encoding Test - - http://localhost:8080/json - -### Plaintext Encoding Test - - http://localhost:8080/plaintext \ No newline at end of file diff --git a/frameworks/Java/solon-vertx/benchmark_config.json b/frameworks/Java/solon-vertx/benchmark_config.json deleted file mode 100644 index 3b7de26f5d4..00000000000 --- a/frameworks/Java/solon-vertx/benchmark_config.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "framework": "solon-vertx", - "tests": [ - { - "default": { - "json_url": "/json", - "plaintext_url": "/plaintext", - "port": 8080, - "approach": "Realistic", - "classification": "Fullstack", - "database": "None", - "framework": "solon", - "language": "Java", - "flavor": "None", - "orm": "Micro", - "platform": "Netty", - "webserver": "None", - "os": "Linux", - "database_os": "Linux", - "display_name": "solon-vertx", - "notes": "", - "versus": "solon" - } - } - ] -} diff --git a/frameworks/Java/solon-vertx/config.toml b/frameworks/Java/solon-vertx/config.toml deleted file mode 100644 index 8306ab94cd1..00000000000 --- a/frameworks/Java/solon-vertx/config.toml +++ /dev/null @@ -1,15 +0,0 @@ -[framework] -name = "solon-vertx" - -[main] -urls.plaintext = "/plaintext" -urls.json = "/json" -approach = "Realistic" -classification = "Platform" -database = "None" -database_os = "Linux" -os = "Linux" -orm = "Micro" -platform = "Netty" -webserver = "None" -versus = "solon" diff --git a/frameworks/Java/solon-vertx/pom.xml b/frameworks/Java/solon-vertx/pom.xml deleted file mode 100644 index 2546baecf35..00000000000 --- a/frameworks/Java/solon-vertx/pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - 4.0.0 - - - org.noear - solon-parent - 3.0.2 - - - hello - hello-solon - 1.0 - jar - - - 21 - - - - - org.noear - solon-boot-vertx - - - - org.noear - solon-serialization-jackson - - - - - ${project.artifactId} - - - - org.apache.maven.plugins - maven-assembly-plugin - - - jar-with-dependencies - - - - hello.Main - - - - - - make-assembly - package - - single - - - - - - - diff --git a/frameworks/Java/solon-vertx/solon-vertx.dockerfile b/frameworks/Java/solon-vertx/solon-vertx.dockerfile deleted file mode 100644 index c387938661c..00000000000 --- a/frameworks/Java/solon-vertx/solon-vertx.dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM maven:3.9.7-amazoncorretto-21 as maven -WORKDIR /solon -COPY pom.xml pom.xml -COPY src src -RUN mvn compile assembly:single -q - -FROM openjdk:21-jdk-slim -WORKDIR /solon -COPY --from=maven /solon/target/hello-solon.jar app.jar - -EXPOSE 8080 - -CMD ["java", "-server", "-cp", "app.jar", "hello.Main"] \ No newline at end of file diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/Main.java b/frameworks/Java/solon-vertx/src/main/java/hello/Main.java deleted file mode 100644 index bc6467e87af..00000000000 --- a/frameworks/Java/solon-vertx/src/main/java/hello/Main.java +++ /dev/null @@ -1,13 +0,0 @@ -package hello; - -import org.noear.solon.Solon; - -/** - * @author noear - * @version V1.0 - */ -public class Main { - public static void main(String[] args) { - Solon.start(Main.class, args); - } -} diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java deleted file mode 100644 index 7fb22e497f8..00000000000 --- a/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package hello.controller; - -import org.noear.solon.annotation.Component; -import org.noear.solon.core.handle.Context; -import org.noear.solon.core.handle.Filter; -import org.noear.solon.core.handle.FilterChain; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class FilterImpl implements Filter { - private static DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, d MMM yyyyy HH:mm:ss z"); - - @Override - public void doFilter(Context ctx, FilterChain chain) throws Throwable { - String dateString = DATE_FORMAT.format(new Date()); - ctx.headerSet("Date", dateString); - ctx.headerSet("Server", "solon-boot-vertx"); - chain.doFilter(ctx); - } -} diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java b/frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java deleted file mode 100644 index 77049043e97..00000000000 --- a/frameworks/Java/solon-vertx/src/main/java/hello/controller/HelloController.java +++ /dev/null @@ -1,25 +0,0 @@ -package hello.controller; - -import org.noear.solon.annotation.Controller; -import org.noear.solon.annotation.Get; -import org.noear.solon.annotation.Mapping; -import hello.model.Message; - -/** - * @author noear - * @version V1.0 - */ -@Controller -public class HelloController { - @Get - @Mapping("plaintext") - public String plaintext() { - return "Hello, World!"; - } - - @Get - @Mapping("json") - public Message json() { - return new Message("Hello, World!"); - } -} diff --git a/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java b/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java deleted file mode 100644 index 235dd2d86dd..00000000000 --- a/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java +++ /dev/null @@ -1,21 +0,0 @@ -package hello.model; - -/** - * @author noear - * @version V1.0 - */ -public class Message { - private String message; - - public Message(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/frameworks/Java/solon-vertx/src/main/resources/app.properties b/frameworks/Java/solon-vertx/src/main/resources/app.properties deleted file mode 100644 index 26a5df70351..00000000000 --- a/frameworks/Java/solon-vertx/src/main/resources/app.properties +++ /dev/null @@ -1 +0,0 @@ -server.http.ioBound=false \ No newline at end of file From f1d8d24156e495e9c4f7b1ae9f89585dcb25ebfb Mon Sep 17 00:00:00 2001 From: noear Date: Sat, 16 Nov 2024 09:06:08 +0800 Subject: [PATCH 28/28] [Java] Update Solon Version To 3.0.3 --- frameworks/Java/solon/pom.xml | 50 ++++++++++++++- .../Java/solon/src/main/java/hello/Main.java | 4 -- .../Java/solon/src/main/java/hello/Utils.java | 17 ++++++ .../hello/controller/HelloController.java | 25 -------- .../src/main/java/hello/model/Fortune.java | 16 +++++ .../src/main/java/hello/model/Message.java | 21 ------- .../src/main/java/hello/model/World.java | 12 ++++ .../java/hello/repository/DbRepository.java | 15 +++++ .../hello/repository/JdbcDbRepository.java | 46 ++++++++++++++ .../src/main/java/hello/web/DbHandler.java | 61 +++++++++++++++++++ .../src/main/java/hello/web/Fortunes.java | 10 +++ .../src/main/java/hello/web/JsonHandler.java | 27 ++++++++ .../src/main/java/hello/web/TextHandler.java | 25 ++++++++ .../src/main/java/hello/web/WebmvcRouter.java | 29 +++++++++ .../solon/src/main/resources/app.properties | 1 - .../Java/solon/src/main/resources/app.yml | 23 +++++++ .../src/main/resources/fortunes.mustache | 20 ++++++ 17 files changed, 349 insertions(+), 53 deletions(-) create mode 100644 frameworks/Java/solon/src/main/java/hello/Utils.java delete mode 100644 frameworks/Java/solon/src/main/java/hello/controller/HelloController.java create mode 100644 frameworks/Java/solon/src/main/java/hello/model/Fortune.java delete mode 100644 frameworks/Java/solon/src/main/java/hello/model/Message.java create mode 100644 frameworks/Java/solon/src/main/java/hello/model/World.java create mode 100644 frameworks/Java/solon/src/main/java/hello/repository/DbRepository.java create mode 100644 frameworks/Java/solon/src/main/java/hello/repository/JdbcDbRepository.java create mode 100644 frameworks/Java/solon/src/main/java/hello/web/DbHandler.java create mode 100644 frameworks/Java/solon/src/main/java/hello/web/Fortunes.java create mode 100644 frameworks/Java/solon/src/main/java/hello/web/JsonHandler.java create mode 100644 frameworks/Java/solon/src/main/java/hello/web/TextHandler.java create mode 100644 frameworks/Java/solon/src/main/java/hello/web/WebmvcRouter.java delete mode 100644 frameworks/Java/solon/src/main/resources/app.properties create mode 100644 frameworks/Java/solon/src/main/resources/app.yml create mode 100644 frameworks/Java/solon/src/main/resources/fortunes.mustache diff --git a/frameworks/Java/solon/pom.xml b/frameworks/Java/solon/pom.xml index 428d95b35b7..b3485e353e9 100644 --- a/frameworks/Java/solon/pom.xml +++ b/frameworks/Java/solon/pom.xml @@ -5,7 +5,7 @@ org.noear solon-parent - 3.0.2 + 3.0.3 hello @@ -15,24 +15,70 @@ 21 + 1.3.6 org.noear - solon-boot-smarthttp + solon-web org.noear solon-serialization-jackson + + + org.noear + solon-data-sqlutils + + + + io.jstach + jstachio + ${jstachio.version} + + + + io.jstach + jstachio-apt + ${jstachio.version} + provided + true + + + + com.zaxxer + HikariCP + 6.0.0 + + + + org.postgresql + postgresql + 42.7.4 + ${project.artifactId} + + org.apache.maven.plugins + maven-compiler-plugin + + + + io.jstach + jstachio-apt + ${jstachio.version} + + + + + org.apache.maven.plugins maven-assembly-plugin diff --git a/frameworks/Java/solon/src/main/java/hello/Main.java b/frameworks/Java/solon/src/main/java/hello/Main.java index 0746f86be45..75fd11bfc36 100644 --- a/frameworks/Java/solon/src/main/java/hello/Main.java +++ b/frameworks/Java/solon/src/main/java/hello/Main.java @@ -2,10 +2,6 @@ import org.noear.solon.Solon; -/** - * @author pmg1991 - * @version V1.0 - */ public class Main { public static void main(String[] args) { Solon.start(Main.class, args); diff --git a/frameworks/Java/solon/src/main/java/hello/Utils.java b/frameworks/Java/solon/src/main/java/hello/Utils.java new file mode 100644 index 00000000000..162f89cc79c --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/Utils.java @@ -0,0 +1,17 @@ +package hello; + +import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.IntStream; + +abstract public class Utils { + private static final int MIN_WORLD_NUMBER = 1; + private static final int MAX_WORLD_NUMBER_PLUS_ONE = 10_001; + + public static int randomWorldNumber() { + return ThreadLocalRandom.current().nextInt(MIN_WORLD_NUMBER, MAX_WORLD_NUMBER_PLUS_ONE); + } + + public static IntStream randomWorldNumbers() { + return ThreadLocalRandom.current().ints(MIN_WORLD_NUMBER, MAX_WORLD_NUMBER_PLUS_ONE).distinct(); + } +} diff --git a/frameworks/Java/solon/src/main/java/hello/controller/HelloController.java b/frameworks/Java/solon/src/main/java/hello/controller/HelloController.java deleted file mode 100644 index 77049043e97..00000000000 --- a/frameworks/Java/solon/src/main/java/hello/controller/HelloController.java +++ /dev/null @@ -1,25 +0,0 @@ -package hello.controller; - -import org.noear.solon.annotation.Controller; -import org.noear.solon.annotation.Get; -import org.noear.solon.annotation.Mapping; -import hello.model.Message; - -/** - * @author noear - * @version V1.0 - */ -@Controller -public class HelloController { - @Get - @Mapping("plaintext") - public String plaintext() { - return "Hello, World!"; - } - - @Get - @Mapping("json") - public Message json() { - return new Message("Hello, World!"); - } -} diff --git a/frameworks/Java/solon/src/main/java/hello/model/Fortune.java b/frameworks/Java/solon/src/main/java/hello/model/Fortune.java new file mode 100644 index 00000000000..f7b5769ef28 --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/model/Fortune.java @@ -0,0 +1,16 @@ +package hello.model; + +public final class Fortune implements Comparable{ + public final int id; + public final String message; + + public Fortune(int id, String message) { + this.id = id; + this.message = message; + } + + @Override + public int compareTo(final Fortune other) { + return message.compareTo(other.message); + } +} diff --git a/frameworks/Java/solon/src/main/java/hello/model/Message.java b/frameworks/Java/solon/src/main/java/hello/model/Message.java deleted file mode 100644 index 1df5276ca8d..00000000000 --- a/frameworks/Java/solon/src/main/java/hello/model/Message.java +++ /dev/null @@ -1,21 +0,0 @@ -package hello.model; - -/** - * @author pmg1991 - * @version V1.0 - */ -public class Message { - private String message; - - public Message(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/frameworks/Java/solon/src/main/java/hello/model/World.java b/frameworks/Java/solon/src/main/java/hello/model/World.java new file mode 100644 index 00000000000..ec6fc5b3abf --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/model/World.java @@ -0,0 +1,12 @@ +package hello.model; + + +public final class World { + public int id; + public int randomNumber; + public World(int id, int randomNumber) { + this.id = id; + this.randomNumber = randomNumber; + } + +} \ No newline at end of file diff --git a/frameworks/Java/solon/src/main/java/hello/repository/DbRepository.java b/frameworks/Java/solon/src/main/java/hello/repository/DbRepository.java new file mode 100644 index 00000000000..e5445184077 --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/repository/DbRepository.java @@ -0,0 +1,15 @@ +package hello.repository; + +import hello.model.Fortune; +import hello.model.World; + +import java.util.List; + +public interface DbRepository { + + World getWorld(int id) throws Exception; + + void updateWorlds(List worlds) throws Exception; + + List fortunes() throws Exception; +} diff --git a/frameworks/Java/solon/src/main/java/hello/repository/JdbcDbRepository.java b/frameworks/Java/solon/src/main/java/hello/repository/JdbcDbRepository.java new file mode 100644 index 00000000000..6e58090c32a --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/repository/JdbcDbRepository.java @@ -0,0 +1,46 @@ +package hello.repository; + +import hello.model.Fortune; +import hello.model.World; +import org.noear.solon.annotation.Component; +import org.noear.solon.annotation.Inject; +import org.noear.solon.data.sql.SqlUtils; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +@Component +public class JdbcDbRepository implements DbRepository { + @Inject + SqlUtils sqlUtils; + + @Override + public World getWorld(int id) { + try { + return sqlUtils.sql("SELECT id, randomnumber FROM world WHERE id = ?", id) + .queryRow() + .toBean(World.class, (r, t) -> new World((int) r.getObject(1), (int) r.getObject(2))); + } catch (Exception e) { + return null; + } + } + + @Override + public void updateWorlds(List worlds) throws SQLException { + List values = new ArrayList<>(); + for (World w : worlds) { + values.add(new Object[]{w.randomNumber, w.id}); + } + + sqlUtils.sql("UPDATE world SET randomnumber = ? WHERE id = ?") + .updateBatch(values); + } + + @Override + public List fortunes() throws SQLException { + return sqlUtils.sql("SELECT id, message FROM fortune") + .queryRowList() + .toBeanList(Fortune.class, (r, t) -> new Fortune((int) r.getObject(1), (String) r.getObject(2))); + } +} diff --git a/frameworks/Java/solon/src/main/java/hello/web/DbHandler.java b/frameworks/Java/solon/src/main/java/hello/web/DbHandler.java new file mode 100644 index 00000000000..9163c94e3c9 --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/web/DbHandler.java @@ -0,0 +1,61 @@ +package hello.web; + +import hello.Utils; +import hello.model.Fortune; +import hello.model.World; +import hello.repository.JdbcDbRepository; +import org.noear.solon.annotation.Component; +import org.noear.solon.annotation.Inject; +import org.noear.solon.core.handle.Context; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +@Component +public class DbHandler { + @Inject + JdbcDbRepository dbRepository; + + public void db(Context ctx) throws Throwable { + ctx.render(dbRepository.getWorld(Utils.randomWorldNumber())); + } + + public void queries(Context ctx) throws Throwable { + int queries = ctx.paramAsInt("queries", 0); + + World[] worlds = Utils.randomWorldNumbers() + .mapToObj(dbRepository::getWorld).limit(queries) + .toArray(World[]::new); + + ctx.render(worlds); + } + + public void updates(Context ctx) throws Throwable { + int queries = ctx.paramAsInt("queries", 0); + + List worlds = Utils.randomWorldNumbers() + .mapToObj(id -> { + World world = dbRepository.getWorld(id); + int randomNumber; + do { + randomNumber = Utils.randomWorldNumber(); + } while (randomNumber == world.randomNumber); + world.randomNumber = randomNumber; + return world; + }).limit(queries) + .sorted(Comparator.comparingInt(w -> w.id)) + .toList(); + dbRepository.updateWorlds(worlds); + + ctx.render(worlds); + } + + public void fortunes(Context ctx) throws Throwable { + List fortunes = dbRepository.fortunes(); + fortunes.add(new Fortune(0, "Additional fortune added at request time.")); + Collections.sort(fortunes); + + ctx.render(new Fortunes(fortunes)); + } +} diff --git a/frameworks/Java/solon/src/main/java/hello/web/Fortunes.java b/frameworks/Java/solon/src/main/java/hello/web/Fortunes.java new file mode 100644 index 00000000000..a5416ec07bc --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/web/Fortunes.java @@ -0,0 +1,10 @@ +package hello.web; + +import hello.model.Fortune; +import io.jstach.jstache.JStache; + +import java.util.List; + +@JStache(path = "fortunes.mustache") +public record Fortunes(List fortunes) { +} diff --git a/frameworks/Java/solon/src/main/java/hello/web/JsonHandler.java b/frameworks/Java/solon/src/main/java/hello/web/JsonHandler.java new file mode 100644 index 00000000000..c65bb73ab74 --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/web/JsonHandler.java @@ -0,0 +1,27 @@ +package hello.web; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import org.noear.solon.annotation.Component; +import org.noear.solon.boot.web.MimeType; +import org.noear.solon.core.handle.Context; +import org.noear.solon.core.handle.Handler; + +import java.util.Map; + +@Component +public class JsonHandler implements Handler { + private final ObjectWriter writer; + + public JsonHandler() { + this.writer = new ObjectMapper().writerFor(Map.class); + } + + @Override + public void handle(Context ctx) throws Throwable { + byte[] body = this.writer.writeValueAsBytes(Map.of("message", "Hello, world!")); + ctx.contentLength(body.length); + ctx.contentType(MimeType.APPLICATION_JSON_VALUE); + ctx.output(body); + } +} diff --git a/frameworks/Java/solon/src/main/java/hello/web/TextHandler.java b/frameworks/Java/solon/src/main/java/hello/web/TextHandler.java new file mode 100644 index 00000000000..96d68e6e7df --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/web/TextHandler.java @@ -0,0 +1,25 @@ +package hello.web; + +import org.noear.solon.annotation.Component; +import org.noear.solon.boot.web.MimeType; +import org.noear.solon.core.handle.Context; +import org.noear.solon.core.handle.Handler; + +import java.nio.charset.StandardCharsets; + +@Component +public class TextHandler implements Handler { + private static final byte[] TEXT_BODY = "Hello, World!".getBytes(StandardCharsets.UTF_8); + + private static final String TEXT_BODY_LENGTH = String.valueOf(TEXT_BODY.length); + private static final String CONTENT_LENGTH = "Content-Length"; + private static final String CONTENT_TYPE = "Content-Type"; + + @Override + public void handle(Context ctx) throws Throwable { + ctx.headerSet(CONTENT_LENGTH, TEXT_BODY_LENGTH); + ctx.headerSet(CONTENT_TYPE, MimeType.TEXT_PLAIN_VALUE); + ctx.output("Hello, World!".getBytes()); + } +} + diff --git a/frameworks/Java/solon/src/main/java/hello/web/WebmvcRouter.java b/frameworks/Java/solon/src/main/java/hello/web/WebmvcRouter.java new file mode 100644 index 00000000000..6024ddcc548 --- /dev/null +++ b/frameworks/Java/solon/src/main/java/hello/web/WebmvcRouter.java @@ -0,0 +1,29 @@ +package hello.web; + +import org.noear.solon.SolonApp; +import org.noear.solon.annotation.Bean; +import org.noear.solon.annotation.Configuration; + +@Configuration +public class WebmvcRouter { + @Bean + public void initRouter(SolonApp app, + DbHandler dbHandler, + JsonHandler jsonHandler, + TextHandler textHandler) { + app.handler().prev(ctx -> { + ctx.setHandled(true); + ctx.headerSet("Server", "Solon"); + + switch (ctx.path()) { + case "/plaintext" -> textHandler.handle(ctx); + case "/json" -> jsonHandler.handle(ctx); + case "/db" -> dbHandler.db(ctx); + case "/queries" -> dbHandler.queries(ctx); + case "/updates" -> dbHandler.updates(ctx); + case "/fortunes" -> dbHandler.fortunes(ctx); + default -> ctx.status(404); + } + }); + } +} diff --git a/frameworks/Java/solon/src/main/resources/app.properties b/frameworks/Java/solon/src/main/resources/app.properties deleted file mode 100644 index 26a5df70351..00000000000 --- a/frameworks/Java/solon/src/main/resources/app.properties +++ /dev/null @@ -1 +0,0 @@ -server.http.ioBound=false \ No newline at end of file diff --git a/frameworks/Java/solon/src/main/resources/app.yml b/frameworks/Java/solon/src/main/resources/app.yml new file mode 100644 index 00000000000..cbd9e850625 --- /dev/null +++ b/frameworks/Java/solon/src/main/resources/app.yml @@ -0,0 +1,23 @@ +database: + name: hello_world + host: tfb-database + port: 5432 + username: benchmarkdbuser + password: benchmarkdbpass + +server.http: + ioBound: false + +solon.threads: + virtual: + enabled: true + +solon.dataSources: + test!: + class: "com.zaxxer.hikari.HikariDataSource" + driverClassName: "org.postgresql.Driver" + url: jdbc:postgresql://${database.host}:${database.port}/${database.name}?loggerLevel=OFF&disableColumnSanitiser=true&assumeMinServerVersion=16&sslmode=disable + username: ${database.username} + password: ${database.password} + hikari: + maximum-pool-size: 256 \ No newline at end of file diff --git a/frameworks/Java/solon/src/main/resources/fortunes.mustache b/frameworks/Java/solon/src/main/resources/fortunes.mustache new file mode 100644 index 00000000000..3043546205b --- /dev/null +++ b/frameworks/Java/solon/src/main/resources/fortunes.mustache @@ -0,0 +1,20 @@ + + + + Fortunes + + + + + + + + {{#fortunes}} + + + + + {{/fortunes}} +
idmessage
{{id}}{{message}}
+ +