diff --git a/microprofile/server/pom.xml b/microprofile/server/pom.xml
index 408898c8df8..49837f9c53b 100644
--- a/microprofile/server/pom.xml
+++ b/microprofile/server/pom.xml
@@ -31,6 +31,11 @@
Helidon Microprofile Server
Server of the microprofile implementation
+
+ -Xmx1024m -Dfile.encoding=UTF-8 -Dorg.jboss.weld.construction.relaxed=false
+ -Xmx1024m -Dfile.encoding=UTF-8 -Dorg.jboss.weld.construction.relaxed=false
+
+
io.helidon.config
diff --git a/microprofile/server/src/test/java/io/helidon/microprofile/server/JaxRsApplicationVisibilityTest.java b/microprofile/server/src/test/java/io/helidon/microprofile/server/JaxRsApplicationVisibilityTest.java
new file mode 100644
index 00000000000..be2092774aa
--- /dev/null
+++ b/microprofile/server/src/test/java/io/helidon/microprofile/server/JaxRsApplicationVisibilityTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2023 Oracle and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.helidon.microprofile.server;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import jakarta.ws.rs.ApplicationPath;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.client.Client;
+import jakarta.ws.rs.client.ClientBuilder;
+import jakarta.ws.rs.core.Application;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.Request;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.UriInfo;
+import jakarta.ws.rs.ext.Providers;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+class JaxRsApplicationVisibilityTest {
+
+ private static Server server;
+ private static Client client;
+ private static int port;
+
+ @BeforeAll
+ static void beforeAll() {
+ server = Server.builder().addApplication(MyApplication.class).build();
+ server.start();
+ port = server.port();
+ client = ClientBuilder.newClient();
+ }
+
+ @AfterAll
+ static void afterAll() {
+ server.stop();
+ client.close();
+ }
+
+ @Disabled("Failing, it is invoking the empty Resource constructor")
+ @Test
+ void okTest() {
+ Response response = client.target("http://localhost:" + port).path("/Application/Resource/mostAttributes")
+ .request().get();
+ assertThat(response.getStatus(), is(Status.OK.getStatusCode()));
+ }
+
+ @ApplicationPath("/Application")
+ static class MyApplication extends Application {
+
+ @Override
+ public java.util.Set> getClasses() {
+ Set> resources = new HashSet>();
+ resources.add(Resource.class);
+ return resources;
+ }
+ }
+
+ @Path("/Resource")
+ public static class Resource {
+
+ private HttpHeaders headers;
+ private UriInfo info;
+ private Application application;
+ private Request request;
+ private Providers provider;
+
+ public Resource() {
+ }
+
+ public Resource(@Context HttpHeaders headers) {
+ this.headers = headers;
+ }
+
+ public Resource(@Context HttpHeaders headers, @Context UriInfo info) {
+ this.headers = headers;
+ this.info = info;
+ }
+
+ public Resource(@Context HttpHeaders headers, @Context UriInfo info,
+ @Context Application application) {
+ this.application = application;
+ this.headers = headers;
+ this.info = info;
+ }
+
+ public Resource(@Context HttpHeaders headers, @Context UriInfo info,
+ @Context Application application, @Context Request request) {
+ this.application = application;
+ this.headers = headers;
+ this.info = info;
+ this.request = request;
+ }
+
+ protected Resource(@Context HttpHeaders headers, @Context UriInfo info,
+ @Context Application application, @Context Request request,
+ @Context Providers provider) {
+ this.application = application;
+ this.headers = headers;
+ this.info = info;
+ this.request = request;
+ this.provider = provider;
+ }
+
+ @GET
+ @Path("mostAttributes")
+ public Response isUsedConstructorWithMostAttributes() {
+ boolean ok = application != null;
+ ok &= headers != null;
+ ok &= info != null;
+ ok &= request != null;
+ ok &= provider == null;
+ Status status = ok ? Status.OK : Status.NOT_ACCEPTABLE;
+ return Response.status(status).build();
+ }
+ }
+}
diff --git a/microprofile/tests/tck/tck-restful/tck-restful-test/pom.xml b/microprofile/tests/tck/tck-restful/tck-restful-test/pom.xml
index ba9acad5bed..4b6882cde8f 100644
--- a/microprofile/tests/tck/tck-restful/tck-restful-test/pom.xml
+++ b/microprofile/tests/tck/tck-restful/tck-restful-test/pom.xml
@@ -111,6 +111,7 @@
localhost
8080
+ false
${project.build.directory}/jdk11-bundle
${project.build.directory}/lib/jakarta.xml.bind-api-${version.lib.jakarta.xml.bind-api}.jar:${project.build.directory}/lib/jakarta.ws.rs-api-${version.lib.jakarta.jaxrs-api}.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming