Browse Source

Upgrade light-4j to JDK 11 to resolve the performance issue (#4308)

* upgrade light-4j to jdk11

* upgrade light-4j to jdk11
Steve Hu 6 years ago
parent
commit
34630d8301
18 changed files with 100 additions and 152 deletions
  1. 3 3
      frameworks/Java/light-java/light-4j.dockerfile
  2. 13 23
      frameworks/Java/light-java/pom.xml
  3. 1 9
      frameworks/Java/light-java/src/main/java/com/networknt/techempower/Helper.java
  4. 2 5
      frameworks/Java/light-java/src/main/java/com/networknt/techempower/PathHandlerProvider.java
  5. 1 9
      frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/DbPostgresqlGetHandler.java
  6. 1 12
      frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/QueriesPostgresqlGetHandler.java
  7. 1 15
      frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/UpdatesPostgresqlGetHandler.java
  8. 0 1
      frameworks/Java/light-java/src/main/java/com/networknt/techempower/model/World.java
  9. 0 24
      frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.handler.MiddlewareHandler
  10. 0 1
      frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.server.HandlerProvider
  11. 0 3
      frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.server.ShutdownHookProvider
  12. 0 7
      frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.server.StartupHookProvider
  13. 0 19
      frameworks/Java/light-java/src/main/resources/config/oauth/primary.crt
  14. 0 19
      frameworks/Java/light-java/src/main/resources/config/oauth/secondary.crt
  15. 4 2
      frameworks/Java/light-java/src/main/resources/config/service.yml
  16. BIN
      frameworks/Java/light-java/src/main/resources/config/tls/server.keystore
  17. BIN
      frameworks/Java/light-java/src/main/resources/config/tls/server.truststore
  18. 74 0
      frameworks/Java/light-java/src/main/resources/logback.xml

+ 3 - 3
frameworks/Java/light-java/light-4j.dockerfile

@@ -1,10 +1,10 @@
-FROM maven:3.5.3-jdk-10-slim as maven
+FROM maven:3.6.0-jdk-11-slim as maven
 WORKDIR /light-4j
 WORKDIR /light-4j
 COPY pom.xml pom.xml
 COPY pom.xml pom.xml
 COPY src src
 COPY src src
 RUN mvn package -q
 RUN mvn package -q
 
 
-FROM openjdk:10-jre-slim
+FROM openjdk:11-jdk-slim
 WORKDIR /light-4j
 WORKDIR /light-4j
 COPY --from=maven /light-4j/target/techempower-1.0.0.jar app.jar
 COPY --from=maven /light-4j/target/techempower-1.0.0.jar app.jar
-CMD ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-server", "-Xms512m", "-Xmx2g", "-jar", "app.jar"]
+CMD ["java", "-jar", "app.jar"]

+ 13 - 23
frameworks/Java/light-java/pom.xml

@@ -21,21 +21,16 @@
 
 
     <properties>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <version.light-java>1.5.10</version.light-java>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+        <version.light-4j>2.0.0-BETA2</version.light-4j>
         <version.logback>1.2.3</version.logback>
         <version.logback>1.2.3</version.logback>
-        <version.undertow>2.0.3.Final</version.undertow>
-        <version.jsonpath>2.2.0</version.jsonpath>
-        <version.httpclient>4.5.2</version.httpclient>
-        <version.httpasyncclient>4.1.2</version.httpasyncclient>
-        <version.swagger>1.5.10</version.swagger>
-        <version.hikaricp>2.7.8</version.hikaricp>
+        <version.undertow>2.0.16.Final</version.undertow>
+        <version.hikaricp>3.2.0</version.hikaricp>
         <version.mysql>5.1.47</version.mysql>
         <version.mysql>5.1.47</version.mysql>
         <version.postgres>42.2.5</version.postgres>
         <version.postgres>42.2.5</version.postgres>
-        <version.dsl-json>1.7.0</version.dsl-json>
+        <version.dsl-json>1.8.4</version.dsl-json>
         <version.mustache>0.9.5</version.mustache>
         <version.mustache>0.9.5</version.mustache>
-        <version.guava>24.1-jre</version.guava>
         <version.maven-compiler-plugin>3.8.0</version.maven-compiler-plugin>
         <version.maven-compiler-plugin>3.8.0</version.maven-compiler-plugin>
         <version.maven-jar-plugin>3.0.2</version.maven-jar-plugin>
         <version.maven-jar-plugin>3.0.2</version.maven-jar-plugin>
         <version.maven-shade-plugin>3.1.0</version.maven-shade-plugin>
         <version.maven-shade-plugin>3.1.0</version.maven-shade-plugin>
@@ -43,45 +38,40 @@
     </properties>
     </properties>
 
 
     <dependencies>
     <dependencies>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>${version.guava}</version>
-        </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>config</artifactId>
             <artifactId>config</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>utility</artifactId>
             <artifactId>utility</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>status</artifactId>
             <artifactId>status</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>exception</artifactId>
             <artifactId>exception</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>handler</artifactId>
             <artifactId>handler</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>service</artifactId>
             <artifactId>service</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.networknt</groupId>
             <groupId>com.networknt</groupId>
             <artifactId>server</artifactId>
             <artifactId>server</artifactId>
-            <version>${version.light-java}</version>
+            <version>${version.light-4j}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <groupId>ch.qos.logback</groupId>

+ 1 - 9
frameworks/Java/light-java/src/main/java/com/networknt/techempower/Helper.java

@@ -1,17 +1,9 @@
 package com.networknt.techempower;
 package com.networknt.techempower;
 
 
-import com.google.common.net.MediaType;
-import com.networknt.techempower.model.World;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 
 
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
 import java.util.Deque;
 import java.util.Deque;
-import java.util.List;
-import java.util.concurrent.*;
-import java.util.stream.Collectors;
+import java.util.concurrent.ThreadLocalRandom;
 
 
 /**
 /**
  * Provides utility methods for the benchmark tests.
  * Provides utility methods for the benchmark tests.

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

@@ -1,13 +1,10 @@
 package com.networknt.techempower;
 package com.networknt.techempower;
 
 
-import com.networknt.config.Config;
-import com.networknt.server.HandlerProvider;
+import com.networknt.handler.HandlerProvider;
+import com.networknt.techempower.handler.*;
 import io.undertow.Handlers;
 import io.undertow.Handlers;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
 import io.undertow.server.handlers.BlockingHandler;
 import io.undertow.server.handlers.BlockingHandler;
-import io.undertow.util.Methods;
-import com.networknt.techempower.handler.*;
 
 
 public class PathHandlerProvider implements HandlerProvider {
 public class PathHandlerProvider implements HandlerProvider {
     @Override
     @Override

+ 1 - 9
frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/DbPostgresqlGetHandler.java

@@ -2,26 +2,18 @@ package com.networknt.techempower.handler;
 
 
 import com.dslplatform.json.DslJson;
 import com.dslplatform.json.DslJson;
 import com.dslplatform.json.JsonWriter;
 import com.dslplatform.json.JsonWriter;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.networknt.config.Config;
 import com.networknt.techempower.Helper;
 import com.networknt.techempower.Helper;
-import com.networknt.techempower.db.mysql.MysqlStartupHookProvider;
 import com.networknt.techempower.db.postgres.PostgresStartupHookProvider;
 import com.networknt.techempower.db.postgres.PostgresStartupHookProvider;
 import com.networknt.techempower.model.World;
 import com.networknt.techempower.model.World;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;
-import io.undertow.util.HttpString;
 
 
+import javax.sql.DataSource;
 import java.nio.ByteBuffer;
 import java.nio.ByteBuffer;
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.commons.lang3.StringEscapeUtils;
-
-import javax.sql.DataSource;
 
 
 public class DbPostgresqlGetHandler implements HttpHandler {
 public class DbPostgresqlGetHandler implements HttpHandler {
     private final DataSource ds = PostgresStartupHookProvider.ds;
     private final DataSource ds = PostgresStartupHookProvider.ds;

+ 1 - 12
frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/QueriesPostgresqlGetHandler.java

@@ -2,29 +2,18 @@ package com.networknt.techempower.handler;
 
 
 import com.dslplatform.json.DslJson;
 import com.dslplatform.json.DslJson;
 import com.dslplatform.json.JsonWriter;
 import com.dslplatform.json.JsonWriter;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.networknt.config.Config;
 import com.networknt.techempower.Helper;
 import com.networknt.techempower.Helper;
-import com.networknt.techempower.db.mysql.MysqlStartupHookProvider;
 import com.networknt.techempower.db.postgres.PostgresStartupHookProvider;
 import com.networknt.techempower.db.postgres.PostgresStartupHookProvider;
 import com.networknt.techempower.model.World;
 import com.networknt.techempower.model.World;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;
-import io.undertow.util.HttpString;
 
 
+import javax.sql.DataSource;
 import java.nio.ByteBuffer;
 import java.nio.ByteBuffer;
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-
-import javax.sql.DataSource;
 
 
 import static com.networknt.techempower.Helper.randomWorld;
 import static com.networknt.techempower.Helper.randomWorld;
 
 

+ 1 - 15
frameworks/Java/light-java/src/main/java/com/networknt/techempower/handler/UpdatesPostgresqlGetHandler.java

@@ -3,31 +3,17 @@ package com.networknt.techempower.handler;
 import com.dslplatform.json.DslJson;
 import com.dslplatform.json.DslJson;
 import com.dslplatform.json.JsonWriter;
 import com.dslplatform.json.JsonWriter;
 import com.networknt.techempower.Helper;
 import com.networknt.techempower.Helper;
-import com.networknt.techempower.db.mysql.MysqlStartupHookProvider;
 import com.networknt.techempower.db.postgres.PostgresStartupHookProvider;
 import com.networknt.techempower.db.postgres.PostgresStartupHookProvider;
 import com.networknt.techempower.model.World;
 import com.networknt.techempower.model.World;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.Headers;
 import io.undertow.util.Headers;
-import io.undertow.util.HttpString;
 
 
+import javax.sql.DataSource;
 import java.nio.ByteBuffer;
 import java.nio.ByteBuffer;
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Future;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-
-import javax.sql.DataSource;
 
 
 import static com.networknt.techempower.Helper.randomWorld;
 import static com.networknt.techempower.Helper.randomWorld;
 
 

+ 0 - 1
frameworks/Java/light-java/src/main/java/com/networknt/techempower/model/World.java

@@ -3,7 +3,6 @@ package com.networknt.techempower.model;
 import com.dslplatform.json.JsonObject;
 import com.dslplatform.json.JsonObject;
 import com.dslplatform.json.JsonWriter;
 import com.dslplatform.json.JsonWriter;
 import com.dslplatform.json.NumberConverter;
 import com.dslplatform.json.NumberConverter;
-import com.sun.org.apache.xpath.internal.operations.Number;
 
 
 /**
 /**
  * The model for the "world" database table.
  * The model for the "world" database table.

+ 0 - 24
frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.handler.MiddlewareHandler

@@ -1,24 +0,0 @@
-# This file is generated and should not be changed unless you want to plug in more handlers into the handler chain
-# for cross cutting concerns. In most cases, you should replace some of the default handlers with your own implementation
-# Please note: the sequence of these handlers are very important.
-
-#Validator Validate request based on swagger specification (depending on Swagger and Body)
-#com.networknt.validator.ValidatorHandler
-#Sanitizer Encode cross site scripting
-#com.networknt.sanitizer.SanitizerHandler
-#SimpleAudit Log important info about the request into audit log
-#com.networknt.audit.AuditHandler
-#Body Parse body based on content type in the header.
-#com.networknt.body.BodyHandler
-#Security JWT token verification and scope verification (depending on SwaggerHandler)
-#com.networknt.security.JwtVerifyHandler
-#Swagger Parsing swagger specification based on request uri and method.
-#com.networknt.swagger.SwaggerHandler
-#Correlation Create correlationId if it doesn't exist in the request header and put it into the request header
-#com.networknt.correlation.CorrelationHandler
-#Traceability Put traceabilityId into response header from request header if it exists
-#com.networknt.traceability.TraceabilityHandler
-#Metrics In order to calculate response time accurately, this needs to be the second.
-#com.networknt.metrics.MetricsHandler
-#Exception Global exception handler that needs to be called first.
-#com.networknt.exception.ExceptionHandler

+ 0 - 1
frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.server.HandlerProvider

@@ -1 +0,0 @@
-com.networknt.techempower.PathHandlerProvider

+ 0 - 3
frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.server.ShutdownHookProvider

@@ -1,3 +0,0 @@
-# There is built in shutdown hook at the moment within the framework.
-# If you want to close database connections, release allocated resources etc. please
-# implement com.networknt.server.ShutdownHookProvider interface and put your class here.

+ 0 - 7
frameworks/Java/light-java/src/main/resources/META-INF/services/com.networknt.server.StartupHookProvider

@@ -1,7 +0,0 @@
-# This is the place to plugin your startup hooks to initialize Spring application context,
-# set up db connection pools and allocate resources.
-
-# init mysql connection pool
-# com.networknt.techempower.db.mysql.MysqlStartupHookProvider
-# init postgres connection pool
-com.networknt.techempower.db.postgres.PostgresStartupHookProvider

+ 0 - 19
frameworks/Java/light-java/src/main/resources/config/oauth/primary.crt

@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDmzCCAoOgAwIBAgIEHnAgtDANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJDQTEQMA4GA1UE
-CBMHT250YXJpbzEUMBIGA1UEBxMLTWlzc2lzc2F1Z2ExJjAkBgNVBAoTHU5ldHdvcmsgTmV3IFRl
-Y2hub2xvZ2llcyBJbmMuMQwwCgYDVQQLEwNERVYxETAPBgNVBAMTCFN0ZXZlIEh1MB4XDTE2MDkw
-MTE2MTYxNVoXDTI2MDcxMTE2MTYxNVowfjELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8x
-FDASBgNVBAcTC01pc3Npc3NhdWdhMSYwJAYDVQQKEx1OZXR3b3JrIE5ldyBUZWNobm9sb2dpZXMg
-SW5jLjEMMAoGA1UECxMDREVWMREwDwYDVQQDEwhTdGV2ZSBIdTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBALrlxMtDb60DogElf4TBz504tRheZimAE0dJL/Yby4nacJdqvc5l4z+WWpDf
-rI9krQ2Yi9yvhwAP+PrR6gWcIqWP4cpNE7XIAUDgr4CtyI7CptT/lpjtbkz4DGCMmaeDn0jqHqJt
-SeSZGfwVu5zAGm8n4sHatjnnxBI/iWzkTII3V4xv0WeK37szNTEd+ly2ag7n2IV5zNnYmqZTeMQm
-J2ENS+IwAG3ENtiVtrVTx/2bGtqutJjtdxsN58/cUG/guRyMT6OPI8Yi3ZzevdvRbxadyhEl/Kaw
-6vJcdxmJI3tp4lx+p6sAxOWa7aapJe4JxutAQqzv0GKdVjoHKQ1wB60CAwEAAaMhMB8wHQYDVR0O
-BBYEFIPF9SBd06RWU1eDL73CKfy01lavMA0GCSqGSIb3DQEBCwUAA4IBAQAoaKZGOak3Upz/ordF
-slZoJuZlCu7jnKQEjYwHf3DNxcd1WmgFPtMcna6pW0VUxPIfidEA6VCMsGoK1RvshB0SjrRdCht6
-5qPXs9kV3NW0WvMiwDSYZZ9HgaZ9efTe5E9Fzc7ltKrE43L6k8NJcaEEWEdpdjFbrAqH4I+j/Vro
-K3OhIo062fXjas5ipL4gF+3ECImjWzirQP8UiAfM0/36x7rtAu3btH/qI9hSyx39LBPPE5AsDJZ4
-dSMwNTW1gqmBAZIj+zQ/RD5dyWfPwON7Q+t96YbK6WBuYo0xy+I+PjcUgrWYWP3N24hlq8ZBIei+
-BudoEVJlIlmS0aRCuP8n
------END CERTIFICATE-----

+ 0 - 19
frameworks/Java/light-java/src/main/resources/config/oauth/secondary.crt

@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDkzCCAnugAwIBAgIEUBGbJDANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJDQTEQMA4GA1UE
-CBMHT250YXJpbzEQMA4GA1UEBxMHVG9yb250bzEmMCQGA1UEChMdTmV0d29yayBOZXcgVGVjaG5v
-bG9naWVzIEluYy4xDDAKBgNVBAsTA0FQSTERMA8GA1UEAxMIU3RldmUgSHUwHhcNMTYwOTIyMjI1
-OTIxWhcNMjYwODAxMjI1OTIxWjB6MQswCQYDVQQGEwJDQTEQMA4GA1UECBMHT250YXJpbzEQMA4G
-A1UEBxMHVG9yb250bzEmMCQGA1UEChMdTmV0d29yayBOZXcgVGVjaG5vbG9naWVzIEluYy4xDDAK
-BgNVBAsTA0FQSTERMA8GA1UEAxMIU3RldmUgSHUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQCqYfarFwug2DwpG/mmcW77OluaHVNsKEVJ/BptLp5suJAH/Z70SS5pwM4x2QwMOVO2ke8U
-rsAws8allxcuKXrbpVt4evpO1Ly2sFwqB1bjN3+VMp6wcT+tSjzYdVGFpQAYHpeA+OLuoHtQyfpB
-0KCveTEe3KAG33zXDNfGKTGmupZ3ZfmBLINoey/X13rY71ITt67AY78VHUKb+D53MBahCcjJ9YpJ
-UHG+Sd3d4oeXiQcqJCBCVpD97awWARf8WYRIgU1xfCe06wQ3CzH3+GyfozLeu76Ni5PwE1tm7Dhg
-EDSSZo5khmzVzo4G0T2sOeshePc5weZBNRHdHlJA0L0fAgMBAAGjITAfMB0GA1UdDgQWBBT9rnek
-spnrFus5wTszjdzYgKll9TANBgkqhkiG9w0BAQsFAAOCAQEAT8udTfUGBgeWbN6ZAXRI64VsSJj5
-1sNUN1GPDADLxZF6jArKU7LjBNXn9bG5VjJqlx8hQ1SNvi/t7FqBRCUt/3MxDmGZrVZqLY1kZ2e7
-x+5RykbspA8neEUtU8sOr/NP3O5jBjU77EVec9hNNT5zwKLevZNL/Q5mfHoc4GrIAolQvi/5fEqC
-8OMdOIWS6sERgjaeI4tXxQtHDcMo5PeLW0/7t5sgEsadZ+pkdeEMVTmLfgf97bpNNI7KF5uEbYnQ
-NpwCT+NNC5ACmJmKidrfW23kml1C7vr7YzTevw9QuH/hN8l/Rh0fr+iPEVpgN6Zv00ymoKGmjuuW
-owVmdKg/0w==
------END CERTIFICATE-----

+ 4 - 2
frameworks/Java/light-java/src/main/resources/config/service.yml

@@ -1,3 +1,5 @@
 singletons:
 singletons:
- - com.networknt.server.HandlerProvider: "com.networknt.techempower.PathHandlerProvider::create"
- - com.networknt.server.StartupHookProvider: "com.networknt.techempower.db.postgres.PostgresStartupHookProvider::create"
+ - com.networknt.handler.HandlerProvider:
+   - com.networknt.techempower.PathHandlerProvider
+ - com.networknt.server.StartupHookProvider:
+   - com.networknt.techempower.db.postgres.PostgresStartupHookProvider

BIN
frameworks/Java/light-java/src/main/resources/config/tls/server.keystore


BIN
frameworks/Java/light-java/src/main/resources/config/tls/server.truststore


+ 74 - 0
frameworks/Java/light-java/src/main/resources/logback.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright (c) 2016 Network New Technologies Inc.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ You may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<configuration>
+    TODO create logger for audit only.
+    http://stackoverflow.com/questions/2488558/logback-to-log-different-messages-to-two-files
+    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
+        <Marker>PROFILER</Marker>
+        <!--<OnMatch>DENY</OnMatch>-->
+        <OnMatch>NEUTRAL</OnMatch>
+    </turboFilter>
+
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- encoders are assigned the type
+             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %X{sId} %X{cId} %-5level %logger{36} %M - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="log" class="ch.qos.logback.core.FileAppender">
+        <File>target/test.log</File>
+        <Append>false</Append>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>%d{HH:mm:ss.SSS} [%thread] %X{sId} %X{cId} %-5level %class{36}:%L %M - %msg%n</Pattern>
+        </layout>
+    </appender>
+
+    <!--audit log-->
+    <appender name="audit" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>target/audit.log</file> <!-- logfile location -->
+        <encoder>
+            <pattern>%-5level [%thread] %date{ISO8601} %X{sId} %X{cId} %F:%L - %msg%n
+            </pattern> <!-- the layout pattern used to format log entries -->
+            <immediateFlush>true</immediateFlush>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+            <fileNamePattern>target/audit.log.%i.zip</fileNamePattern>
+            <minIndex>1</minIndex>
+            <maxIndex>5</maxIndex> <!-- max number of archived logs that are kept -->
+        </rollingPolicy>
+        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <maxFileSize>200MB
+            </maxFileSize> <!-- The size of the logfile that triggers a switch to a new logfile, and the current one archived -->
+        </triggeringPolicy>
+    </appender>
+
+    <root level="error">
+        <appender-ref ref="stdout"/>
+    </root>
+
+    <logger name="com.networknt" level="error">
+        <appender-ref ref="log"/>
+    </logger>
+
+    <logger name="Audit" level="error" additivity="false">
+        <appender-ref ref="audit"/>
+    </logger>
+
+</configuration>