Skip to content

Commit 5bc60fa

Browse files
vshanbhalor6
andauthored
BAEL-7289 new module quarkus-resources added (#19000)
* BAEL-9141 quarkus-infinispan module code started * BAEL-9141 quarkus-infinispan module moved to extensions * BAEL-9141 quarkus-infinispan test cases modified * checked implementation of annotation generated cache is indeed infinispan * tests related to quarkus-infinispan-cache extention * module renamed, removed references to quarkus-infinispan-cache * BAEL-9141 services split into two classes * removed unwanted libraries, more tests added * BAEL-9141 sysout and delay added to getValueFromCache to simulate long running computation * BAEL-9141 minor formatting and readability changes * BAEL-9141 unit test class name modified * BAEL-9141 junit dependency commented * BAEL-9141 junit dependency uncommented * BAEL-9141 junit dependency setting changed * BAEL-9141 quarkus platform version changed * BAEL-9141 dependency versions of quarkus, junit modified to match another quarkus-mcp-lanchain module * remove overridden properties Removed maven.compiler.release and junit-jupiter.version properties. * update library versions * upgraded quarkus version, removed reference to infinispan-commons * BAEL-9141 moved quarkus-infinispan-embedded to quarkus-modules * BAEL-9141 removed override of junit version * update junit version * BAEL-9141 removed native build config * BAEL-9141 system property added related to zipfs * BAEL-9141 unit tests disabled. Want to check if build passes without those * remove path config * BAEL-9141 removed all old code. basic hello world version to test if CI build passes * BAEL-9141 following configuration of quarkus-clientbasicauth * BAEL-9141 using newer versions of quarkus * BAEL-9141 using older version of Junit * BAEL-9141 infinispan code brought back * BAEL-9141 quarkus version changed * BAEL-9141 removed quarkus-rest dependency as we are not using it * BAEL-7289 new quarkus-module created with basic hello world code * code written for accessing resources * BAEL-7289 modified file name for json file * BAEL-7289 added rest-jackson dependency * BAEL-7289 removed unwanted hello world route * BAEL-7289 added resource-config.json * BAEL-7289 added web resources * BAEL-7289 test case method names modified * BAEL-7289 changes based on review of article --------- Co-authored-by: Loredana Crusoveanu <[email protected]> Co-authored-by: Vishal Shanbhag <>
1 parent 510776d commit 5bc60fa

File tree

14 files changed

+511
-0
lines changed

14 files changed

+511
-0
lines changed

quarkus-modules/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<module>quarkus-management-interface</module>
3232
<module>quarkus-mcp-langchain</module>
3333
<module>quarkus-panache</module>
34+
<module>quarkus-resources</module>
3435
<!-- <module>quarkus-rbac</module> --> <!-- JAVA-42048 -->
3536
<module>quarkus-testcontainers</module>
3637
<module>quarkus-virtual-threads</module>
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>com.baeldung.quarkus</groupId>
5+
<artifactId>quarkus-resources</artifactId>
6+
<version>1.0.0-SNAPSHOT</version>
7+
<parent>
8+
<groupId>com.baeldung</groupId>
9+
<artifactId>quarkus-modules</artifactId>
10+
<version>1.0.0-SNAPSHOT</version>
11+
</parent>
12+
<dependencyManagement>
13+
<dependencies>
14+
<dependency>
15+
<groupId>io.quarkus.platform</groupId>
16+
<artifactId>quarkus-bom</artifactId>
17+
<version>${quarkus.platform.version}</version>
18+
<type>pom</type>
19+
<scope>import</scope>
20+
</dependency>
21+
</dependencies>
22+
</dependencyManagement>
23+
24+
<dependencies>
25+
<dependency>
26+
<groupId>io.quarkus</groupId>
27+
<artifactId>quarkus-arc</artifactId>
28+
</dependency>
29+
<dependency>
30+
<groupId>io.quarkus</groupId>
31+
<artifactId>quarkus-rest</artifactId>
32+
</dependency>
33+
<dependency>
34+
<groupId>io.quarkus</groupId>
35+
<artifactId>quarkus-rest-jackson</artifactId>
36+
</dependency>
37+
<dependency>
38+
<groupId>io.quarkus</groupId>
39+
<artifactId>quarkus-junit5</artifactId>
40+
<scope>test</scope>
41+
</dependency>
42+
<dependency>
43+
<groupId>io.rest-assured</groupId>
44+
<artifactId>rest-assured</artifactId>
45+
<scope>test</scope>
46+
</dependency>
47+
</dependencies>
48+
49+
<build>
50+
<plugins>
51+
<plugin>
52+
<groupId>io.quarkus.platform</groupId>
53+
<artifactId>quarkus-maven-plugin</artifactId>
54+
<version>${quarkus.platform.version}</version>
55+
<extensions>true</extensions>
56+
<executions>
57+
<execution>
58+
<goals>
59+
<goal>build</goal>
60+
<goal>generate-code</goal>
61+
<goal>generate-code-tests</goal>
62+
<goal>native-image-agent</goal>
63+
</goals>
64+
</execution>
65+
</executions>
66+
</plugin>
67+
<plugin>
68+
<artifactId>maven-compiler-plugin</artifactId>
69+
<configuration>
70+
<parameters>true</parameters>
71+
</configuration>
72+
</plugin>
73+
<plugin>
74+
<artifactId>maven-surefire-plugin</artifactId>
75+
<configuration>
76+
<argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
77+
<systemPropertyVariables>
78+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
79+
<maven.home>${maven.home}</maven.home>
80+
</systemPropertyVariables>
81+
</configuration>
82+
</plugin>
83+
<plugin>
84+
<artifactId>maven-failsafe-plugin</artifactId>
85+
<executions>
86+
<execution>
87+
<goals>
88+
<goal>integration-test</goal>
89+
<goal>verify</goal>
90+
</goals>
91+
</execution>
92+
</executions>
93+
<configuration>
94+
<argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
95+
<systemPropertyVariables>
96+
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
97+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
98+
<maven.home>${maven.home}</maven.home>
99+
</systemPropertyVariables>
100+
</configuration>
101+
</plugin>
102+
</plugins>
103+
</build>
104+
105+
<profiles>
106+
<profile>
107+
<id>native</id>
108+
<activation>
109+
<property>
110+
<name>native</name>
111+
</property>
112+
</activation>
113+
<properties>
114+
<quarkus.package.jar.enabled>false</quarkus.package.jar.enabled>
115+
<skipITs>false</skipITs>
116+
<quarkus.native.enabled>true</quarkus.native.enabled>
117+
</properties>
118+
</profile>
119+
</profiles>
120+
<properties>
121+
<quarkus.platform.version>3.15.6</quarkus.platform.version>
122+
<skipITs>true</skipITs>
123+
<junit-jupiter.version>5.10.2</junit-jupiter.version>
124+
</properties>
125+
</project>
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
####
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
3+
#
4+
# Before building the container image run:
5+
#
6+
# ./mvnw package
7+
#
8+
# Then, build the image with:
9+
#
10+
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/quarkus-resources-jvm .
11+
#
12+
# Then run the container using:
13+
#
14+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-resources-jvm
15+
#
16+
# If you want to include the debug port into your docker image
17+
# you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005.
18+
# Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005
19+
# when running the container
20+
#
21+
# Then run the container using :
22+
#
23+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-resources-jvm
24+
#
25+
# This image uses the `run-java.sh` script to run the application.
26+
# This scripts computes the command line to execute your Java application, and
27+
# includes memory/GC tuning.
28+
# You can configure the behavior using the following environment properties:
29+
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") - Be aware that this will override
30+
# the default JVM options, use `JAVA_OPTS_APPEND` to append options
31+
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
32+
# in JAVA_OPTS (example: "-Dsome.property=foo")
33+
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
34+
# used to calculate a default maximal heap memory based on a containers restriction.
35+
# If used in a container without any memory constraints for the container then this
36+
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
37+
# of the container available memory as set here. The default is `50` which means 50%
38+
# of the available memory is used as an upper boundary. You can skip this mechanism by
39+
# setting this value to `0` in which case no `-Xmx` option is added.
40+
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
41+
# is used to calculate a default initial heap memory based on the maximum heap memory.
42+
# If used in a container without any memory constraints for the container then this
43+
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
44+
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
45+
# is used as the initial heap size. You can skip this mechanism by setting this value
46+
# to `0` in which case no `-Xms` option is added (example: "25")
47+
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
48+
# This is used to calculate the maximum value of the initial heap memory. If used in
49+
# a container without any memory constraints for the container then this option has
50+
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
51+
# here. The default is 4096MB which means the calculated value of `-Xms` never will
52+
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
53+
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
54+
# when things are happening. This option, if set to true, will set
55+
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
56+
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
57+
# true").
58+
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
59+
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
60+
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
61+
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
62+
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
63+
# (example: "20")
64+
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
65+
# (example: "40")
66+
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
67+
# (example: "4")
68+
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
69+
# previous GC times. (example: "90")
70+
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
71+
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
72+
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
73+
# contain the necessary JRE command-line options to specify the required GC, which
74+
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
75+
# - HTTPS_PROXY: The location of the https proxy. (example: "[email protected]:8080")
76+
# - HTTP_PROXY: The location of the http proxy. (example: "[email protected]:8080")
77+
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
78+
# accessed directly. (example: "foo.example.com,bar.example.com")
79+
#
80+
###
81+
FROM registry.access.redhat.com/ubi9/openjdk-21:1.23
82+
83+
ENV LANGUAGE='en_US:en'
84+
85+
86+
# We make four distinct layers so if there are application changes the library layers can be re-used
87+
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
88+
COPY --chown=185 target/quarkus-app/*.jar /deployments/
89+
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
90+
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
91+
92+
EXPOSE 8080
93+
USER 185
94+
ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
95+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
96+
97+
ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]
98+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
####
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
3+
#
4+
# Before building the container image run:
5+
#
6+
# ./mvnw package -Dquarkus.package.jar.type=legacy-jar
7+
#
8+
# Then, build the image with:
9+
#
10+
# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/quarkus-resources-legacy-jar .
11+
#
12+
# Then run the container using:
13+
#
14+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-resources-legacy-jar
15+
#
16+
# If you want to include the debug port into your docker image
17+
# you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005.
18+
# Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005
19+
# when running the container
20+
#
21+
# Then run the container using :
22+
#
23+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-resources-legacy-jar
24+
#
25+
# This image uses the `run-java.sh` script to run the application.
26+
# This scripts computes the command line to execute your Java application, and
27+
# includes memory/GC tuning.
28+
# You can configure the behavior using the following environment properties:
29+
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") - Be aware that this will override
30+
# the default JVM options, use `JAVA_OPTS_APPEND` to append options
31+
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
32+
# in JAVA_OPTS (example: "-Dsome.property=foo")
33+
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
34+
# used to calculate a default maximal heap memory based on a containers restriction.
35+
# If used in a container without any memory constraints for the container then this
36+
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
37+
# of the container available memory as set here. The default is `50` which means 50%
38+
# of the available memory is used as an upper boundary. You can skip this mechanism by
39+
# setting this value to `0` in which case no `-Xmx` option is added.
40+
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
41+
# is used to calculate a default initial heap memory based on the maximum heap memory.
42+
# If used in a container without any memory constraints for the container then this
43+
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
44+
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
45+
# is used as the initial heap size. You can skip this mechanism by setting this value
46+
# to `0` in which case no `-Xms` option is added (example: "25")
47+
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
48+
# This is used to calculate the maximum value of the initial heap memory. If used in
49+
# a container without any memory constraints for the container then this option has
50+
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
51+
# here. The default is 4096MB which means the calculated value of `-Xms` never will
52+
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
53+
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
54+
# when things are happening. This option, if set to true, will set
55+
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
56+
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
57+
# true").
58+
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
59+
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
60+
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
61+
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
62+
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
63+
# (example: "20")
64+
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
65+
# (example: "40")
66+
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
67+
# (example: "4")
68+
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
69+
# previous GC times. (example: "90")
70+
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
71+
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
72+
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
73+
# contain the necessary JRE command-line options to specify the required GC, which
74+
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
75+
# - HTTPS_PROXY: The location of the https proxy. (example: "[email protected]:8080")
76+
# - HTTP_PROXY: The location of the http proxy. (example: "[email protected]:8080")
77+
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
78+
# accessed directly. (example: "foo.example.com,bar.example.com")
79+
#
80+
###
81+
FROM registry.access.redhat.com/ubi9/openjdk-21:1.23
82+
83+
ENV LANGUAGE='en_US:en'
84+
85+
86+
COPY target/lib/* /deployments/lib/
87+
COPY target/*-runner.jar /deployments/quarkus-run.jar
88+
89+
EXPOSE 8080
90+
USER 185
91+
ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
92+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
93+
94+
ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
####
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
3+
#
4+
# Before building the container image run:
5+
#
6+
# ./mvnw package -Dnative
7+
#
8+
# Then, build the image with:
9+
#
10+
# docker build -f src/main/docker/Dockerfile.native -t quarkus/quarkus-resources .
11+
#
12+
# Then run the container using:
13+
#
14+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-resources
15+
#
16+
# The ` registry.access.redhat.com/ubi9/ubi-minimal:9.6` base image is based on UBI 9.
17+
# To use UBI 8, switch to `quay.io/ubi8/ubi-minimal:8.10`.
18+
###
19+
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.6
20+
WORKDIR /work/
21+
RUN chown 1001 /work \
22+
&& chmod "g+rwX" /work \
23+
&& chown 1001:root /work
24+
COPY --chown=1001:root --chmod=0755 target/*-runner /work/application
25+
26+
EXPOSE 8080
27+
USER 1001
28+
29+
ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
####
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
3+
# It uses a micro base image, tuned for Quarkus native executables.
4+
# It reduces the size of the resulting container image.
5+
# Check https://quarkus.io/guides/quarkus-runtime-base-image for further information about this image.
6+
#
7+
# Before building the container image run:
8+
#
9+
# ./mvnw package -Dnative
10+
#
11+
# Then, build the image with:
12+
#
13+
# docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/quarkus-resources .
14+
#
15+
# Then run the container using:
16+
#
17+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-resources
18+
#
19+
# The `quay.io/quarkus/ubi9-quarkus-micro-image:2.0` base image is based on UBI 9.
20+
# To use UBI 8, switch to `quay.io/quarkus/quarkus-micro-image:2.0`.
21+
###
22+
FROM quay.io/quarkus/ubi9-quarkus-micro-image:2.0
23+
WORKDIR /work/
24+
RUN chown 1001 /work \
25+
&& chmod "g+rwX" /work \
26+
&& chown 1001:root /work
27+
COPY --chown=1001:root --chmod=0755 target/*-runner /work/application
28+
29+
EXPOSE 8080
30+
USER 1001
31+
32+
ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]

0 commit comments

Comments
 (0)