From 8ef2b732047d670db5b4ee2412cb060b32081e1f Mon Sep 17 00:00:00 2001
From: Emmanuel Bruno <emmanuel.bruno@univ-tln.fr>
Date: Mon, 29 Nov 2021 16:46:05 +0100
Subject: [PATCH] improves H2 docker images, URL, port, Psql compatibility.

---
 docker-compose.yml                            | 19 +++++--------------
 docker/Dockerfile                             | 12 ++++++------
 docker/post-boot-commands.asadmin             |  4 +---
 .../bruno/samples/jee91/dao/Person.java       |  2 ++
 .../main/resources/META-INF/persistence.xml   | 10 +++++-----
 restApp/src/main/resources/insert.sql         |  4 ++++
 6 files changed, 23 insertions(+), 28 deletions(-)
 create mode 100644 restApp/src/main/resources/insert.sql

diff --git a/docker-compose.yml b/docker-compose.yml
index eaf9ddd..096bec6 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,23 +15,14 @@ services:
     depends_on:
       - db
   db:
-    image: oscarfonts/h2:1.4.199
+    image: brunoe/h2:develop
     ports:
-      - "1521:1521"
-      - "8081:81"
+      - "8082:8082"
+      - "9092:9092"
     environment:
-      H2_OPTIONS: '-ifNotExists'
+        H2_OPTIONS: '-ifNotExists -webAllowOthers -tcpAllowOthers -pgAllowOthers -ifNotExists'
     volumes:
-      - h2data:/opt/h2-data
-#  db:
-#    image: brunoe/h2
-#    ports:
-#      - "8081:8082"
-#      - "1521:8092"
-#    environment:
-#        H2_OPTIONS: '-ifNotExists -webAllowOthers -tcpAllowOthers -pgAllowOthers -ifNotExists'
-#    volumes:
-#      - h2data:/h2-data
+      - h2data:/h2-data
 
 volumes:
   h2data:
\ No newline at end of file
diff --git a/docker/Dockerfile b/docker/Dockerfile
index faf446d..5ae1c98 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -8,7 +8,7 @@ RUN --mount=type=cache,id=mvncache,target=/root/.m2/repository,rw \
 	mvn -B clean package
 
 ### Then we add the builded war to a JEE server.
-FROM payara/server-full:5.2021.9-jdk11
+FROM payara/server-full:5.2021.9-jdk11 as server
 ARG STORE_PASSWORD=changeit
 ## Download the JDBC driver
 USER root
@@ -29,8 +29,8 @@ COPY --from=build /app/utils/src/main/resources/mycert-pub.p12  /app/utils/src/m
 RUN keytool -importkeystore -noprompt -destkeystore /opt/payara/appserver/glassfish/domains/domain1/config/keystore.jks -srckeystore /tmp/mycert.p12 -srcstoretype PKCS12 -alias mycert -srcstorepass storepass -deststorepass ${STORE_PASSWORD} -deststoretype pkcs12 && \
     keytool -importcert -noprompt -trustcacerts -destkeystore /opt/payara/appserver/glassfish/domains/domain1/config/cacerts.jks -file /tmp/mycert.crt -alias mycert -srcstorepass storepass -deststorepass ${STORE_PASSWORD} -deststoretype pkcs12
 
-# COPY target/*.war $DEPLOY_DIR
-#COPY --from=build /app/restApp/target/*.war \
-#                  $DEPLOY_DIR
-#COPY --from=build /app/wsApp/target/*.war \
-#                  $DEPLOY_DIR
+FROM server as production
+COPY --from=build /app/restApp/target/*.war \
+                  $DEPLOY_DIR
+COPY --from=build /app/wsApp/target/*.war \
+                  $DEPLOY_DIR
diff --git a/docker/post-boot-commands.asadmin b/docker/post-boot-commands.asadmin
index cbdea7f..2bd8a43 100755
--- a/docker/post-boot-commands.asadmin
+++ b/docker/post-boot-commands.asadmin
@@ -1,9 +1,7 @@
 set-hazelcast-configuration --enabled=true --dynamic=true
 
 add-library  /tmp/h2.jar
-# create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.ConnectionPoolDataSource --property password=password:user=user:url="jdbc:h2:tcp://db:1521/payara;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH" H2-pool
-create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.ConnectionPoolDataSource --property password=password:user=user:url="jdbc:h2:tcp://db:1521/payara" H2-pool
+create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.ConnectionPoolDataSource --property password=password:user=user:url="jdbc:h2:tcp://db:9092/payara;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE" H2-pool
 create-jdbc-resource --connectionpoolid H2-pool jdbc/h2-pool
 
-
 # set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=mycert
diff --git a/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java b/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
index 013071e..c7cf306 100644
--- a/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
+++ b/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
@@ -1,6 +1,7 @@
 package fr.univtln.bruno.samples.jee91.dao;
 
 import jakarta.persistence.*;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 @Entity
 @NamedQueries({
@@ -10,6 +11,7 @@ import jakarta.persistence.*;
                 name = "Person.findAllOrderedByName",
                 query = "SELECT p FROM Person p ORDER BY p.name")
 })
+@XmlRootElement
 public class Person {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/restApp/src/main/resources/META-INF/persistence.xml b/restApp/src/main/resources/META-INF/persistence.xml
index b62e0cb..50230cc 100644
--- a/restApp/src/main/resources/META-INF/persistence.xml
+++ b/restApp/src/main/resources/META-INF/persistence.xml
@@ -7,12 +7,12 @@
         <class>fr.univtln.bruno.samples.jee91.dao.Person</class>
 
         <properties>
-            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create" />
-            <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create" />
-            <property name="javax.persistence.schema-generation.scripts.create-target" value="sampleCreate.ddl" />
-            <property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl" />
+            <property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create" />
+            <property name="jakarta.persistence.schema-generation.scripts.action" value="drop-and-create" />
+            <property name="jakarta.persistence.schema-generation.scripts.create-target" value="sampleCreate.ddl" />
+            <property name="jakarta.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl" />
 
-            <!--property name="javax.persistence.sql-load-script-source" value="insert.sql" /-->
+            <property name="jakarta.persistence.sql-load-script-source" value="insert.sql" />
         </properties>
     </persistence-unit>
 </persistence>
\ No newline at end of file
diff --git a/restApp/src/main/resources/insert.sql b/restApp/src/main/resources/insert.sql
new file mode 100644
index 0000000..4f6d3cd
--- /dev/null
+++ b/restApp/src/main/resources/insert.sql
@@ -0,0 +1,4 @@
+INSERT INTO "public"."person" ("name") VALUES ('pierre');
+INSERT INTO "public"."person" ("name") VALUES ('Marie');
+INSERT INTO "public"."person" ("name") VALUES ('jacques');
+INSERT INTO "public"."person" ("name") VALUES ('Annie');
\ No newline at end of file
-- 
GitLab