浏览代码

update smart-http (#6332)

* update smart-servlet to 0.1.3-SNAPSHOT

* update aio-enhance to 1.0.3-SNAPSHOT

* smart-servlet bugfix

* bugfix
三刀 4 年之前
父节点
当前提交
01906d8443

+ 11 - 0
frameworks/Java/smart-socket/pom.xml

@@ -63,6 +63,17 @@
             <artifactId>postgresql</artifactId>
             <version>42.2.5</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity</artifactId>
+            <version>1.7</version>
+        </dependency>
+        <dependency>
+            <groupId>oro</groupId>
+            <artifactId>oro</artifactId>
+            <version>2.0.8</version>
+        </dependency>
     </dependencies>
     <repositories>
         <repository>

+ 17 - 38
frameworks/Java/smart-socket/src/main/java/org/smartboot/http/Bootstrap.java

@@ -12,16 +12,11 @@ import com.zaxxer.hikari.HikariConfig;
 import com.zaxxer.hikari.HikariDataSource;
 import org.smartboot.Message;
 import org.smartboot.aio.EnhanceAsynchronousChannelProvider;
-import org.smartboot.http.server.HttpMessageProcessor;
-import org.smartboot.http.server.HttpRequestProtocol;
 import org.smartboot.http.server.Request;
 import org.smartboot.http.server.handle.HttpHandle;
 import org.smartboot.http.server.handle.HttpRouteHandle;
 import org.smartboot.socket.StateMachineEnum;
-import org.smartboot.socket.buffer.BufferFactory;
-import org.smartboot.socket.buffer.BufferPagePool;
 import org.smartboot.socket.extension.processor.AbstractMessageProcessor;
-import org.smartboot.socket.transport.AioQuickServer;
 import org.smartboot.socket.transport.AioSession;
 
 import javax.sql.DataSource;
@@ -55,45 +50,25 @@ public class Bootstrap {
                     }
                 });
         initDB(routeHandle);
-        HttpMessageProcessor processor = new HttpMessageProcessor();
-        processor.pipeline(routeHandle);
-        http(processor);
-    }
-
-    public static void http(final HttpMessageProcessor processor) {
-        AbstractMessageProcessor<Request> messageProcessor = new AbstractMessageProcessor<Request>() {
-            @Override
-            public void process0(AioSession session, Request msg) {
-                processor.process(session, msg);
-            }
-
-            @Override
-            public void stateEvent0(AioSession session, StateMachineEnum stateMachineEnum, Throwable throwable) {
-                processor.stateEvent(session, stateMachineEnum, throwable);
-            }
-        };
-//        messageProcessor.addPlugin(new MonitorPlugin(5));
-//        messageProcessor.addPlugin(new SocketOptionPlugin());
-
         int cpuNum = Runtime.getRuntime().availableProcessors();
         // 定义服务器接受的消息类型以及各类消息对应的处理器
-        AioQuickServer<Request> server = new AioQuickServer<>(8080, new HttpRequestProtocol(), messageProcessor);
-        server.setThreadNum(cpuNum + 2)
+        HttpBootstrap bootstrap = new HttpBootstrap();
+        bootstrap.setPort(8080).setThreadNum(cpuNum + 2)
                 .setReadBufferSize(1024 * 4)
-                .setBufferFactory(new BufferFactory() {
+                .setReadPageSize(16384 * 1024 * 4)
+                .setBufferPool(10 * 1024 * 1024, cpuNum + 2, 1024 * 4)
+                .pipeline(routeHandle)
+                .wrapProcessor(processor -> new AbstractMessageProcessor<>() {
                     @Override
-                    public BufferPagePool create() {
-                        return new BufferPagePool(10 * 1024 * 1024, cpuNum + 2, 64 * 1024 * 1024, true);
+                    public void process0(AioSession session, Request msg) {
+                        processor.process(session, msg);
                     }
-                })
-                .setWriteBuffer(1024 * 4, 8);
 
-//        messageProcessor.addPlugin(new BufferPageMonitorPlugin(server, 6));
-        try {
-            server.start();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+                    @Override
+                    public void stateEvent0(AioSession session, StateMachineEnum stateMachineEnum, Throwable throwable) {
+                        processor.stateEvent(session, stateMachineEnum, throwable);
+                    }
+                }).start();
     }
 
     private static void initDB(HttpRouteHandle routeHandle) {
@@ -107,9 +82,13 @@ public class Bootstrap {
         config.setUsername("benchmarkdbuser");
         config.setPassword("benchmarkdbpass");
         config.setMaximumPoolSize(64);
+        config.addDataSourceProperty("cachePrepStmts", "true");
+        config.addDataSourceProperty("prepStmtCacheSize", "250");
+        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
         DataSource dataSource = new HikariDataSource(config);
         routeHandle.route("/db", new SingleQueryHandler(dataSource))
                 .route("/queries", new MultipleQueriesHandler(dataSource))
                 .route("/updates", new UpdateHandler(dataSource));
+//                .route("/fortunes", new FortunesHandler(dataSource));
     }
 }

+ 19 - 44
frameworks/Java/smart-socket/src/main/java/org/smartboot/servlet/Bootstrap.java

@@ -1,19 +1,14 @@
 package org.smartboot.servlet;
 
 import org.smartboot.aio.EnhanceAsynchronousChannelProvider;
+import org.smartboot.http.HttpBootstrap;
 import org.smartboot.http.HttpRequest;
 import org.smartboot.http.HttpResponse;
-import org.smartboot.http.server.HttpMessageProcessor;
-import org.smartboot.http.server.HttpRequestProtocol;
 import org.smartboot.http.server.Request;
 import org.smartboot.http.server.handle.HttpHandle;
 import org.smartboot.servlet.conf.ServletInfo;
 import org.smartboot.socket.StateMachineEnum;
-import org.smartboot.socket.buffer.BufferFactory;
-import org.smartboot.socket.buffer.BufferPagePool;
-import org.smartboot.socket.extension.plugins.MonitorPlugin;
 import org.smartboot.socket.extension.processor.AbstractMessageProcessor;
-import org.smartboot.socket.transport.AioQuickServer;
 import org.smartboot.socket.transport.AioSession;
 
 import java.io.IOException;
@@ -44,50 +39,30 @@ public class Bootstrap {
         applicationRuntime.getDeploymentInfo().addServlet(jsonServletInfo);
         containerRuntime.addRuntime(applicationRuntime);
         containerRuntime.start();
-        HttpMessageProcessor processor = new HttpMessageProcessor();
-        processor.pipeline(new HttpHandle() {
-            @Override
-            public void doHandle(HttpRequest request, HttpResponse response) throws IOException {
-                containerRuntime.doHandle(request, response);
-            }
-        });
-        http(processor);
-    }
-
-    public static void http(final HttpMessageProcessor processor) {
-        AbstractMessageProcessor<Request> messageProcessor = new AbstractMessageProcessor<Request>() {
-            @Override
-            public void process0(AioSession session, Request msg) {
-                processor.process(session, msg);
-            }
-
-            @Override
-            public void stateEvent0(AioSession session, StateMachineEnum stateMachineEnum, Throwable throwable) {
-                processor.stateEvent(session, stateMachineEnum, throwable);
-            }
-        };
-        messageProcessor.addPlugin(new MonitorPlugin(5));
-//        messageProcessor.addPlugin(new SocketOptionPlugin());
-
         int cpuNum = Runtime.getRuntime().availableProcessors();
         // 定义服务器接受的消息类型以及各类消息对应的处理器
-        AioQuickServer<Request> server = new AioQuickServer<>(8080, new HttpRequestProtocol(), messageProcessor);
-        server.setThreadNum(cpuNum + 2)
+        HttpBootstrap bootstrap = new HttpBootstrap();
+        bootstrap.setPort(8080).setThreadNum(cpuNum + 2)
                 .setReadBufferSize(1024 * 4)
-                .setBufferFactory(new BufferFactory() {
+                .setReadPageSize(16384 * 1024 * 4)
+                .setBannerEnabled(false)
+                .setBufferPool(10 * 1024 * 1024, cpuNum + 2, 1024 * 4)
+                .pipeline(new HttpHandle() {
                     @Override
-                    public BufferPagePool create() {
-                        return new BufferPagePool(10 * 1024 * 1024, cpuNum + 2, 64 * 1024 * 1024, true);
+                    public void doHandle(HttpRequest request, HttpResponse response) throws IOException {
+                        containerRuntime.doHandle(request, response);
                     }
                 })
-                .setBannerEnabled(false)
-                .setWriteBuffer(1024 * 4, 8);
+                .wrapProcessor(processor -> new AbstractMessageProcessor<>() {
+                    @Override
+                    public void process0(AioSession session, Request msg) {
+                        processor.process(session, msg);
+                    }
 
-//        messageProcessor.addPlugin(new BufferPageMonitorPlugin(server, 6));
-        try {
-            server.start();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+                    @Override
+                    public void stateEvent0(AioSession session, StateMachineEnum stateMachineEnum, Throwable throwable) {
+                        processor.stateEvent(session, stateMachineEnum, throwable);
+                    }
+                }).start();
     }
 }