Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-59301

Crowd 2 Integration is not compatible with Java 11

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • crowd2-plugin

      Hi,

      I don't know if it's me, but it seems that the Crowd2 plugin is not compatible with JDK11

      javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
       - with linked exception:
      [java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
      	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278)
      	at javax.xml.bind.ContextFinder.find(ContextFinder.java:397)
      	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
      	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
      	at com.atlassian.crowd.integration.rest.util.JAXBContextCache$1.load(JAXBContextCache.java:29)
      	at com.atlassian.crowd.integration.rest.util.JAXBContextCache$1.load(JAXBContextCache.java:25)
      	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)
      	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
      	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
      	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
      	at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
      	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)
      	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)
      	at com.atlassian.crowd.integration.rest.util.JAXBContextCache.getJAXBContext(JAXBContextCache.java:41)
      	at com.atlassian.crowd.integration.rest.service.RestExecutor.getUnmarshaller(RestExecutor.java:414)
      	at com.atlassian.crowd.integration.rest.service.RestExecutor.access$000(RestExecutor.java:68)
      	at com.atlassian.crowd.integration.rest.service.RestExecutor$MethodExecutor.andReceive(RestExecutor.java:489)
      	at com.atlassian.crowd.integration.rest.service.RestCrowdClient.getGroup(RestCrowdClient.java:337)
      	at de.theit.jenkins.crowd.CrowdConfigurationService.getGroup(CrowdConfigurationService.java:519)
      	at de.theit.jenkins.crowd.CrowdConfigurationService.isGroupActive(CrowdConfigurationService.java:310)
      	at de.theit.jenkins.crowd.CrowdConfigurationService.isGroupMember(CrowdConfigurationService.java:675)
      	at de.theit.jenkins.crowd.CrowdConfigurationService.isGroupMember(CrowdConfigurationService.java:257)
      	at de.theit.jenkins.crowd.CrowdAuthenticationManager.authenticate(CrowdAuthenticationManager.java:114)
      	at org.acegisecurity.ui.webapp.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:74)
      	at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:252)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
      	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
      	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
      	at org.eclipse.jetty.server.Server.handle(Server.java:502)
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
      	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
      	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
      	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
      	at java.base/java.lang.Thread.run(Thread.java:834)
      Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
      	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
      	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
      	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
      	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:565)
      	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
      	at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
      	at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
      	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276)
      	... 68 more
      

      Exact same config work for jenkins/jenkins:2.176.3

      Regards,

      Valentin

        1. crowd_java_opt.png
          crowd_java_opt.png
          148 kB
        2. plugins.png
          plugins.png
          111 kB
        3. crowd2.png
          crowd2.png
          60 kB
        4. crowd2_2.png
          crowd2_2.png
          76 kB
        5. crowd_jaxb.png
          crowd_jaxb.png
          175 kB
        6. Screenshot 2019-09-10 at 19.46.24.png
          Screenshot 2019-09-10 at 19.46.24.png
          295 kB

          [JENKINS-59301] Crowd 2 Integration is not compatible with Java 11

          Valentin Delaye created issue -
          Valentin Delaye made changes -
          Labels New: java11-compatibility
          Valentin Delaye made changes -
          Attachment New: Screenshot 2019-09-10 at 19.46.24.png [ 48709 ]

          Ramon Leon added a comment -

          alecharp batmat could you take a look here please

          Ramon Leon added a comment - alecharp batmat could you take a look here please

          jonesbusy checking your plugin list, something seems wrong: you should have the jaxb plugin automatically installed when using JDK11.

          Could you please:

          • check if your issue goes away by manually installing the JAXB plugin (https://plugins.jenkins.io/jaxb)
          • see if you can provide a sufficiently isolated reproduction case for this issue?

          Thank you

          Baptiste Mathus added a comment - jonesbusy  checking your plugin list, something seems wrong: you should have the jaxb plugin automatically installed when using JDK11. Could you please: check if your issue goes away by manually installing the JAXB plugin ( https://plugins.jenkins.io/jaxb ) see if you can provide a sufficiently isolated reproduction case for this issue? Thank you

          Hi,

          Problem remains the same if the JAXB plugin is installed manually. It seems it's the only plugin causing this issue on our current deployment (we can see that all the job runs, but not possible to login into the instance.

          I've also found someone having the same issue : https://github.com/jenkinsci/jaxb-plugin/issues/7 (it was posted on the jaxb-plugin), but the stacktrace is the same. Related to the Crowd2 plugin.

          For the moment I don't have, and easy reproducible environment (we have all our infra deployed on K8S and helm).

          Will keep you updated if I'm able to reproduce it locally.

          Regards,

          Valentin Delaye added a comment - Hi, Problem remains the same if the JAXB plugin is installed manually. It seems it's the only plugin causing this issue on our current deployment (we can see that all the job runs, but not possible to login into the instance. I've also found someone having the same issue : https://github.com/jenkinsci/jaxb-plugin/issues/7 (it was posted on the jaxb-plugin), but the stacktrace is the same. Related to the Crowd2 plugin. For the moment I don't have, and easy reproducible environment (we have all our infra deployed on K8S and helm). Will keep you updated if I'm able to reproduce it locally. Regards,
          Valentin Delaye made changes -
          Attachment New: crowd_jaxb.png [ 48731 ]
          Valentin Delaye made changes -
          Attachment New: crowd2_2.png [ 48732 ]
          Attachment New: crowd2.png [ 48733 ]

          Hi again batmat

          Ok so in fact it was very very easy to reproduce locally...

          1) docker run -p 8080:8080 jenkins/jenkins:2.176.3-jdk11
          2) don't install any plugin at startup
          3) Just install the crowd2 plugin (it correctly fetch dependency)
          4) Enter just a fake crowd config and test to validate

          We can see the error is related to JAX-B.

          Thanks

          Valentin Delaye added a comment - Hi again batmat Ok so in fact it was very very easy to reproduce locally... 1) docker run -p 8080:8080 jenkins/jenkins:2.176.3-jdk11 2) don't install any plugin at startup 3) Just install the crowd2 plugin (it correctly fetch dependency) 4) Enter just a fake crowd config and test to validate We can see the error is related to JAX-B. Thanks
          Valentin Delaye made changes -
          Attachment New: plugins.png [ 48735 ]

            dumam Bartosz Nowak
            jonesbusy Valentin Delaye
            Votes:
            15 Vote for this issue
            Watchers:
            30 Start watching this issue

              Created:
              Updated:
              Resolved: