ServiceFinder defaults to ServiceLookupIteratorProvider
I am trying to fix one test that it is not related with the ServiceFinder. I cannot reproduce it locally.
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.215 s <<< FAILURE! - in org.glassfish.jersey.osgi.test.basic.JsonProcessingTest
[ERROR] org.glassfish.jersey.osgi.test.basic.JsonProcessingTest.testJsonObject Time elapsed: 2.917 s <<< ERROR!
java.lang.ClassNotFoundException: jakarta.json.JsonObject not found by PAXEXAM-PROBE-286ff3e3-1b52-4097-856d-dfef76f2e64e [41]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1585)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1970)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
at java.base/java.lang.Class.getDeclaredMethods(Class.java:2504)
at org.glassfish.jersey.server.model.IntrospectionModeller$2.run(IntrospectionModeller.java:237)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at org.glassfish.jersey.server.model.IntrospectionModeller.getAllDeclaredMethods(IntrospectionModeller.java:231)
at org.glassfish.jersey.server.model.IntrospectionModeller.checkForNonPublicMethodIssues(IntrospectionModeller.java:151)
at org.glassfish.jersey.server.model.IntrospectionModeller.doCreateResourceBuilder(IntrospectionModeller.java:98)
at org.glassfish.jersey.server.model.IntrospectionModeller.access$000(IntrospectionModeller.java:59)
at org.glassfish.jersey.server.model.IntrospectionModeller$1.call(IntrospectionModeller.java:91)
at org.glassfish.jersey.server.model.IntrospectionModeller$1.call(IntrospectionModeller.java:88)
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:232)
at org.glassfish.jersey.server.model.IntrospectionModeller.createResourceBuilder(IntrospectionModeller.java:88)
at org.glassfish.jersey.server.model.Resource.from(Resource.java:781)
at org.glassfish.jersey.server.ResourceBagConfigurator.init(ResourceBagConfigurator.java:55)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:348)
at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:310)
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:232)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:309)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:274)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(GrizzlyHttpContainer.java:310)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer(GrizzlyHttpServerFactory.java:93)
at org.glassfish.jersey.osgi.test.basic.JsonProcessingTest.testJsonObject(JsonProcessingTest.java:97)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:435)
at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:408)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
It looks the issue is:
ERROR: Bundle org.glassfish.jersey.media.jersey-media-json-processing [37] Error starting file:/tmp/1646816632422-0/pax-exam-downloads/org.glassfish.jersey.media.jersey-media-json-processing_3.1.0.SNAPSHOT.jar (org.osgi.framework.BundleException: Unable to resolve org.glassfish.jersey.media.jersey-media-json-processing [37](R 37.0): missing requirement [org.glassfish.jersey.media.jersey-media-json-processing [37](R 37.0)] osgi.wiring.package; (&(osgi.wiring.package=org.eclipse.parsson.media)(version>=1.0.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.eclipse.parsson.media [40](R 40.0): missing requirement [org.eclipse.parsson.media [40](R 40.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json)(version>=2.0.0)(!(version>=3.0.0))) [caused by: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)]] Unresolved requirements: [[org.glassfish.jersey.media.jersey-media-json-processing [37](R 37.0)] osgi.wiring.package; (&(osgi.wiring.package=org.eclipse.parsson.media)(version>=1.0.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.glassfish.jersey.media.jersey-media-json-processing [37](R 37.0): missing requirement [org.glassfish.jersey.media.jersey-media-json-processing [37](R 37.0)] osgi.wiring.package; (&(osgi.wiring.package=org.eclipse.parsson.media)(version>=1.0.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.eclipse.parsson.media [40](R 40.0): missing requirement [org.eclipse.parsson.media [40](R 40.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json)(version>=2.0.0)(!(version>=3.0.0))) [caused by: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)]] Unresolved requirements: [[org.glassfish.jersey.media.jersey-media-json-processing [37](R 37.0)] osgi.wiring.package; (&(osgi.wiring.package=org.eclipse.parsson.media)(version>=1.0.0)(!(version>=2.0.0)))]
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4398)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle jakarta.json-api [38] Error starting file:/tmp/1646816632422-0/pax-exam-downloads/jakarta.json-api_2.1.0.jar (org.osgi.framework.BundleException: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson) Unresolved requirements: [[jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)])
org.osgi.framework.BundleException: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson) Unresolved requirements: [[jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)]
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4398)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.eclipse.parsson [39] Error starting file:/tmp/1646816632422-0/pax-exam-downloads/org.eclipse.parsson_1.0.0.jar (org.osgi.framework.BundleException: Unable to resolve org.eclipse.parsson [39](R 39.0): missing requirement [org.eclipse.parsson [39](R 39.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json.spi)(version>=2.0.0)(!(version>=3.0.0))) [caused by: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)] Unresolved requirements: [[org.eclipse.parsson [39](R 39.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json.spi)(version>=2.0.0)(!(version>=3.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.eclipse.parsson [39](R 39.0): missing requirement [org.eclipse.parsson [39](R 39.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json.spi)(version>=2.0.0)(!(version>=3.0.0))) [caused by: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)] Unresolved requirements: [[org.eclipse.parsson [39](R 39.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json.spi)(version>=2.0.0)(!(version>=3.0.0)))]
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4398)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.eclipse.parsson.media [40] Error starting file:/tmp/1646816632422-0/pax-exam-downloads/org.eclipse.parsson.media_1.0.0.jar (org.osgi.framework.BundleException: Unable to resolve org.eclipse.parsson.media [40](R 40.0): missing requirement [org.eclipse.parsson.media [40](R 40.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json)(version>=2.0.0)(!(version>=3.0.0))) [caused by: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)] Unresolved requirements: [[org.eclipse.parsson.media [40](R 40.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json)(version>=2.0.0)(!(version>=3.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.eclipse.parsson.media [40](R 40.0): missing requirement [org.eclipse.parsson.media [40](R 40.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json)(version>=2.0.0)(!(version>=3.0.0))) [caused by: Unable to resolve jakarta.json-api [38](R 38.0): missing requirement [jakarta.json-api [38](R 38.0)] osgi.wiring.package; (osgi.wiring.package=org.eclipse.parsson)] Unresolved requirements: [[org.eclipse.parsson.media [40](R 40.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.json)(version>=2.0.0)(!(version>=3.0.0)))]
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4398)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.base/java.lang.Thread.run(Thread.java:834)
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:37, url:mvn:org.glassfish.jersey.media/jersey-media-json-processing/3.1.0-SNAPSHOT] is not resolved
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:38, url:mvn:jakarta.json/jakarta.json-api/2.1.0] is not resolved
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:39, url:mvn:org.eclipse.parsson/parsson/1.0.0] is not resolved
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:40, url:mvn:org.eclipse.parsson/parsson-media/1.0.0] is not resolved
Locally it can download the dependencies and the test passes:
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Downloading [mvn:org.glassfish.jersey.media/jersey-media-json-processing/3.1.0-SNAPSHOT]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Creating new file at destination: /tmp/1646824466109-0/pax-exam-downloads/-1089499066.jar
[org.ops4j.pax.exam.forked.provision.StreamUtils] DEBUG : mvn:org.glassfish.jersey.media/jersey-media-json-processing/3.1.0-SNAPSHOT : downloading...
[org.ops4j.pax.url.mvn.internal.Connection] DEBUG : Resolving [mvn:org.glassfish.jersey.media/jersey-media-json-processing/3.1.0-SNAPSHOT]
[shaded.org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider] DEBUG : Using manager PaxLocalRepositoryManager with priority 0.0 for /home/jbescos/.m2/repository
[org.ops4j.pax.url.mvn.internal.AetherBasedResolver] DEBUG : Resolved (org.glassfish.jersey.media:jersey-media-json-processing:jar:3.1.0-SNAPSHOT) as /home/jbescos/.m2/repository/org/glassfish/jersey/media/jersey-media-json-processing/3.1.0-SNAPSHOT/jersey-media-json-processing-3.1.0-SNAPSHOT.jar
[org.ops4j.pax.exam.forked.provision.StreamUtils] DEBUG : mvn:org.glassfish.jersey.media/jersey-media-json-processing/3.1.0-SNAPSHOT : 19872 bytes @ [ 19872kBps ]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Successfully downloaded to [/tmp/1646824466109-0/pax-exam-downloads/-1089499066.jar]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Downloading [mvn:jakarta.json/jakarta.json-api/2.1.0]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Creating new file at destination: /tmp/1646824466109-0/pax-exam-downloads/-54011761.jar
[org.ops4j.pax.exam.forked.provision.StreamUtils] DEBUG : mvn:jakarta.json/jakarta.json-api/2.1.0 : downloading...
[org.ops4j.pax.url.mvn.internal.Connection] DEBUG : Resolving [mvn:jakarta.json/jakarta.json-api/2.1.0]
[shaded.org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider] DEBUG : Using manager PaxLocalRepositoryManager with priority 0.0 for /home/jbescos/.m2/repository
[org.ops4j.pax.url.mvn.internal.AetherBasedResolver] DEBUG : Resolved (jakarta.json:jakarta.json-api:jar:2.1.0) as /home/jbescos/.m2/repository/jakarta/json/jakarta.json-api/2.1.0/jakarta.json-api-2.1.0.jar
[org.ops4j.pax.exam.forked.provision.StreamUtils] DEBUG : mvn:jakarta.json/jakarta.json-api/2.1.0 : 49290 bytes @ [ 49290kBps ]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Successfully downloaded to [/tmp/1646824466109-0/pax-exam-downloads/-54011761.jar]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Downloading [mvn:org.eclipse.parsson/parsson/1.0.0]
[org.ops4j.pax.exam.forked.provision.PlatformImpl] DEBUG : Creating new file at destination: /tmp/1646824466109-0/pax-exam-downloads/-524797807.jar
[org.ops4j.pax.exam.forked.provision.StreamUtils] DEBUG : mvn:org.eclipse.parsson/parsson/1.0.0 : downloading...
[org.ops4j.pax.url.mvn.internal.Connection] DEBUG : Resolving [mvn:org.eclipse.parsson/parsson/1.0.0]
But in Jenkins it is not able to do so:
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:37, url:mvn:org.glassfish.jersey.media/jersey-media-json-processing/3.1.0-SNAPSHOT] is not resolved
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:38, url:mvn:jakarta.json/jakarta.json-api/2.1.0] is not resolved
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:39, url:mvn:org.eclipse.parsson/parsson/1.0.0] is not resolved
[org.ops4j.pax.exam.forked.ForkedTestContainer] ERROR : Bundle [id:40, url:mvn:org.eclipse.parsson/parsson-media/1.0.0] is not resolved
I am going to ignore that tests for now. It is not related to my changes. Actually in the stack trace it is possible to see that it is not related to ServiceFinder: https://github.com/eclipse-ee4j/jersey/pull/4999#issuecomment-1062752707
This PR is a reaction to JPMS and service loading capabilities defined in module.info. The standard ServiceFinder cannot load these services. We'll check this PR once the JPMS support is brought to Jersey.
See #5001.