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