Browse Source

update tio-http-server version

litongjava 5 months ago
parent
commit
43aa5def75

+ 2 - 12
frameworks/Java/tio-http-server/pom.xml

@@ -16,12 +16,12 @@
     <dependency>
     <dependency>
       <groupId>com.litongjava</groupId>
       <groupId>com.litongjava</groupId>
       <artifactId>tio-http-server</artifactId>
       <artifactId>tio-http-server</artifactId>
-      <version>3.7.3.v20240919-RELEASE</version>
+      <version>3.7.3.v20250301-RELEASE</version>
     </dependency>
     </dependency>
     <dependency>
     <dependency>
       <groupId>com.litongjava</groupId>
       <groupId>com.litongjava</groupId>
       <artifactId>java-db</artifactId>
       <artifactId>java-db</artifactId>
-      <version>1.2.6</version>
+      <version>1.4.9</version>
     </dependency>
     </dependency>
     <dependency>
     <dependency>
       <groupId>junit</groupId>
       <groupId>junit</groupId>
@@ -31,16 +31,6 @@
     </dependency>
     </dependency>
 
 
 
 
-    <!-- https://mvnrepository.com/artifact/com.jfinal/activerecord -->
-    <!--
-    <dependency>
-      <groupId>com.jfinal</groupId>
-      <artifactId>activerecord</artifactId>
-      <version>5.1.6</version>
-    </dependency>
-    -->
-
-
     <dependency>
     <dependency>
       <groupId>com.alibaba.fastjson2</groupId>
       <groupId>com.alibaba.fastjson2</groupId>
       <artifactId>fastjson2</artifactId>
       <artifactId>fastjson2</artifactId>

+ 11 - 3
frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/MainApp.java

@@ -9,7 +9,7 @@ import com.litongjava.tio.http.server.controller.CacheController;
 import com.litongjava.tio.http.server.controller.DbController;
 import com.litongjava.tio.http.server.controller.DbController;
 import com.litongjava.tio.http.server.controller.IndexController;
 import com.litongjava.tio.http.server.controller.IndexController;
 import com.litongjava.tio.http.server.handler.DefaultHttpRequestDispatcher;
 import com.litongjava.tio.http.server.handler.DefaultHttpRequestDispatcher;
-import com.litongjava.tio.http.server.router.DefaultHttpReqeustRouter;
+import com.litongjava.tio.http.server.router.DefaultHttpRequestRouter;
 import com.litongjava.tio.http.server.router.HttpRequestRouter;
 import com.litongjava.tio.http.server.router.HttpRequestRouter;
 import com.litongjava.tio.server.ServerTioConfig;
 import com.litongjava.tio.server.ServerTioConfig;
 import com.litongjava.tio.utils.environment.EnvUtils;
 import com.litongjava.tio.utils.environment.EnvUtils;
@@ -18,11 +18,12 @@ public class MainApp {
 
 
   public static void main(String[] args) {
   public static void main(String[] args) {
     long start = System.currentTimeMillis();
     long start = System.currentTimeMillis();
+    EnvUtils.buildCmdArgsMap(args);
     EnvUtils.load();
     EnvUtils.load();
     // add route
     // add route
     IndexController controller = new IndexController();
     IndexController controller = new IndexController();
 
 
-    HttpRequestRouter simpleHttpRoutes = new DefaultHttpReqeustRouter();
+    HttpRequestRouter simpleHttpRoutes = new DefaultHttpRequestRouter();
     simpleHttpRoutes.add("/", controller::index);
     simpleHttpRoutes.add("/", controller::index);
     simpleHttpRoutes.add("/plaintext", controller::plaintext);
     simpleHttpRoutes.add("/plaintext", controller::plaintext);
     simpleHttpRoutes.add("/json", controller::json);
     simpleHttpRoutes.add("/json", controller::json);
@@ -49,9 +50,16 @@ public class MainApp {
     // close Heartbeat
     // close Heartbeat
     serverTioConfig.setHeartbeatTimeout(0);
     serverTioConfig.setHeartbeatTimeout(0);
     serverTioConfig.statOn = false;
     serverTioConfig.statOn = false;
+    boolean db = EnvUtils.getBoolean("db", true);
+    if (db) {
+      try {
+        new MysqlDbConfig().init();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
     // start server
     // start server
     try {
     try {
-      new MysqlDbConfig().init();
       new EnjoyEngineConfig().engine();
       new EnjoyEngineConfig().engine();
       new EhCachePluginConfig().ehCachePlugin();
       new EhCachePluginConfig().ehCachePlugin();
       httpServerStarter.start();
       httpServerStarter.start();

+ 3 - 3
frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/controller/CacheController.java

@@ -7,7 +7,7 @@ import java.util.stream.Collectors;
 
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSON;
 import com.litongjava.db.activerecord.Db;
 import com.litongjava.db.activerecord.Db;
-import com.litongjava.db.activerecord.Record;
+import com.litongjava.db.activerecord.Row;
 import com.litongjava.tio.http.common.HeaderName;
 import com.litongjava.tio.http.common.HeaderName;
 import com.litongjava.tio.http.common.HeaderValue;
 import com.litongjava.tio.http.common.HeaderValue;
 import com.litongjava.tio.http.common.HttpRequest;
 import com.litongjava.tio.http.common.HttpRequest;
@@ -24,7 +24,7 @@ public class CacheController {
         .limit(RandomUtils.parseQueryCount(queries)) // 限制查询数量
         .limit(RandomUtils.parseQueryCount(queries)) // 限制查询数量
         .mapToObj(id -> findByIdWithCache("world", id)) // 使用 mapToObj 将 int 映射为对象
         .mapToObj(id -> findByIdWithCache("world", id)) // 使用 mapToObj 将 int 映射为对象
         .filter(Objects::nonNull) // 过滤掉 null 值
         .filter(Objects::nonNull) // 过滤掉 null 值
-        .map(Record::toMap) // 将每个 Record 对象转换为 Map
+        .map(Row::toMap) // 将每个 Record 对象转换为 Map
         .collect(Collectors.toList()); // 收集到 List
         .collect(Collectors.toList()); // 收集到 List
 
 
     HttpResponse httpResponse = new HttpResponse(request);
     HttpResponse httpResponse = new HttpResponse(request);
@@ -34,7 +34,7 @@ public class CacheController {
 
 
   }
   }
 
 
-  private Record findByIdWithCache(String tableName, int id) {
+  private Row findByIdWithCache(String tableName, int id) {
     String sql = "SELECT id, randomNumber FROM world WHERE id = ?";
     String sql = "SELECT id, randomNumber FROM world WHERE id = ?";
     return Db.findFirstByCache(tableName, id, sql, id);
     return Db.findFirstByCache(tableName, id, sql, id);
   }
   }

+ 10 - 11
frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/controller/DbController.java

@@ -12,15 +12,14 @@ import com.alibaba.fastjson2.JSON;
 import com.jfinal.template.Engine;
 import com.jfinal.template.Engine;
 import com.jfinal.template.Template;
 import com.jfinal.template.Template;
 import com.litongjava.db.activerecord.Db;
 import com.litongjava.db.activerecord.Db;
-import com.litongjava.db.activerecord.Record;
-import com.litongjava.ehcache.EhCache;
+import com.litongjava.db.activerecord.Row;
+import com.litongjava.ehcache.EhCacheKit;
 import com.litongjava.tio.http.common.HeaderName;
 import com.litongjava.tio.http.common.HeaderName;
 import com.litongjava.tio.http.common.HeaderValue;
 import com.litongjava.tio.http.common.HeaderValue;
 import com.litongjava.tio.http.common.HttpRequest;
 import com.litongjava.tio.http.common.HttpRequest;
 import com.litongjava.tio.http.common.HttpResponse;
 import com.litongjava.tio.http.common.HttpResponse;
 import com.litongjava.tio.http.server.model.Fortune;
 import com.litongjava.tio.http.server.model.Fortune;
 import com.litongjava.tio.http.server.util.Resps;
 import com.litongjava.tio.http.server.util.Resps;
-import com.litongjava.tio.http.server.utils.BeanConverterUtils;
 import com.litongjava.tio.http.server.utils.RandomUtils;
 import com.litongjava.tio.http.server.utils.RandomUtils;
 
 
 public class DbController {
 public class DbController {
@@ -37,7 +36,7 @@ public class DbController {
     // int id = 11;
     // int id = 11;
     // String sql="SELECT id, randomNumber FROM world WHERE id = ?";
     // String sql="SELECT id, randomNumber FROM world WHERE id = ?";
 
 
-    Record recored = Db.findById("world", id);
+    Row recored = Db.findById("world", id);
     if (recored != null) {
     if (recored != null) {
       httpResponse.setBody(JSON.toJSONBytes(recored.toMap()));
       httpResponse.setBody(JSON.toJSONBytes(recored.toMap()));
     } else {
     } else {
@@ -57,7 +56,7 @@ public class DbController {
         .limit(RandomUtils.parseQueryCount(queries)) // 限制查询数量
         .limit(RandomUtils.parseQueryCount(queries)) // 限制查询数量
         .mapToObj(id -> Db.findById("world", id)) // 使用 mapToObj 将 int 映射为对象
         .mapToObj(id -> Db.findById("world", id)) // 使用 mapToObj 将 int 映射为对象
         .filter(Objects::nonNull) // 过滤掉 null 值
         .filter(Objects::nonNull) // 过滤掉 null 值
-        .map(Record::toMap) // 将每个 Record 对象转换为 Map
+        .map(Row::toMap) // 将每个 Record 对象转换为 Map
         .collect(Collectors.toList()); // 收集到 List
         .collect(Collectors.toList()); // 收集到 List
 
 
     HttpResponse httpResponse = new HttpResponse(request);
     HttpResponse httpResponse = new HttpResponse(request);
@@ -66,11 +65,11 @@ public class DbController {
     return httpResponse;
     return httpResponse;
   }
   }
 
 
-//@GetMapping("/updates")
+  //@GetMapping("/updates")
   public HttpResponse updates(HttpRequest request) {
   public HttpResponse updates(HttpRequest request) {
     String queries = request.getParam("queries");
     String queries = request.getParam("queries");
 
 
-    EhCache.removeAll("world");
+    EhCacheKit.removeAll("world");
 
 
     List<Map<String, Object>> updatedRecords = RandomUtils.randomWorldNumbers()// random numbers
     List<Map<String, Object>> updatedRecords = RandomUtils.randomWorldNumbers()// random numbers
         // limit
         // limit
@@ -90,7 +89,7 @@ public class DbController {
           return record;
           return record;
         })
         })
         // tomap
         // tomap
-        .map(Record::toMap)
+        .map(Row::toMap)
         // to List
         // to List
         .collect(Collectors.toList());
         .collect(Collectors.toList());
 
 
@@ -101,11 +100,11 @@ public class DbController {
   }
   }
 
 
   public HttpResponse fortunes(HttpRequest request) throws IllegalAccessException, InstantiationException {
   public HttpResponse fortunes(HttpRequest request) throws IllegalAccessException, InstantiationException {
-    List<Record> records = Db.find("SELECT * FROM fortune"); 
+    List<Row> records = Db.find("SELECT * FROM fortune");
 
 
     List<Fortune> fortunes = new ArrayList<>(records.size());
     List<Fortune> fortunes = new ArrayList<>(records.size());
-    for (Record record : records) {
-      fortunes.add(BeanConverterUtils.toBean(record.toMap(), Fortune.class));
+    for (Row record : records) {
+      fortunes.add(record.toBean(Fortune.class));
     }
     }
     // 添加额外的 Fortune
     // 添加额外的 Fortune
     fortunes.add(new Fortune(0L, "Additional fortune added at request time."));
     fortunes.add(new Fortune(0L, "Additional fortune added at request time."));

+ 0 - 31
frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/utils/BeanConverterUtils.java

@@ -1,31 +0,0 @@
-package com.litongjava.tio.http.server.utils;
-
-import java.lang.reflect.Field;
-import java.util.Map;
-
-public class BeanConverterUtils {
-
-  /**
-   * Map to to bean 
-   */
-  public static <T> T toBean(Map<String, Object> map, Class<T> beanClass)
-      throws IllegalAccessException, InstantiationException {
-
-    T bean = beanClass.newInstance(); // 创建 Bean 的实例
-
-    for (Field field : beanClass.getDeclaredFields()) {
-      field.setAccessible(true); // 确保私有字段也可以访问
-
-      if (map.containsKey(field.getName())) {
-        Object value = map.get(field.getName());
-
-        // 如果字段类型与值类型兼容,则设置字段的值
-        if (value != null && field.getType().isAssignableFrom(value.getClass())) {
-          field.set(bean, value);
-        }
-      }
-    }
-
-    return bean;
-  }
-}

+ 1 - 1
frameworks/Java/tio-http-server/tio-server.dockerfile

@@ -16,4 +16,4 @@ COPY --from=builder /app/target/tio-http-server-benchmark-1.0.jar /app/target/ti
 
 
 EXPOSE 8080
 EXPOSE 8080
 
 
-CMD ["java","-jar", "/app/target/tio-http-server-benchmark-1.0.jar"]
+CMD ["java", "-Xms1G", "-Xmx1G", "-XX:+UseNUMA", "-XX:+UseParallelGC","-jar", "/app/target/tio-http-server-benchmark-1.0.jar"]