MissingClassTelemetry and ClassNotFoundExceptions related to use of web services on Java 11

Hi, I’m seeing some warnings or errors (depending on the Jenkins installation version) related to the use of web services from the genexus-plugin, and am not sure whether they are caused by something on the Jenkins core or if there’s something wrong with the plugin itself. Any pointer or suggestion will be greatly appreciated.

GeneXus plugin implements SCM support by calling web services to GeneXus Server installations. Some time ago we switched to Jakarta XML Binding 3.0 so as to support both Java 8 and Java 11 Jenkins installations, and it used to work fine in both cases. However, we’ve started seeing problems on Java 11 installations for more recent versions of the core and plugins.

For example, on a Jenkins 2.235.1 installation, using Java 11.0.11, we see j.t.i.j.MissingClassTelemetry#reportException warnings about com.sun.xml.ws.fault.ObjectFactory (see full stack trace bellow as “J2.235.1 stack trace”).

Despite this warning, the SCM polling and other related operations that call the services work ok and don’t report errors, but I mention it because the stack trace shows the warning is generated while trying to call a web service as part of the SCM poll operation.

I’m not sure if this warning is about something on the Jenkins core or some plugin that I should report somewhere, or if it’s warning about something that I should correct in our own plugin.

Most importantly, on another Jenkins installation on version 2.326 the SCM poll does fail (as well as other web service calls) showing a NoClassDefFoundError about org.glassfish.jaxb.runtime.v2.runtime.AnyTypeBeanInfo (see full stack trace below as “J2.326 stack trace”).

As I said before, any pointer or suggestion will be greatly appreciated.

Regards,

— J2.235.1 stack trace —
2021-12-27 12:28:03.228+0000 [id=80] WARNING j.t.i.j.MissingClassTelemetry#reportException: Added a missed class for missing class telemetry. Class: com.sun.xml.ws.fault.ObjectFactory
java.lang.ClassNotFoundException: com.sun.xml.ws.fault.ObjectFactory
at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1387)
at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342)
at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1089)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.glassfish.jaxb.core.v2.model.nav.ReflectionNavigator.loadObjectFactory(ReflectionNavigator.java:563)
at org.glassfish.jaxb.core.v2.model.nav.ReflectionNavigator.loadObjectFactory(ReflectionNavigator.java:34)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.addToRegistry(ModelBuilder.java:264)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:221)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:66)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:46)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:184)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:61)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:46)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:332)
at org.glassfish.jaxb.runtime.v2.model.impl.TypeRefImpl.calcRef(TypeRefImpl.java:66)
at org.glassfish.jaxb.runtime.v2.model.impl.TypeRefImpl.getTarget(TypeRefImpl.java:43)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeTypeRefImpl.getTarget(RuntimeTypeRefImpl.java:31)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeTypeRefImpl.getTarget(RuntimeTypeRefImpl.java:24)
at org.glassfish.jaxb.runtime.v2.model.impl.ElementPropertyInfoImpl$1.get(ElementPropertyInfoImpl.java:43)
at org.glassfish.jaxb.runtime.v2.model.impl.ElementPropertyInfoImpl$1.get(ElementPropertyInfoImpl.java:41)
at java.base/java.util.AbstractList$Itr.next(AbstractList.java:371)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:232)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:66)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:46)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:184)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:61)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:46)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:332)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:347)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:413)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:251)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:77)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1111)
at org.glassfish.jaxb.runtime.v2.ContextFactory.createContext(ContextFactory.java:140)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:274)
at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:263)
at jakarta.xml.bind.ContextFinder.find(ContextFinder.java:395)
at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createJAXBContext(SOAPFaultBuilder.java:569)
at com.sun.xml.ws.fault.SOAPFaultBuilder.(SOAPFaultBuilder.java:548)
at com.sun.xml.ws.wsdl.OperationDispatcher.getWSDLOperationMapping(OperationDispatcher.java:76)
at com.sun.xml.ws.api.message.Packet.getWSDLOperationMapping(Packet.java:290)
at com.sun.xml.ws.api.message.Message.getOperation(Message.java:275)
at com.sun.xml.ws.api.message.Message.getOperation(Message.java:293)
at com.sun.xml.ws.api.message.Message.isOneWay(Message.java:370)
at com.sun.xml.ws.api.message.MessageWrapper.isOneWay(MessageWrapper.java:103)
at com.sun.xml.ws.handler.HandlerTube.checkOneWay(HandlerTube.java:277)
at com.sun.xml.ws.handler.HandlerTube.processRequest(HandlerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847)
at com.sun.xml.ws.client.Stub.process(Stub.java:433)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:62)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:131)
at com.sun.proxy.$Proxy102.getVersions(Unknown Source)
at org.jenkinsci.plugins.genexus.server.clients.TeamWorkService2Client$LocalContextServiceWrapper.lambda$getVersions$1(TeamWorkService2Client.java:213)
at org.jenkinsci.plugins.genexus.server.clients.common.WithLocalContextClassLoader.call(WithLocalContextClassLoader.java:47)
at org.jenkinsci.plugins.genexus.server.clients.TeamWorkService2Client$LocalContextServiceWrapper.getVersions(TeamWorkService2Client.java:213)
at org.jenkinsci.plugins.genexus.server.clients.TeamWorkService2Client.getVersions(TeamWorkService2Client.java:126)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery$RevisionsIterator.getVersionId(RevisionsQuery.java:201)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery$RevisionsIterator.getNextPage(RevisionsQuery.java:187)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery$RevisionsIterator.hasNext(RevisionsQuery.java:166)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery.getFirstItem(RevisionsQuery.java:132)
at org.jenkinsci.plugins.genexus.server.GetLastRevisionTask.getLatestRevisionInfo(GetLastRevisionTask.java:89)
at org.jenkinsci.plugins.genexus.server.GetLastRevisionTask.invoke(GetLastRevisionTask.java:74)
at org.jenkinsci.plugins.genexus.server.GetLastRevisionTask.invoke(GetLastRevisionTask.java:50)
at hudson.FilePath.act(FilePath.java:1075)
at hudson.FilePath.act(FilePath.java:1058)
at org.jenkinsci.plugins.genexus.server.GeneXusServerSCM.compareRemoteRevisionWith(GeneXusServerSCM.java:239)
at hudson.scm.SCM.compareRemoteRevisionWith(SCM.java:401)
at hudson.scm.SCM.poll(SCM.java:418)
at hudson.model.AbstractProject._poll(AbstractProject.java:1388)
at hudson.model.AbstractProject.poll(AbstractProject.java:1291)
at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:606)
at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:652)
at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:119)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)

— J2.326 stack trace —
Started on 27 dic. 2021 09:25:56
ERROR: Failed to record SCM polling for org.jenkinsci.plugins.workflow.job.WorkflowJob@61737c9a[SaltoTrunk/Pipeline]
java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jaxb.runtime.v2.runtime.AnyTypeBeanInfo
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:493)
at org.glassfish.jaxb.runtime.v2.runtime.property.SingleElementNodeProperty.(SingleElementNodeProperty.java:73)
at jdk.internal.reflect.GeneratedConstructorAccessor101.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.glassfish.jaxb.runtime.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:94)
at org.glassfish.jaxb.runtime.v2.runtime.ElementBeanInfoImpl.(ElementBeanInfoImpl.java:58)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:448)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:299)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:77)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1111)
at org.glassfish.jaxb.runtime.v2.ContextFactory.createContext(ContextFactory.java:140)
at org.glassfish.jaxb.runtime.api.JAXBRIContext.newInstance(JAXBRIContext.java:132)
at org.glassfish.jaxb.runtime.api.JAXBRIContext.newInstance(JAXBRIContext.java:76)
at com.sun.xml.ws.developer.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:83)
at com.sun.xml.ws.db.glassfish.JAXBRIContextFactory.newContext(JAXBRIContextFactory.java:64)
at com.sun.xml.ws.spi.db.BindingContextFactory.getBindingContextFromSpi(BindingContextFactory.java:177)
at com.sun.xml.ws.spi.db.BindingContextFactory.create(BindingContextFactory.java:146)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:195)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:167)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:167)
at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:81)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:294)
at com.sun.xml.ws.db.DatabindingImpl.(DatabindingImpl.java:70)
at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:44)
at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:28)
at com.sun.xml.ws.db.DatabindingFactoryImpl.createRuntime(DatabindingFactoryImpl.java:90)
at com.sun.xml.ws.client.WSServiceDelegate.buildRuntimeModel(WSServiceDelegate.java:852)
at com.sun.xml.ws.client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:869)
at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:832)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:421)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:390)
at jakarta.xml.ws.Service.getPort(Service.java:181)
at org.jenkinsci.plugins.genexus.server.services.teamwork.TeamWorkService2.getCustomBindingITeamWorkService2(TeamWorkService2.java:82)
at org.jenkinsci.plugins.genexus.server.clients.TeamWorkService2Client.lambda$getTeamWorkService2$0(TeamWorkService2Client.java:89)
at org.jenkinsci.plugins.genexus.server.clients.common.WithLocalContextClassLoader.call(WithLocalContextClassLoader.java:47)
at org.jenkinsci.plugins.genexus.server.clients.TeamWorkService2Client.getTeamWorkService2(TeamWorkService2Client.java:87)
at org.jenkinsci.plugins.genexus.server.clients.TeamWorkService2Client.getVersions(TeamWorkService2Client.java:126)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery$RevisionsIterator.getVersionId(RevisionsQuery.java:201)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery$RevisionsIterator.getNextPage(RevisionsQuery.java:187)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery$RevisionsIterator.hasNext(RevisionsQuery.java:166)
at org.jenkinsci.plugins.genexus.server.clients.RevisionsQuery.getFirstItem(RevisionsQuery.java:132)
at org.jenkinsci.plugins.genexus.server.GetLastRevisionTask.getLatestRevisionInfo(GetLastRevisionTask.java:89)
at org.jenkinsci.plugins.genexus.server.GetLastRevisionTask.invoke(GetLastRevisionTask.java:74)
at org.jenkinsci.plugins.genexus.server.GetLastRevisionTask.invoke(GetLastRevisionTask.java:50)
at hudson.FilePath.act(FilePath.java:1161)
at hudson.FilePath.act(FilePath.java:1144)
at org.jenkinsci.plugins.genexus.server.GeneXusServerSCM.compareRemoteRevisionWith(GeneXusServerSCM.java:239)
at org.jenkinsci.plugins.workflow.job.WorkflowJob.poll(WorkflowJob.java:618)
at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:614)
at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:661)
at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:123)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)