THALES GROUP LIMITED DISTRIBUTION to email recipients Hello everyone,
Context: TomEE 9.1.2 micro-profile flavor. I have raised an issue in another POST (Some issues with simple rest application). This time: * I add a new class which extends Application. @ApplicationPath("myapp") public class MyApp extends Application { } * The previous Root resource is still there @Path("myresource") public class MyResource { @GET public Response test() { return Response.ok().build(); } } * I remove web.xml from the war or the web.xml is empty (eg no servlet declared) By doing so, I think I am still compliant to the spec: * “If an Application subclass is present…”: this the case * “If no servlet handles this application”: web.xml removed: this is the case * “When an Application subclass is present in the archive, if both Application.getClasses and Application.getSingletons return an empty collection (default implementation so this is the case) then all root resource classes and providers packaged in the web application MUST be included and the JAX-RS implementation is REQUIRED to discover them automatically by scanning a .war as described above” But when I startup TomEE micro-profile, I got: 02-Apr-2024 12:04:57.650 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints REST Application: http://localhost:8080/JAXRS/ -> org.apache.openejb.server.rest.InternalApplication@19f9287a<mailto:org.apache.openejb.server.rest.InternalApplication@19f9287a> 02-Apr-2024 12:04:57.654 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:8080/JAXRS/health -> Pojo org.apache.tomee.microprofile.health.MicroProfileHealthChecksEndpoint 02-Apr-2024 12:04:57.654 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/health -> Response getChecks() 02-Apr-2024 12:04:57.654 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/health/live -> Response getLiveChecks() 02-Apr-2024 12:04:57.654 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/health/ready -> Response getReadyChecks() 02-Apr-2024 12:04:57.654 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/health/started -> Response getStartedChecks() No GET on a path with myresource or myapp ☹ What’s wrong in my understanding of the spec ? For curiosity, I deployed the very same war on TomEE 8.0.16 micro-profile. This time I got: 02-Apr-2024 12:44:37.179 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints REST Application: http://localhost:8080/JAXRS/myapp -> jaxrs.skeleton.MyApp@7c39193f<mailto:jaxrs.skeleton.MyApp@7c39193f> 02-Apr-2024 12:44:37.181 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:8080/JAXRS/myapp/health -> Pojo org.apache.geronimo.microprofile.impl.health.cdi.CdiHealthChecksEndpoint 02-Apr-2024 12:44:37.182 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/health -> Response getChecks() 02-Apr-2024 12:44:37.185 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:8080/JAXRS/myapp/metrics -> Pojo org.apache.geronimo.microprofile.metrics.jaxrs.CdiMetricsEndpoints 02-Apr-2024 12:44:37.185 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/metrics -> Object getJson(SecurityContext, UriInfo) 02-Apr-2024 12:44:37.185 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/metrics -> String getText(SecurityContext, UriInfo) 02-Apr-2024 12:44:37.185 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/metrics/{registry}<http://localhost:8080/JAXRS/myapp/metrics/%7bregistry%7d> -> Object getJson(String, SecurityContext, UriInfo) 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/metrics/{registry}<http://localhost:8080/JAXRS/myapp/metrics/%7bregistry%7d> -> String getText(String, SecurityContext, UriInfo) 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/metrics/{registry}/{metric}<http://localhost:8080/JAXRS/myapp/metrics/%7bregistry%7d/%7bmetric%7d> -> Object getJson(String, String, SecurityContext, UriInfo) 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/metrics/{registry}/{metric}<http://localhost:8080/JAXRS/myapp/metrics/%7bregistry%7d/%7bmetric%7d> -> String getText(String, String, SecurityContext, UriInfo) 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints OPTIONS http://localhost:8080/JAXRS/myapp/metrics/{registry}<http://localhost:8080/JAXRS/myapp/metrics/%7bregistry%7d> -> Object getMetadata(String, SecurityContext, UriInfo) 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints OPTIONS http://localhost:8080/JAXRS/myapp/metrics/{registry}/{metric}<http://localhost:8080/JAXRS/myapp/metrics/%7bregistry%7d/%7bmetric%7d> -> Object getMetadata(String, String, SecurityContext, UriInfo) 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:8080/JAXRS/myapp/myresource -> Pojo jaxrs.skeleton.MyResource 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/myresource -> Response test() 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:8080/JAXRS/myapp/openapi -> Pojo org.apache.geronimo.microprofile.openapi.jaxrs.OpenAPIEndpoint 02-Apr-2024 12:44:37.186 INFO [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/JAXRS/myapp/openapi -> OpenAPI get() which is fine. Big issue on TomEE 9.1.2 micro-profile ? Best Regards.