Quellcode durchsuchen

[ci fw-only Java/act] Act 1.7.0, add tests for hibernate/eclipselink integration (#3222)

* add act-ebean-pgsql-rythm to compare rythm vs mustache template engine

* disable session resolve for the tests

* add hibernate tests

* jpa tests

* update README for act - add local test results for hibernate and eclipselink

* update README for act - add db tests comparing table between different technologies

* add tests for hibernate and eclipselink

* [ci fw-only Java/act] remove some test combinations from act

* add back tailored tests from Act as we found it should be caused by an act-ebean issue

* [ci fw-only Java/act] set-hibernate-mysql-rythm.sh shall use hibernate_mysql_rythm profile

* [ci fw-only Java/act] set database isolatetion level to READ_COMMITTED for all sql db tests
Green Luo vor 7 Jahren
Ursprung
Commit
f9ed633042
43 geänderte Dateien mit 1015 neuen und 32 gelöschten Zeilen
  1. 74 3
      frameworks/Java/act/README.md
  2. 221 0
      frameworks/Java/act/benchmark_config.json
  3. 133 10
      frameworks/Java/act/pom.xml
  4. 24 0
      frameworks/Java/act/setup-ebean-mysql-rythm.sh
  5. 2 2
      frameworks/Java/act/setup-ebean-mysql.sh
  6. 24 0
      frameworks/Java/act/setup-ebean-pgsql-rythm.sh
  7. 2 2
      frameworks/Java/act/setup-ebean-pgsql.sh
  8. 24 0
      frameworks/Java/act/setup-eclipselink-mysql-rythm.sh
  9. 24 0
      frameworks/Java/act/setup-eclipselink-mysql.sh
  10. 24 0
      frameworks/Java/act/setup-eclipselink-pgsql-rythm.sh
  11. 24 0
      frameworks/Java/act/setup-eclipselink-pgsql.sh
  12. 24 0
      frameworks/Java/act/setup-hibernate-mysql-rythm.sh
  13. 24 0
      frameworks/Java/act/setup-hibernate-mysql.sh
  14. 24 0
      frameworks/Java/act/setup-hibernate-pgsql-rythm.sh
  15. 24 0
      frameworks/Java/act/setup-hibernate-pgsql.sh
  16. 1 1
      frameworks/Java/act/setup-json-plaintext.sh
  17. 24 0
      frameworks/Java/act/setup-morphia-mongo-rythm.sh
  18. 1 1
      frameworks/Java/act/setup-morphia-mongo.sh
  19. 12 7
      frameworks/Java/act/src/main/java/com/techempower/act/controller/WorldController.java
  20. 2 0
      frameworks/Java/act/src/main/java/com/techempower/act/model/Fortune.java
  21. 2 4
      frameworks/Java/act/src/main/java/com/techempower/act/model/World.java
  22. 1 0
      frameworks/Java/act/src/main/resources/conf/app.properties
  23. 2 1
      frameworks/Java/act/src/main/resources/conf/ebean_mysql/db.properties
  24. 1 0
      frameworks/Java/act/src/main/resources/conf/ebean_mysql_rythm/app.properties
  25. 27 0
      frameworks/Java/act/src/main/resources/conf/ebean_mysql_rythm/db.properties
  26. 2 1
      frameworks/Java/act/src/main/resources/conf/ebean_pgsql/db.properties
  27. 1 0
      frameworks/Java/act/src/main/resources/conf/ebean_pgsql_rythm/app.properties
  28. 26 0
      frameworks/Java/act/src/main/resources/conf/ebean_pgsql_rythm/db.properties
  29. 27 0
      frameworks/Java/act/src/main/resources/conf/eclipselink_mysql/db.properties
  30. 1 0
      frameworks/Java/act/src/main/resources/conf/eclipselink_mysql_rythm/app.properties
  31. 27 0
      frameworks/Java/act/src/main/resources/conf/eclipselink_mysql_rythm/db.properties
  32. 26 0
      frameworks/Java/act/src/main/resources/conf/eclipselink_pgsql/db.properties
  33. 1 0
      frameworks/Java/act/src/main/resources/conf/eclipselink_pgsql_rythm/app.properties
  34. 26 0
      frameworks/Java/act/src/main/resources/conf/eclipselink_pgsql_rythm/db.properties
  35. 27 0
      frameworks/Java/act/src/main/resources/conf/hibernate_mysql/db.properties
  36. 1 0
      frameworks/Java/act/src/main/resources/conf/hibernate_mysql_rythm/app.properties
  37. 27 0
      frameworks/Java/act/src/main/resources/conf/hibernate_mysql_rythm/db.properties
  38. 26 0
      frameworks/Java/act/src/main/resources/conf/hibernate_pgsql/db.properties
  39. 1 0
      frameworks/Java/act/src/main/resources/conf/hibernate_pgsql_rythm/app.properties
  40. 26 0
      frameworks/Java/act/src/main/resources/conf/hibernate_pgsql_rythm/db.properties
  41. 1 0
      frameworks/Java/act/src/main/resources/conf/mongo_rythm/app.properties
  42. 4 0
      frameworks/Java/act/src/main/resources/conf/mongo_rythm/db.properties
  43. 20 0
      frameworks/Java/act/src/main/resources/mustache/fortunes.html

+ 74 - 3
frameworks/Java/act/README.md

@@ -2,7 +2,7 @@
 
 This is the ActFramework portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
 
-This is using [ActFramework R1.6.4](http://actframework.org) to build an application.
+This is using [ActFramework 1.7.0-teb-SNAPSHOT](http://actframework.org) to build an application.
 
 ## Local benchmark result
 
@@ -13,7 +13,7 @@ This is using [ActFramework R1.6.4](http://actframework.org) to build an applica
 | plaintext | 1188983.73  |
 | json | 254222.40 |
 
-### MySQL
+### MySQL - Ebean
 
 | Test | Throughput |
 | ---- | ----------: |
@@ -22,7 +22,7 @@ This is using [ActFramework R1.6.4](http://actframework.org) to build an applica
 | updates (20) | 568.46 |
 | fortunes | 18848.39 |
 
-### Postgresql
+### Postgresql- Ebean
 
 | Test | Throughput |
 | ---- | ---------: |
@@ -31,6 +31,41 @@ This is using [ActFramework R1.6.4](http://actframework.org) to build an applica
 | updates (20) | 865 |
 | fortunes | 27560 |
 
+### MySQL - JPA/Hibernate
+
+| Test | Throughput |
+| ---- | ----------: |
+| db | 39588.35 |
+| multiple queries (20) | 2518.09 |
+| updates (20) | 929.35 |
+| fortunes | 33314.78 |
+
+### Postgresql- JPA/Hibernate
+
+| Test | Throughput |
+| ---- | ---------: |
+| db | 41079.85 |
+| multiple queries (20) | 3030.14 |
+| updates (20) | 21.59 |
+| fortunes | 32490.22 |
+
+### MySQL - JPA/EclipseLink
+
+| Test | Throughput |
+| ---- | ----------: |
+| db | 98415.07 |
+| multiple queries (20) | 44483.81 |
+| updates (20) | 2213.31 |
+| fortunes | 37590.55 |
+
+### Postgresql- JPA/EclipseLink
+
+| Test | Throughput |
+| ---- | ---------: |
+| db | 103347.02 |
+| multiple queries (20) | 49868.77 |
+| updates (20) | 4167.03 |
+| fortunes | 34565.04 |
 
 ### Mongodb
 
@@ -40,3 +75,39 @@ This is using [ActFramework R1.6.4](http://actframework.org) to build an applica
 | multiple queries (20) | 2197.53 |
 | updates (20) | 1039.60 |
 | fortunes | 24301.25 |
+
+## SQL database test results comparing
+
+### DB
+
+| Technology | MySQL | Postgresql |
+| ---------- | ----: | ---------: |
+| Ebean | 18160.19 | 32303.52 |
+| JPA/Hibernate | 39588.35 | 41079.85 |
+| JPA/EclipseLink | 98415.07 | 103347.02 |
+
+### Multiple Queries
+
+| Technology | MySQL | Postgresql |
+| ---------- | ----: | ---------: |
+| Ebean | 1918.49 | 3268.78 |
+| JPA/Hibernate | 2518.09 | 3030.14 |
+| JPA/EclipseLink | 44483.81 | 49868.77  |
+
+
+### Updates
+
+| Technology | MySQL | Postgresql |
+| ---------- | ----: | ---------: |
+| Ebean | 568.46 | 865 |
+| JPA/Hibernate | 929.35 | 21.59 |
+| JPA/EclipseLink | 2213.31 | 4167.03 |
+
+### Fortunes
+
+| Technology | MySQL | Postgresql |
+| ---------- | ----: | ---------: |
+| Ebean | 18848.39 | 27560 |
+| JPA/Hibernate | 33314.78 | 32490.22 |
+| JPA/EclipseLink | 37590.55 | 34565.04 |
+

+ 221 - 0
frameworks/Java/act/benchmark_config.json

@@ -43,6 +43,25 @@
       "notes": "",
       "versus": "undertow"
     },
+    "ebean-pgsql-rythm": {
+      "setup_file": "setup-ebean-pgsql-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-ebean-pgsql",
+      "notes": "",
+      "versus": "undertow"
+    },
     "ebean-mysql": {
       "setup_file": "setup-ebean-mysql",
       "db_url": "/db",
@@ -65,6 +84,189 @@
       "notes": "",
       "versus": "undertow"
     },
+    "ebean-mysql-rythm": {
+      "setup_file": "setup-ebean-mysql-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-ebean-mysql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "hibernate-pgsql": {
+      "setup_file": "setup-hibernate-pgsql",
+      "db_url": "/db",
+      "query_url": "/queries?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/updates?queries=",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-hibernate-pgsql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "hibernate-pgsql-rythm": {
+      "setup_file": "setup-hibernate-pgsql-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-hibernate-pgsql",
+      "notes": "",
+      "versus": "actframework-hibernate-pgsql"
+    },
+    "hibernate-mysql": {
+      "setup_file": "setup-hibernate-mysql",
+      "db_url": "/db",
+      "query_url": "/queries?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/updates?queries=",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-hibernate-mysql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "hibernate-mysql-rythm": {
+      "setup_file": "setup-hibernate-mysql-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-hibernate-mysql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "eclipselink-pgsql": {
+      "setup_file": "setup-eclipselink-pgsql",
+      "db_url": "/db",
+      "query_url": "/queries?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/updates?queries=",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-eclipselink-pgsql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "eclipselink-pgsql-rythm": {
+      "setup_file": "setup-eclipselink-pgsql-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-eclipselink-pgsql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "eclipselink-mysql": {
+      "setup_file": "setup-eclipselink-mysql",
+      "db_url": "/db",
+      "query_url": "/queries?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/updates?queries=",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-eclipselink-mysql",
+      "notes": "",
+      "versus": "undertow"
+    },
+    "eclipselink-mysql-rythm": {
+      "setup_file": "setup-eclipselink-mysql-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-eclipselink-mysql",
+      "notes": "",
+      "versus": "undertow"
+    },
     "morphia-mongo": {
       "setup_file": "setup-morphia-mongo",
       "db_url": "/db",
@@ -86,6 +288,25 @@
       "display_name": "act-morphia",
       "notes": "",
       "versus": "undertow"
+    },
+    "morphia-mongo-rythm": {
+      "setup_file": "setup-morphia-mongo-rythm",
+      "fortune_url": "/fortunes",
+      "port": 5460,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MongoDB",
+      "framework": "actframework",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Full",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "act-morphia",
+      "notes": "",
+      "versus": "undertow"
     }
   }]
 }

+ 133 - 10
frameworks/Java/act/pom.xml

@@ -22,7 +22,7 @@
   <groupId>com.techempower</groupId>
   <artifactId>actframework</artifactId>
   <packaging>jar</packaging>
-  <version>1.6.0</version>
+  <version>1.7.0</version>
 
   <name>TEB ActFramework Project</name>
   <description>TEB benchmark project with ActFramework</description>
@@ -36,7 +36,7 @@
   <parent>
     <groupId>org.actframework</groupId>
     <artifactId>act-starter-parent</artifactId>
-    <version>1.6.4.0</version>
+    <version>1.6.6.0</version>
   </parent>
 
   <properties>
@@ -45,7 +45,14 @@
     <mysql.version>5.1.44</mysql.version>
     <postgres-jdbc.version>42.1.4</postgres-jdbc.version>
     <morphia.version>1.3.2</morphia.version>
-    <ebean.version>11.8.1</ebean.version>
+    <ebean.version>11.9.1</ebean.version>
+    <act-sql-common.version>1.3.0-teb-SNAPSHOT</act-sql-common.version>
+    <act-hibernate.version>1.0.0-teb-SNAPSHOT</act-hibernate.version>
+    <act-eclipselink.version>1.0.0-teb-SNAPSHOT</act-eclipselink.version>
+    <act-ebean.version>1.4.0-teb-SNAPSHOT</act-ebean.version>
+    <act-morphia.version>1.4.0-teb-SNAPSHOT</act-morphia.version>
+    <act-mustache.version>1.3.0</act-mustache.version>
+    <act.version>1.7.0-teb-SNAPSHOT</act.version>
     <app.entry>com.techempower.act.AppEntry</app.entry>
   </properties>
 
@@ -56,9 +63,30 @@
   <dependencies>
 
     <dependency>
-      <groupId>io.ebean</groupId>
-      <artifactId>persistence-api</artifactId>
-      <version>2.2.1</version>
+      <groupId>org.actframework</groupId>
+      <artifactId>act</artifactId>
+      <version>${act.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.actframework</groupId>
+      <artifactId>act-mustache</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.actframework</groupId>
+      <artifactId>act-sql-common</artifactId>
+      <version>${act-sql-common.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.avaje.ebean</groupId>
+          <artifactId>ebean</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.avaje.ebean</groupId>
+          <artifactId>ebean-agent</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <dependency>
@@ -98,18 +126,20 @@
         <dependency>
           <groupId>org.actframework</groupId>
           <artifactId>act-morphia</artifactId>
+          <version>${act-morphia.version}</version>
         </dependency>
       </dependencies>
     </profile>
     <profile>
-      <id>mysql</id>
+      <id>ebean_mysql</id>
       <build>
-        <finalName>teb-act-mysql</finalName>
+        <finalName>teb-act-ebean-mysql</finalName>
       </build>
       <dependencies>
         <dependency>
           <groupId>org.actframework</groupId>
           <artifactId>act-ebean2</artifactId>
+          <version>${act-ebean.version}</version>
         </dependency>
         <dependency>
           <groupId>io.ebean</groupId>
@@ -129,14 +159,61 @@
       </dependencies>
     </profile>
     <profile>
-      <id>pgsql</id>
+      <id>hibernate_mysql</id>
+      <build>
+        <finalName>teb-act-hibernate-mysql</finalName>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.actframework</groupId>
+          <artifactId>act-hibernate</artifactId>
+          <version>${act-hibernate.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>mysql</groupId>
+          <artifactId>mysql-connector-java</artifactId>
+          <version>${mysql.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>com.zaxxer</groupId>
+          <artifactId>HikariCP</artifactId>
+          <version>${HikariCP.version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>eclipselink_mysql</id>
+      <build>
+        <finalName>teb-act-eclipselink-mysql</finalName>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.actframework</groupId>
+          <artifactId>act-eclipselink</artifactId>
+          <version>${act-eclipselink.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>mysql</groupId>
+          <artifactId>mysql-connector-java</artifactId>
+          <version>${mysql.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>com.zaxxer</groupId>
+          <artifactId>HikariCP</artifactId>
+          <version>${HikariCP.version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>ebean_pgsql</id>
       <build>
-        <finalName>teb-act-pgsql</finalName>
+        <finalName>teb-act-ebean-pgsql</finalName>
       </build>
       <dependencies>
         <dependency>
           <groupId>org.actframework</groupId>
           <artifactId>act-ebean2</artifactId>
+          <version>${act-ebean.version}</version>
         </dependency>
         <dependency>
           <groupId>io.ebean</groupId>
@@ -155,6 +232,52 @@
         </dependency>
       </dependencies>
     </profile>
+    <profile>
+      <id>hibernate_pgsql</id>
+      <build>
+        <finalName>teb-act-hibernate-pgsql</finalName>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.actframework</groupId>
+          <artifactId>act-hibernate</artifactId>
+          <version>${act-hibernate.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>org.postgresql</groupId>
+          <artifactId>postgresql</artifactId>
+          <version>${postgres-jdbc.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>com.zaxxer</groupId>
+          <artifactId>HikariCP</artifactId>
+          <version>${HikariCP.version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>eclipselink_pgsql</id>
+      <build>
+        <finalName>teb-act-eclipselink-pgsql</finalName>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.actframework</groupId>
+          <artifactId>act-eclipselink</artifactId>
+          <version>${act-eclipselink.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>org.postgresql</groupId>
+          <artifactId>postgresql</artifactId>
+          <version>${postgres-jdbc.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>com.zaxxer</groupId>
+          <artifactId>HikariCP</artifactId>
+          <version>${HikariCP.version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
   </profiles>
 
 </project>

+ 24 - 0
frameworks/Java/act/setup-ebean-mysql-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends mysql java maven
+
+mvn -Pebean_mysql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=ebean_mysql_rythm -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 2 - 2
frameworks/Java/act/setup-ebean-mysql.sh

@@ -2,7 +2,7 @@
 
 fw_depends mysql java maven
 
-mvn -Pmysql clean package
+mvn -Pebean_mysql clean package
 cd target/dist
 unzip *.zip
 
@@ -21,4 +21,4 @@ echo
 
 JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
 
-java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=mysql -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY &
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=ebean_mysql -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-ebean-pgsql-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends postgresql java maven
+
+mvn -Pebean_pgsql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=ebean_pgsql_rythm -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 2 - 2
frameworks/Java/act/setup-ebean-pgsql.sh

@@ -2,7 +2,7 @@
 
 fw_depends postgresql java maven
 
-mvn -Ppgsql clean package
+mvn -Pebean_pgsql clean package
 cd target/dist
 unzip *.zip
 
@@ -21,4 +21,4 @@ echo
 
 JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
 
-java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=pgsql -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY &
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=ebean_pgsql -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-eclipselink-mysql-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends mysql java maven
+
+mvn -Peclipselink_mysql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=eclipselink_mysql_rythm -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-eclipselink-mysql.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends mysql java maven
+
+mvn -Peclipselink_mysql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=eclipselink_mysql -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-eclipselink-pgsql-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends postgresql java maven
+
+mvn -Peclipselink_pgsql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=eclipselink_pgsql_rythm -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-eclipselink-pgsql.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends postgresql java maven
+
+mvn -Peclipselink_pgsql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=eclipselink_pgsql -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-hibernate-mysql-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends mysql java maven
+
+mvn -Phibernate_mysql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=hibernate_mysql_rythm -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-hibernate-mysql.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends mysql java maven
+
+mvn -Phibernate_mysql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=hibernate_mysql -Dxio.worker_threads.max=256 -Dmysql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-hibernate-pgsql-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends postgresql java maven
+
+mvn -Phibernate_pgsql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=hibernate_pgsql_rythm -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-hibernate-pgsql.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends postgresql java maven
+
+mvn -Phibernate_pgsql clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=hibernate_pgsql -Dxio.worker_threads.max=256 -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 1 - 1
frameworks/Java/act/setup-json-plaintext.sh

@@ -20,4 +20,4 @@ echo
 
 JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
 
-java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=json_plaintext -Dxio.worker_threads.max=256 -cp "$CP" $APP_ENTRY &
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=json_plaintext -Dxio.worker_threads.max=256 -cp "$CP" $APP_ENTRY 

+ 24 - 0
frameworks/Java/act/setup-morphia-mongo-rythm.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+fw_depends mongodb java maven
+
+mvn -U -Pmongo clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
+fi
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=mongo_rythm -Dxio.worker_threads.max=256 -Dmongo.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 1 - 1
frameworks/Java/act/setup-morphia-mongo.sh

@@ -21,4 +21,4 @@ echo
 
 JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
 
-java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=mongo -Dxio.worker_threads.max=256 -Dmongo.host=${DBHOST} -cp "$CP" $APP_ENTRY &
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=mongo -Dxio.worker_threads.max=256 -Dmongo.host=${DBHOST} -cp "$CP" $APP_ENTRY 

+ 12 - 7
frameworks/Java/act/src/main/java/com/techempower/act/controller/WorldController.java

@@ -24,11 +24,11 @@ import static act.controller.Controller.Util.notFoundIfNull;
 
 import act.app.conf.AutoConfig;
 import act.db.Dao;
+import act.db.sql.tx.Transactional;
 import act.sys.Env;
 import act.util.Global;
 import com.techempower.act.AppEntry;
 import com.techempower.act.model.World;
-import io.ebean.annotation.Transactional;
 import org.osgl.$;
 import org.osgl.http.H;
 import org.osgl.mvc.annotation.GetAction;
@@ -53,7 +53,11 @@ public class WorldController {
      */
     private static final Const<Integer> WORLD_MAX_ROW = $.constant();
 
-    private static boolean BATCH_SAVE = true;
+    /**
+     * This constant will get populated with the value set in
+     * `app.world.batch_save` configuration item
+     */
+    private static final Const<Boolean> WORLD_BATCH_SAVE = $.constant(false);
 
     @Global
     @Inject
@@ -67,7 +71,6 @@ public class WorldController {
     }
 
     @GetAction("queries")
-    @Transactional(readOnly = true)
     @SessionFree
     public final World[] multipleQueries(String queries) {
         int q = regulateQueries(queries);
@@ -88,20 +91,22 @@ public class WorldController {
 
     private List<World> doUpdate(int q) {
         List<World> retVal = new ArrayList<>(q);
+        boolean batchSave = WORLD_BATCH_SAVE.get();
         for (int i = 0; i < q; ++i) {
-            retVal.add(findAndModifyOne());
+            retVal.add(findAndModifyOne(!batchSave));
         }
-        if (BATCH_SAVE) {
+        if (WORLD_BATCH_SAVE.get()) {
             dao.save(retVal);
         }
         return retVal;
     }
 
-    private World findAndModifyOne() {
+    @Transactional
+    private World findAndModifyOne(boolean save) {
         World world = findOne();
         notFoundIfNull(world);
         world.randomNumber = randomWorldNumber();
-        if (!BATCH_SAVE) {
+        if (save) {
             dao.save(world);
         }
         return world;

+ 2 - 0
frameworks/Java/act/src/main/java/com/techempower/act/model/Fortune.java

@@ -26,8 +26,10 @@ import com.techempower.act.AppEntry;
 
 import javax.persistence.Entity;
 import javax.persistence.Id;
+import javax.persistence.Table;
 
 @Entity(name = "fortune")
+@Table(name = "fortune")
 @org.mongodb.morphia.annotations.Entity(value = "fortune", noClassnameStored = true)
 @Env.RequireProfile(value = AppEntry.PROFILE_JSON_PLAINTEXT, except = true)
 public final class Fortune implements SimpleBean, Comparable<Fortune> {

+ 2 - 4
frameworks/Java/act/src/main/java/com/techempower/act/model/World.java

@@ -24,12 +24,10 @@ import act.sys.Env;
 import act.util.SimpleBean;
 import com.techempower.act.AppEntry;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity(name = "world")
+@Table(name = "world")
 @org.mongodb.morphia.annotations.Entity(value = "world", noClassnameStored = true)
 @Env.RequireProfile(value = AppEntry.PROFILE_JSON_PLAINTEXT, except = true)
 public class World implements SimpleBean {

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/app.properties

@@ -12,3 +12,4 @@ app.world.max_row=10000
 
 xio.worker_threads.max=256
 
+view.default=mustache

+ 2 - 1
frameworks/Java/act/src/main/resources/conf/mysql/db.properties → frameworks/Java/act/src/main/resources/conf/ebean_mysql/db.properties

@@ -6,10 +6,11 @@ db.impl=act.db.ebean2.EbeanPlugin
 db.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC&useSSL=false
 db.username=benchmarkdbuser
 db.password=benchmarkdbpass
+db.isolationLevel=2
 db.maxConnections=256
 db.minConnections=128
 db.poolServerPrepStmts=true
-db.autoCommit=true
+db.autoCommit=false
 db.prepStmtCacheSqlLimit=2048
 db.prepStmtCacheSize=4096
 db.alwaysSendSetIsolation=false

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/ebean_mysql_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 27 - 0
frameworks/Java/act/src/main/resources/conf/ebean_mysql_rythm/db.properties

@@ -0,0 +1,27 @@
+mysql.host=localhost
+
+app.batch_save=false
+
+db.impl=act.db.ebean2.EbeanPlugin
+db.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC&useSSL=false
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.poolServerPrepStmts=true
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 2 - 1
frameworks/Java/act/src/main/resources/conf/pgsql/db.properties → frameworks/Java/act/src/main/resources/conf/ebean_pgsql/db.properties

@@ -6,9 +6,10 @@ db.impl=act.db.ebean2.EbeanPlugin
 db.url=jdbc:postgresql://${pgsql.host}:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
 db.username=benchmarkdbuser
 db.password=benchmarkdbpass
+db.isolationLevel=2
 db.maxConnections=256
 db.minConnections=128
-db.autoCommit=true
+db.autoCommit=false
 db.prepStmtCacheSqlLimit=2048
 db.prepStmtCacheSize=4096
 db.alwaysSendSetIsolation=false

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/ebean_pgsql_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 26 - 0
frameworks/Java/act/src/main/resources/conf/ebean_pgsql_rythm/db.properties

@@ -0,0 +1,26 @@
+pgsql.host=localhost
+
+app.batch.save=false
+
+db.impl=act.db.ebean2.EbeanPlugin
+db.url=jdbc:postgresql://${pgsql.host}:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 27 - 0
frameworks/Java/act/src/main/resources/conf/eclipselink_mysql/db.properties

@@ -0,0 +1,27 @@
+mysql.host=localhost
+
+app.batch_save=false
+
+db.impl=act.db.eclipselink.EclipseLinkPlugin
+db.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC&useSSL=false
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.poolServerPrepStmts=true
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/eclipselink_mysql_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 27 - 0
frameworks/Java/act/src/main/resources/conf/eclipselink_mysql_rythm/db.properties

@@ -0,0 +1,27 @@
+mysql.host=localhost
+
+app.batch_save=false
+
+db.impl=act.db.eclipselink.EclipseLinkPlugin
+db.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC&useSSL=false
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.poolServerPrepStmts=true
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 26 - 0
frameworks/Java/act/src/main/resources/conf/eclipselink_pgsql/db.properties

@@ -0,0 +1,26 @@
+pgsql.host=localhost
+
+app.batch.save=false
+
+db.impl=act.db.eclipselink.EclipseLinkPlugin
+db.url=jdbc:postgresql://${pgsql.host}:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/eclipselink_pgsql_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 26 - 0
frameworks/Java/act/src/main/resources/conf/eclipselink_pgsql_rythm/db.properties

@@ -0,0 +1,26 @@
+pgsql.host=localhost
+
+app.batch.save=false
+
+db.impl=act.db.eclipselink.EclipseLinkPlugin
+db.url=jdbc:postgresql://${pgsql.host}:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 27 - 0
frameworks/Java/act/src/main/resources/conf/hibernate_mysql/db.properties

@@ -0,0 +1,27 @@
+mysql.host=localhost
+
+app.batch_save=false
+
+db.impl=act.db.hibernate.HibernatePlugin
+db.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC&useSSL=false
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.poolServerPrepStmts=true
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/hibernate_mysql_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 27 - 0
frameworks/Java/act/src/main/resources/conf/hibernate_mysql_rythm/db.properties

@@ -0,0 +1,27 @@
+mysql.host=localhost
+
+app.batch_save=false
+
+db.impl=act.db.hibernate.HibernatePlugin
+db.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC&useSSL=false
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.poolServerPrepStmts=true
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 26 - 0
frameworks/Java/act/src/main/resources/conf/hibernate_pgsql/db.properties

@@ -0,0 +1,26 @@
+pgsql.host=localhost
+
+app.batch.save=false
+
+db.impl=act.db.hibernate.HibernatePlugin
+db.url=jdbc:postgresql://${pgsql.host}:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/hibernate_pgsql_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 26 - 0
frameworks/Java/act/src/main/resources/conf/hibernate_pgsql_rythm/db.properties

@@ -0,0 +1,26 @@
+pgsql.host=localhost
+
+app.batch.save=false
+
+db.impl=act.db.hibernate.HibernatePlugin
+db.url=jdbc:postgresql://${pgsql.host}:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
+db.username=benchmarkdbuser
+db.password=benchmarkdbpass
+db.isolationLevel=2
+db.maxConnections=256
+db.minConnections=128
+db.autoCommit=false
+db.prepStmtCacheSqlLimit=2048
+db.prepStmtCacheSize=4096
+db.alwaysSendSetIsolation=false
+db.cacheCallableStmts=true
+db.cachePrepStmts=true
+db.useLocalSessionState=true
+db.jdbcCompliantTruncation=false
+db.elideSetAutoCommits=true
+db.zeroDateTimeBehavior=convertToNull
+db.traceProtocol=false
+db.useUnbufferedInput=false
+db.useReadAheadInput=false
+db.maintainTimeStats=false
+db.cacheRSMetadata=true

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/mongo_rythm/app.properties

@@ -0,0 +1 @@
+view.default=rythm

+ 4 - 0
frameworks/Java/act/src/main/resources/conf/mongo_rythm/db.properties

@@ -0,0 +1,4 @@
+mongo.host=localhost
+
+db.impl=act.db.morphia.MorphiaPlugin
+db.uri=mongodb://${mongo.host}/hello_world?maxPoolSize=256

+ 20 - 0
frameworks/Java/act/src/main/resources/mustache/fortunes.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>Fortunes</title>
+</head>
+<body>
+<table>
+  <tr>
+    <th>id</th>
+    <th>message</th>
+  </tr>
+  {{#fortunes}}
+  <tr>
+    <td>{{id}}</td>
+    <td>{{message}}</td>
+  </tr>
+  {{/fortunes}}
+</table>
+</body>
+</html>