diff --git a/helidon/.helidon b/helidon/.helidon index 160fb46..4836e90 100644 --- a/helidon/.helidon +++ b/helidon/.helidon @@ -1,17 +1,6 @@ -# Helidon Project Configuration -# >>> This is a generated file, do not edit. <<< -# -#Thu Jan 04 15:40:39 MST 2024 -helidon.version=4.0.2 -project.archetype=quickstart -project.classdirs=/Users/mraible/dev/auth0/auth0-java-rest-api-examples/helidon/target/classes -project.dependencies=/Users/mraible/.m2/repository/io/helidon/microprofile/bundles/helidon-microprofile-core/4.0.2/helidon-microprofile-core-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/server/helidon-microprofile-server/4.0.2/helidon-microprofile-server-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/observe/helidon-webserver-observe/4.0.2/helidon-webserver-observe-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/cdi/helidon-microprofile-cdi/4.0.2/helidon-microprofile-cdi-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/helidon/4.0.2/helidon-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/weld/weld-se-core/4.0.2/weld-se-core-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/weld/weld-core-impl/4.0.2/weld-core-impl-4.0.2.jar,/Users/mraible/.m2/repository/org/jboss/weld/environment/weld-environment-common/5.1.1.SP2/weld-environment-common-5.1.1.SP2.jar,/Users/mraible/.m2/repository/org/jboss/weld/weld-api/5.0.SP3/weld-api-5.0.SP3.jar,/Users/mraible/.m2/repository/org/jboss/weld/weld-spi/5.0.SP3/weld-spi-5.0.SP3.jar,/Users/mraible/.m2/repository/org/jboss/classfilewriter/jboss-classfilewriter/1.3.0.Final/jboss-classfilewriter-1.3.0.Final.jar,/Users/mraible/.m2/repository/org/jboss/weld/weld-lite-extension-translator/5.1.1.SP2/weld-lite-extension-translator-5.1.1.SP2.jar,/Users/mraible/.m2/repository/org/jboss/logging/jboss-logging-processor/2.2.1.Final/jboss-logging-processor-2.2.1.Final.jar,/Users/mraible/.m2/repository/org/jboss/logging/jboss-logging-annotations/2.2.1.Final/jboss-logging-annotations-2.2.1.Final.jar,/Users/mraible/.m2/repository/org/jboss/jdeparser/jdeparser/2.0.3.Final/jdeparser-2.0.3.Final.jar,/Users/mraible/.m2/repository/io/helidon/common/features/helidon-common-features/4.0.2/helidon-common-features-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/features/helidon-common-features-api/4.0.2/helidon-common-features-api-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/helidon-webserver/4.0.2/helidon-webserver-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-socket/4.0.2/helidon-common-socket-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-key-util/4.0.2/helidon-common-key-util-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-task/4.0.2/helidon-common-task-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-tls/4.0.2/helidon-common-tls-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/http/media/helidon-http-media/4.0.2/helidon-http-media-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/http/encoding/helidon-http-encoding/4.0.2/helidon-http-encoding-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/helidon-webserver-static-content/4.0.2/helidon-webserver-static-content-4.0.2.jar,/Users/mraible/.m2/repository/jakarta/enterprise/jakarta.enterprise.cdi-api/4.0.1/jakarta.enterprise.cdi-api-4.0.1.jar,/Users/mraible/.m2/repository/jakarta/enterprise/jakarta.enterprise.lang-model/4.0.1/jakarta.enterprise.lang-model-4.0.1.jar,/Users/mraible/.m2/repository/jakarta/el/jakarta.el-api/5.0.1/jakarta.el-api-5.0.1.jar,/Users/mraible/.m2/repository/io/helidon/http/media/helidon-http-media-jsonp/4.0.2/helidon-http-media-jsonp-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/helidon-webserver-context/4.0.2/helidon-webserver-context-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/jersey/helidon-jersey-server/4.0.2/helidon-jersey-server-4.0.2.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/core/jersey-server/3.1.4/jersey-server-3.1.4.jar,/Users/mraible/.m2/repository/jakarta/validation/jakarta.validation-api/3.0.0/jakarta.validation-api-3.0.0.jar,/Users/mraible/.m2/repository/io/helidon/config/helidon-config-yaml/4.0.2/helidon-config-yaml-4.0.2.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/ext/cdi/jersey-weld2-se/3.1.4/jersey-weld2-se-3.1.4.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/ext/cdi/jersey-cdi1x/3.1.4/jersey-cdi1x-3.1.4.jar,/Users/mraible/.m2/repository/io/helidon/jersey/helidon-jersey-media-jsonp/4.0.2/helidon-jersey-media-jsonp-4.0.2.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/media/jersey-media-json-processing/3.1.4/jersey-media-json-processing-3.1.4.jar,/Users/mraible/.m2/repository/org/eclipse/parsson/parsson-media/1.1.5/parsson-media-1.1.5.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/config/helidon-microprofile-config/4.0.2/helidon-microprofile-config-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/config/helidon-config-mp/4.0.2/helidon-config-mp-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/config/helidon-config-encryption/4.0.2/helidon-config-encryption-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-crypto/4.0.2/helidon-common-crypto-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/config/helidon-config-object-mapping/4.0.2/helidon-config-object-mapping-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/openapi/helidon-microprofile-openapi/4.0.2/helidon-microprofile-openapi-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/openapi/helidon-openapi/4.0.2/helidon-openapi-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-config/4.0.2/helidon-common-config-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-mapper/4.0.2/helidon-common-mapper-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-media-type/4.0.2/helidon-common-media-type-4.0.2.jar,/Users/mraible/.m2/repository/org/eclipse/microprofile/config/microprofile-config-api/3.0.3/microprofile-config-api-3.0.3.jar,/Users/mraible/.m2/repository/org/eclipse/microprofile/openapi/microprofile-openapi-api/3.1.1/microprofile-openapi-api-3.1.1.jar,/Users/mraible/.m2/repository/io/helidon/webserver/helidon-webserver-service-common/4.0.2/helidon-webserver-service-common-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/helidon-webserver-cors/4.0.2/helidon-webserver-cors-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/cors/helidon-cors/4.0.2/helidon-cors-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/service-common/helidon-microprofile-service-common/4.0.2/helidon-microprofile-service-common-4.0.2.jar,/Users/mraible/.m2/repository/io/smallrye/smallrye-open-api-core/3.3.4/smallrye-open-api-core-3.3.4.jar,/Users/mraible/.m2/repository/org/jboss/logging/jboss-logging/3.5.3.Final/jboss-logging-3.5.3.Final.jar,/Users/mraible/.m2/repository/io/smallrye/smallrye-open-api-jaxrs/3.3.4/smallrye-open-api-jaxrs-3.3.4.jar,/Users/mraible/.m2/repository/org/yaml/snakeyaml/2.0/snakeyaml-2.0.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/health/helidon-microprofile-health/4.0.2/helidon-microprofile-health-4.0.2.jar,/Users/mraible/.m2/repository/org/eclipse/microprofile/health/microprofile-health-api/4.0.1/microprofile-health-api-4.0.1.jar,/Users/mraible/.m2/repository/io/helidon/webserver/observe/helidon-webserver-observe-health/4.0.2/helidon-webserver-observe-health-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/health/helidon-health/4.0.2/helidon-health-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/jwt/helidon-microprofile-jwt-auth/4.0.2/helidon-microprofile-jwt-auth-4.0.2.jar,/Users/mraible/.m2/repository/org/eclipse/microprofile/jwt/microprofile-jwt-auth-api/2.1/microprofile-jwt-auth-api-2.1.jar,/Users/mraible/.m2/repository/io/helidon/security/helidon-security-jwt/4.0.2/helidon-security-jwt-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/helidon-security-util/4.0.2/helidon-security-util-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-configurable/4.0.2/helidon-common-configurable-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/helidon-security/4.0.2/helidon-security-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-security/4.0.2/helidon-common-security-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-uri/4.0.2/helidon-common-uri-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-parameters/4.0.2/helidon-common-parameters-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/tracing/helidon-tracing/4.0.2/helidon-tracing-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/helidon-microprofile-security/4.0.2/helidon-microprofile-security-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/bundles/helidon-bundles-security/4.0.2/helidon-bundles-security-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/helidon-security-annotations/4.0.2/helidon-security-annotations-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-header/4.0.2/helidon-security-providers-header-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-http-auth/4.0.2/helidon-security-providers-http-auth-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-http-sign/4.0.2/helidon-security-providers-http-sign-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-jwt/4.0.2/helidon-security-providers-jwt-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-abac/4.0.2/helidon-security-providers-abac-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-oidc/4.0.2/helidon-security-providers-oidc-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-oidc-common/4.0.2/helidon-security-providers-oidc-common-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webclient/helidon-webclient/4.0.2/helidon-webclient-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webclient/helidon-webclient-api/4.0.2/helidon-webclient-api-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webclient/helidon-webclient-http1/4.0.2/helidon-webclient-http1-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webclient/helidon-webclient-security/4.0.2/helidon-webclient-security-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webclient/helidon-webclient-tracing/4.0.2/helidon-webclient-tracing-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/abac/helidon-security-abac-time/4.0.2/helidon-security-abac-time-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/abac/helidon-security-abac-role/4.0.2/helidon-security-abac-role-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/abac/helidon-security-abac-scope/4.0.2/helidon-security-abac-scope-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/abac/helidon-security-abac-policy/4.0.2/helidon-security-abac-policy-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/helidon-webserver-security/4.0.2/helidon-webserver-security-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/integration/helidon-security-integration-common/4.0.2/helidon-security-integration-common-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/tracing/helidon-tracing-config/4.0.2/helidon-tracing-config-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/jersey/helidon-jersey-common/4.0.2/helidon-jersey-common-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/config/helidon-config/4.0.2/helidon-config-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/inject/helidon-inject-api/4.0.2/helidon-inject-api-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-types/4.0.2/helidon-common-types-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/security/providers/helidon-security-providers-common/4.0.2/helidon-security-providers-common-4.0.2.jar,/Users/mraible/.m2/repository/jakarta/json/bind/jakarta.json.bind-api/3.0.0/jakarta.json.bind-api-3.0.0.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/media/jersey-media-json-binding/3.1.4/jersey-media-json-binding-3.1.4.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/core/jersey-common/3.1.4/jersey-common-3.1.4.jar,/Users/mraible/.m2/repository/jakarta/ws/rs/jakarta.ws.rs-api/3.1.0/jakarta.ws.rs-api-3.1.0.jar,/Users/mraible/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar,/Users/mraible/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar,/Users/mraible/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.3/osgi-resource-locator-1.0.3.jar,/Users/mraible/.m2/repository/jakarta/json/jakarta.json-api/2.1.1/jakarta.json-api-2.1.1.jar,/Users/mraible/.m2/repository/org/eclipse/parsson/parsson/1.1.5/parsson-1.1.5.jar,/Users/mraible/.m2/repository/org/eclipse/yasson/2.0.4/yasson-2.0.4.jar,/Users/mraible/.m2/repository/org/glassfish/jakarta.json/2.0.0/jakarta.json-2.0.0-module.jar,/Users/mraible/.m2/repository/io/helidon/logging/helidon-logging-jul/4.0.2/helidon-logging-jul-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-context/4.0.2/helidon-common-context-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/logging/helidon-logging-common/4.0.2/helidon-logging-common-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common/4.0.2/helidon-common-4.0.2.jar,/Users/mraible/.m2/repository/io/smallrye/jandex/3.1.2/jandex-3.1.2.jar,/Users/mraible/.m2/repository/jakarta/activation/jakarta.activation-api/2.1.1/jakarta.activation-api-2.1.1.jar,/Users/mraible/.m2/repository/org/eclipse/microprofile/metrics/microprofile-metrics-api/5.0.1/microprofile-metrics-api-5.0.1.jar,/Users/mraible/.m2/repository/jakarta/interceptor/jakarta.interceptor-api/2.1.0/jakarta.interceptor-api-2.1.0.jar,/Users/mraible/.m2/repository/io/helidon/microprofile/metrics/helidon-microprofile-metrics/4.0.2/helidon-microprofile-metrics-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/webserver/observe/helidon-webserver-observe-metrics/4.0.2/helidon-webserver-observe-metrics-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/metrics/providers/helidon-metrics-providers-micrometer/4.0.2/helidon-metrics-providers-micrometer-4.0.2.jar,/Users/mraible/.m2/repository/io/micrometer/micrometer-core/1.11.3/micrometer-core-1.11.3.jar,/Users/mraible/.m2/repository/io/micrometer/micrometer-commons/1.11.3/micrometer-commons-1.11.3.jar,/Users/mraible/.m2/repository/io/micrometer/micrometer-observation/1.11.3/micrometer-observation-1.11.3.jar,/Users/mraible/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar,/Users/mraible/.m2/repository/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar,/Users/mraible/.m2/repository/io/micrometer/micrometer-registry-prometheus/1.11.3/micrometer-registry-prometheus-1.11.3.jar,/Users/mraible/.m2/repository/io/prometheus/simpleclient_common/0.16.0/simpleclient_common-0.16.0.jar,/Users/mraible/.m2/repository/io/prometheus/simpleclient/0.16.0/simpleclient-0.16.0.jar,/Users/mraible/.m2/repository/io/prometheus/simpleclient_tracer_otel/0.16.0/simpleclient_tracer_otel-0.16.0.jar,/Users/mraible/.m2/repository/io/prometheus/simpleclient_tracer_otel_agent/0.16.0/simpleclient_tracer_otel_agent-0.16.0.jar,/Users/mraible/.m2/repository/io/prometheus/simpleclient_tracer_common/0.16.0/simpleclient_tracer_common-0.16.0.jar,/Users/mraible/.m2/repository/io/helidon/metrics/helidon-metrics-api/4.0.2/helidon-metrics-api-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/http/helidon-http/4.0.2/helidon-http-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/common/helidon-common-buffers/4.0.2/helidon-common-buffers-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/builder/helidon-builder-api/4.0.2/helidon-builder-api-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/metrics/helidon-metrics-system-meters/4.0.2/helidon-metrics-system-meters-4.0.2.jar,/Users/mraible/.m2/repository/io/helidon/jersey/helidon-jersey-client/4.0.2/helidon-jersey-client-4.0.2.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/core/jersey-client/3.1.4/jersey-client-3.1.4.jar,/Users/mraible/.m2/repository/org/glassfish/jersey/inject/jersey-hk2/3.1.4/jersey-hk2-3.1.4.jar,/Users/mraible/.m2/repository/org/glassfish/hk2/hk2-locator/3.0.5/hk2-locator-3.0.5.jar,/Users/mraible/.m2/repository/org/glassfish/hk2/external/aopalliance-repackaged/3.0.5/aopalliance-repackaged-3.0.5.jar,/Users/mraible/.m2/repository/org/glassfish/hk2/hk2-api/3.0.5/hk2-api-3.0.5.jar,/Users/mraible/.m2/repository/org/glassfish/hk2/hk2-utils/3.0.5/hk2-utils-3.0.5.jar,/Users/mraible/.m2/repository/org/javassist/javassist/3.29.2-GA/javassist-3.29.2-GA.jar,/Users/mraible/.m2/repository/io/helidon/config/helidon-config-yaml-mp/4.0.2/helidon-config-yaml-mp-4.0.2.jar -project.flavor=mp -project.last.build.success.time=1704408039482 -project.mainclass=io.helidon.Main -project.resourcedirs=/Users/mraible/dev/auth0/auth0-java-rest-api-examples/helidon/src/main/resources\:\: -project.source.excludes= -project.source.includes= -project.sourcedirs=/Users/mraible/dev/auth0/auth0-java-rest-api-examples/helidon/src/main/java,/Users/mraible/dev/auth0/auth0-java-rest-api-examples/helidon/target/generated-sources/annotations -project.version=1.0-SNAPSHOT +#Helidon Project Configuration +#Thu Oct 12 14:27:24 MDT 2023 schema.version=1.1.0 +helidon.version=3.2.2 +project.flavor=mp +project.archetype=quickstart diff --git a/helidon/Dockerfile b/helidon/Dockerfile index e3d0cff..4c2115c 100644 --- a/helidon/Dockerfile +++ b/helidon/Dockerfile @@ -16,8 +16,8 @@ WORKDIR /helidon # Create a first layer to cache the "Maven World" in the local repository. # Incremental docker builds will always resume after that, unless you update # the pom -ADD pom.xml . -RUN mvn package -Dmaven.test.skip -Declipselink.weave.skip -Declipselink.weave.skip -DskipOpenApiGenerate +ADD pom.xml pom.xml +RUN mvn package -Dmaven.test.skip -Declipselink.weave.skip # Do the Maven build! # Incremental docker builds will resume here when you change sources @@ -31,9 +31,9 @@ FROM container-registry.oracle.com/java/openjdk:21 WORKDIR /helidon # Copy the binary built in the 1st stage -COPY --from=build /helidon/target/helidon.jar ./ +COPY --from=build /helidon/target/helidon-se.jar ./ COPY --from=build /helidon/target/libs ./libs -CMD ["java", "-jar", "helidon.jar"] +CMD ["java", "-jar", "helidon-se.jar"] EXPOSE 8080 diff --git a/helidon/Dockerfile.jlink b/helidon/Dockerfile.jlink index 41e4003..baa608c 100644 --- a/helidon/Dockerfile.jlink +++ b/helidon/Dockerfile.jlink @@ -1,16 +1,6 @@ # 1st stage, build the app -FROM container-registry.oracle.com/java/openjdk:21 as build - -WORKDIR /usr/share - -# Install maven -RUN set -x && \ - curl -O https://archive.apache.org/dist/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz && \ - tar -xvf apache-maven-*-bin.tar.gz && \ - rm apache-maven-*-bin.tar.gz && \ - mv apache-maven-* maven && \ - ln -s /usr/share/maven/bin/mvn /bin/ +FROM maven:3.8.4-openjdk-17-slim as build WORKDIR /helidon @@ -30,6 +20,6 @@ RUN echo "done!" FROM debian:stretch-slim WORKDIR /helidon -COPY --from=build /helidon/target/helidon-jri ./ +COPY --from=build /helidon/target/helidon-se-jri ./ ENTRYPOINT ["/bin/bash", "/helidon/bin/start"] EXPOSE 8080 diff --git a/helidon/Dockerfile.native b/helidon/Dockerfile.native index 63e9e07..0747609 100644 --- a/helidon/Dockerfile.native +++ b/helidon/Dockerfile.native @@ -32,8 +32,8 @@ FROM scratch WORKDIR /helidon # Copy the binary built in the 1st stage -COPY --from=build /helidon/target/helidon . +COPY --from=build /helidon/target/helidon-se . -ENTRYPOINT ["./helidon"] +ENTRYPOINT ["./helidon-se"] EXPOSE 8080 diff --git a/helidon/README.md b/helidon/README.md index 900d3f8..48bc1b9 100644 --- a/helidon/README.md +++ b/helidon/README.md @@ -1,6 +1,6 @@ # helidon -Sample Helidon MP project that includes multiple REST operations. +Minimal Helidon SE project suitable to start from scratch. ## Build and run @@ -12,15 +12,11 @@ java -jar target/helidon.jar ``` ## Exercise the application - -Basic: ``` curl -X GET http://localhost:8080/simple-greet -Hello World! +{"message":"Hello World!"} ``` - -JSON: ``` curl -X GET http://localhost:8080/greet {"message":"Hello World!"} @@ -61,65 +57,44 @@ curl -s -X GET http://localhost:8080/health ``` -## Building a Native Image -The generation of native binaries requires an installation of GraalVM 22.1.0+. +## Building a Native Image -You can build a native binary using Maven as follows: +Make sure you have GraalVM locally installed: ``` -mvn -Pnative-image install -DskipTests +$GRAALVM_HOME/bin/native-image --version ``` -The generation of the executable binary may take a few minutes to complete depending on -your hardware and operating system. When completed, the executable file will be available -under the `target` directory and be named after the artifact ID you have chosen during the -project generation phase. - - - -## Building the Docker Image +Build the native image using the native image profile: ``` -docker build -t helidon . +mvn package -Pnative-image ``` -## Running the Docker Image +This uses the helidon-maven-plugin to perform the native compilation using your installed copy of GraalVM. It might take a while to complete. +Once it completes start the application using the native executable (no JVM!): ``` -docker run --rm -p 8080:8080 helidon:latest +./target/helidon ``` -Exercise the application as described above. - - -## Run the application in Kubernetes +Yep, it starts fast. You can exercise the application’s endpoints as before. -If you don’t have access to a Kubernetes cluster, you can [install one](https://helidon.io/docs/latest/#/about/kubernetes) on your desktop. -### Verify connectivity to cluster +## Building the Docker Image ``` -kubectl cluster-info # Verify which cluster -kubectl get pods # Verify connectivity to cluster +docker build -t helidon . ``` -### Deploy the application to Kubernetes +## Running the Docker Image ``` -kubectl create -f app.yaml # Deploy application -kubectl get pods # Wait for quickstart pod to be RUNNING -kubectl get service helidon # Get service info +docker run --rm -p 8080:8080 helidon:latest ``` -Note the PORTs. You can now exercise the application as you did before but use the second -port number (the NodePort) instead of 8080. - -After you’re done, cleanup. - -``` -kubectl delete -f app.yaml -``` +Exercise the application as described above. ## Building a Custom Runtime Image diff --git a/helidon/app.yaml b/helidon/app.yaml deleted file mode 100644 index 45e0cfc..0000000 --- a/helidon/app.yaml +++ /dev/null @@ -1,36 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: helidon - labels: - app: helidon -spec: - type: NodePort - selector: - app: helidon - ports: - - port: 8080 - targetPort: 8080 - name: http ---- -kind: Deployment -apiVersion: apps/v1 -metadata: - name: helidon -spec: - replicas: 1 - selector: - matchLabels: - app: helidon - template: - metadata: - labels: - app: helidon - version: v1 - spec: - containers: - - name: helidon - image: helidon - imagePullPolicy: IfNotPresent - ports: - - containerPort: 8080 diff --git a/helidon/pom.xml b/helidon/pom.xml index d26090d..61824a8 100644 --- a/helidon/pom.xml +++ b/helidon/pom.xml @@ -5,99 +5,38 @@ 4.0.0 io.helidon.applications - helidon-mp + helidon-se 4.0.2 com.okta.rest - helidon + helidon-se 1.0-SNAPSHOT + + com.okta.rest.HelloApplication + + - io.helidon.microprofile.bundles - helidon-microprofile-core - - - io.helidon.microprofile.openapi - helidon-microprofile-openapi - - - io.helidon.microprofile.health - helidon-microprofile-health - - - io.helidon.microprofile.jwt - helidon-microprofile-jwt-auth - - - jakarta.json.bind - jakarta.json.bind-api - - - org.glassfish.jersey.media - jersey-media-json-binding - runtime - - - io.helidon.logging - helidon-logging-jul - runtime - - - io.smallrye - jandex - runtime + io.helidon.webserver + helidon-webserver - jakarta.activation - jakarta.activation-api + io.helidon.webserver + helidon-webserver-security - org.eclipse.microprofile.metrics - microprofile-metrics-api + io.helidon.webserver + helidon-webserver-context - io.helidon.microprofile.metrics - helidon-microprofile-metrics + io.helidon.security.providers + helidon-security-providers-jwt - org.junit.jupiter - junit-jupiter-api - test - - - io.helidon.microprofile.testing - helidon-microprofile-testing-junit5 - test - - - org.hamcrest - hamcrest-all - test + io.helidon.http.media + helidon-http-media-jsonp - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-libs - - - - - io.smallrye - jandex-maven-plugin - - - make-index - - - - - diff --git a/helidon/src/main/java/com/okta/rest/HelloApplication.java b/helidon/src/main/java/com/okta/rest/HelloApplication.java index 7247250..14b77bf 100644 --- a/helidon/src/main/java/com/okta/rest/HelloApplication.java +++ b/helidon/src/main/java/com/okta/rest/HelloApplication.java @@ -1,19 +1,55 @@ package com.okta.rest; +import java.net.URI; + import com.okta.rest.controller.HelloResource; -import org.eclipse.microprofile.auth.LoginConfig; -import jakarta.enterprise.context.ApplicationScoped; -import jakarta.ws.rs.core.Application; +import io.helidon.common.configurable.Resource; +import io.helidon.config.Config; +import io.helidon.security.Security; +import io.helidon.security.providers.jwt.JwtProvider; +import io.helidon.webserver.WebServer; +import io.helidon.webserver.context.ContextFeature; +import io.helidon.webserver.http.HttpRouting; +import io.helidon.webserver.security.SecurityFeature; + +public class HelloApplication { + + public static void main(String[] args) { -import java.util.Set; + var config = Config.global(); + var oauth = + JwtProvider.builder() + .issuer(config.get("se.jwt.verify.issuer").asString().get()) + .verifyJwk( + Resource.create( + config + .get("se.jwt.verify.publickey.location") + .asString() + .map(URI::create) + .orElseThrow())) + .build(); -@LoginConfig(authMethod = "MP-JWT") -@ApplicationScoped -public class HelloApplication extends Application { + Security security = Security.builder().addProvider(oauth).build(); + var securityFeature = + SecurityFeature.create( + sfb -> + sfb.security(security) + .addPath(p -> p.path("/hello").handler(h -> h.authenticate(true)))); + + WebServer.builder() + .config(config.get("server")) + .routing(HelloApplication::routing) + .addFeature(ContextFeature.create()) + .addFeature(securityFeature) + .build() + .start(); + } - @Override - public Set> getClasses() { - return Set.of(HelloResource.class); + /** + * Updates HTTP Routing. + */ + static void routing(HttpRouting.Builder routing) { + routing.addFeature(new HelloResource()); } } diff --git a/helidon/src/main/java/com/okta/rest/controller/HelloResource.java b/helidon/src/main/java/com/okta/rest/controller/HelloResource.java index abfe348..a5078d9 100644 --- a/helidon/src/main/java/com/okta/rest/controller/HelloResource.java +++ b/helidon/src/main/java/com/okta/rest/controller/HelloResource.java @@ -1,18 +1,25 @@ package com.okta.rest.controller; +import static io.helidon.http.Status.OK_200; + +import io.helidon.common.media.type.MediaTypes; import io.helidon.security.SecurityContext; -import io.helidon.security.annotations.Authenticated; +import io.helidon.webserver.http.HttpFeature; +import io.helidon.webserver.http.HttpRouting; +import io.helidon.webserver.http.ServerRequest; +import io.helidon.webserver.http.ServerResponse; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.core.Context; +public class HelloResource implements HttpFeature { -@Path("/hello") -public class HelloResource { + @Override + public void setup(HttpRouting.Builder routing) { + routing.get("/hello", this::hello); + } - @Authenticated - @GET - public String hello(@Context SecurityContext context) { - return "Hello, " + context.userName() + "!"; + public void hello(ServerRequest req, ServerResponse res) { + SecurityContext context = req.context().get(SecurityContext.class).orElseThrow(); + res.status(OK_200); + res.headers().contentType(MediaTypes.TEXT_PLAIN); + res.send("Hello, " + context.userName() + "!"); } } diff --git a/helidon/src/main/resources/META-INF/beans.xml b/helidon/src/main/resources/META-INF/beans.xml deleted file mode 100644 index 7605752..0000000 --- a/helidon/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/helidon/src/main/resources/META-INF/microprofile-config.properties b/helidon/src/main/resources/META-INF/microprofile-config.properties deleted file mode 100644 index dc1abb6..0000000 --- a/helidon/src/main/resources/META-INF/microprofile-config.properties +++ /dev/null @@ -1,9 +0,0 @@ -# Microprofile server properties -server.port=8080 -server.host=0.0.0.0 - -# Change the following to true to enable the optional MicroProfile Metrics REST.request metrics -metrics.rest-request.enabled=false - -mp.jwt.verify.issuer=https://dev-06bzs1cu.us.auth0.com/ -mp.jwt.verify.publickey.location=${mp.jwt.verify.issuer}.well-known/jwks.json diff --git a/helidon/src/main/resources/META-INF/native-image/com.okta.rest/helidon/native-image.properties b/helidon/src/main/resources/META-INF/native-image/com.okta.rest/helidon/native-image.properties new file mode 100644 index 0000000..e677c0a --- /dev/null +++ b/helidon/src/main/resources/META-INF/native-image/com.okta.rest/helidon/native-image.properties @@ -0,0 +1,3 @@ +Args=--initialize-at-build-time=com.okta.rest \ + --enable-url-protocols=https \ + --report-unsupported-elements-at-runtime diff --git a/helidon/src/main/resources/META-INF/native-image/com/okta/rest/helidon/native-image.properties b/helidon/src/main/resources/META-INF/native-image/com/okta/rest/helidon/native-image.properties deleted file mode 100644 index e60e680..0000000 --- a/helidon/src/main/resources/META-INF/native-image/com/okta/rest/helidon/native-image.properties +++ /dev/null @@ -1,4 +0,0 @@ -Args=--initialize-at-build-time=com.okta.rest \ - --initialize-at-run-time=io.helidon.openapi.ExpandedTypeDescription \ - --report-unsupported-elements-at-runtime \ - -H:+AddAllCharsets diff --git a/helidon/src/main/resources/application.properties b/helidon/src/main/resources/application.properties new file mode 100644 index 0000000..fd5a53f --- /dev/null +++ b/helidon/src/main/resources/application.properties @@ -0,0 +1,6 @@ +# Microprofile server properties +server.port=8080 +server.host=0.0.0.0 + +se.jwt.verify.issuer=https://dev-06bzs1cu.us.auth0.com/ +se.jwt.verify.publickey.location=${se.jwt.verify.issuer}.well-known/jwks.json diff --git a/helidon/src/main/resources/logging.properties b/helidon/src/main/resources/logging.properties index 65835a3..5157244 100644 --- a/helidon/src/main/resources/logging.properties +++ b/helidon/src/main/resources/logging.properties @@ -3,7 +3,7 @@ # For more information see $JAVA_HOME/jre/lib/logging.properties # Send messages to the console -handlers=io.helidon.logging.jul.HelidonConsoleHandler +handlers=io.helidon.common.HelidonConsoleHandler # HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread java.util.logging.SimpleFormatter.format=%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS %4$s %3$s !thread!: %5$s%6$s%n @@ -15,6 +15,7 @@ java.util.logging.SimpleFormatter.format=%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS %4$ org.jboss.level=WARNING # Component specific log levels +#io.helidon.webserver.level=INFO #io.helidon.config.level=INFO #io.helidon.security.level=INFO #io.helidon.common.level=INFO diff --git a/helidon/src/test/resources/application-test.yaml b/helidon/src/test/resources/application.yaml similarity index 100% rename from helidon/src/test/resources/application-test.yaml rename to helidon/src/test/resources/application.yaml