Browse Source

optimize plaintext and router (#2654)

Steve Hu 8 years ago
parent
commit
e27d42504b

+ 1 - 1
frameworks/Java/light-java/dependency-reduced-pom.xml

@@ -159,7 +159,7 @@
     <version.junit>4.12</version.junit>
     <version.postgres>9.4.1211</version.postgres>
     <version.antlr4>4.5.3</version.antlr4>
-    <version.mysql>6.0.4</version.mysql>
+    <version.mysql>5.1.41</version.mysql>
     <version.light-java-rest>1.2.3</version.light-java-rest>
   </properties>
 </project>

+ 1 - 0
frameworks/Java/light-java/pom.xml

@@ -32,6 +32,7 @@
         <version.junit>4.12</version.junit>
         <version.mockito>2.1.0-beta.124</version.mockito>
         <version.undertow>1.4.10.Final</version.undertow>
+        <!--<version.undertow>1.2.5.Final</version.undertow>-->
         <version.jsonpath>2.2.0</version.jsonpath>
         <version.httpclient>4.5.2</version.httpclient>
         <version.httpasyncclient>4.1.2</version.httpasyncclient>

+ 11 - 11
frameworks/Java/light-java/src/main/java/com/networknt/techempower/PathHandlerProvider.java

@@ -11,17 +11,17 @@ import com.networknt.techempower.handler.*;
 public class PathHandlerProvider implements HandlerProvider {
     @Override
     public HttpHandler getHandler() {
-        return Handlers.routing()
-            .add(Methods.GET, "/db/mysql", new DbMysqlGetHandler())
-            .add(Methods.GET, "/db/postgresql", new DbPostgresqlGetHandler())
-            .add(Methods.GET, "/fortunes/mysql", new FortunesMysqlGetHandler())
-            .add(Methods.GET, "/fortunes/postgresql", new FortunesPostgresqlGetHandler())
-            .add(Methods.GET, "/json", new JsonGetHandler())
-            .add(Methods.GET, "/plaintext", new PlaintextGetHandler())
-            .add(Methods.GET, "/queries/mysql", new QueriesMysqlGetHandler())
-            .add(Methods.GET, "/queries/postgresql", new QueriesPostgresqlGetHandler())
-            .add(Methods.GET, "/updates/mysql", new UpdatesMysqlGetHandler())
-            .add(Methods.GET, "/updates/postgresql", new UpdatesPostgresqlGetHandler())
+        return Handlers.path()
+            .addPrefixPath("/db/mysql", new DbMysqlGetHandler())
+            .addPrefixPath("/db/postgresql", new DbPostgresqlGetHandler())
+            .addPrefixPath("/fortunes/mysql", new FortunesMysqlGetHandler())
+            .addPrefixPath("/fortunes/postgresql", new FortunesPostgresqlGetHandler())
+            .addPrefixPath("/json", new JsonGetHandler())
+            .addPrefixPath("/plaintext", new PlaintextGetHandler())
+            .addPrefixPath("/queries/mysql", new QueriesMysqlGetHandler())
+            .addPrefixPath("/queries/postgresql", new QueriesPostgresqlGetHandler())
+            .addPrefixPath("/updates/mysql", new UpdatesMysqlGetHandler())
+            .addPrefixPath("/updates/postgresql", new UpdatesPostgresqlGetHandler())
         ;
     }
 }

+ 15 - 8
frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/PlaintextGetHandler.java

@@ -1,22 +1,29 @@
 package com.networknt.techempower.handler;
 
-import com.networknt.techempower.Helper;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
-import io.undertow.util.HttpString;
 
 import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.commons.lang3.StringEscapeUtils;
 
-public class PlaintextGetHandler implements HttpHandler {
+public final class PlaintextGetHandler implements HttpHandler {
+    private static final ByteBuffer buffer;
     private static final String MESSAGE = "Hello, World!";
 
+    static {
+        buffer = ByteBuffer.allocateDirect(MESSAGE.length());
+        try {
+            buffer.put(MESSAGE.getBytes("US-ASCII"));
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        buffer.flip();
+    }
+
     @Override
     public void handleRequest(HttpServerExchange exchange) throws Exception {
-        exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
-        exchange.getResponseSender().send(MESSAGE);
+        exchange.getResponseHeaders().put(
+                Headers.CONTENT_TYPE, "text/plain");
+        exchange.getResponseSender().send(buffer.duplicate());
     }
 }