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..3b7de26f5d4 --- /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": "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 new file mode 100644 index 00000000000..8306ab94cd1 --- /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 = "Micro" +platform = "Netty" +webserver = "None" +versus = "solon" diff --git a/frameworks/Java/solon-vertx/pom.xml b/frameworks/Java/solon-vertx/pom.xml new file mode 100644 index 00000000000..2546baecf35 --- /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-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 new file mode 100644 index 00000000000..c387938661c --- /dev/null +++ b/frameworks/Java/solon-vertx/solon-vertx.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..bc6467e87af --- /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 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 new file mode 100644 index 00000000000..7fb22e497f8 --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/java/hello/controller/FilterImpl.java @@ -0,0 +1,23 @@ +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 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..235dd2d86dd --- /dev/null +++ b/frameworks/Java/solon-vertx/src/main/java/hello/model/Message.java @@ -0,0 +1,21 @@ +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 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 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