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

Crowd 2 plugin not compatible with JDK11

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Component/s: crowd2-plugin
    • Environment:
    • Similar Issues:

      Description

      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

        Attachments

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

          Issue Links

            Activity

            Hide
            jonesbusy Valentin Delaye added a comment -

            Hi! Thanks for the updates!

            Do you think it's something that can be fix "easily" ?

            Thanks for the help and confirming the issue.

            Regards,

            Show
            jonesbusy Valentin Delaye added a comment - Hi! Thanks for the updates! Do you think it's something that can be fix "easily" ? Thanks for the help and confirming the issue. Regards,
            Hide
            alecharp Adrien Lecharpentier added a comment - - edited

            Valentin Delaye sadly, I'm not confident that there is an easy way to fix this. The source code of the libray being hidden (most of it, we can still uncompile it) makes it really difficult for me to have a clear idea.

            I opened a second PR with a test to show the problem: https://github.com/jenkinsci/crowd2-plugin/pull/37

            Show
            alecharp Adrien Lecharpentier added a comment - - edited Valentin Delaye sadly, I'm not confident that there is an easy way to fix this. The source code of the libray being hidden (most of it, we can still uncompile it) makes it really difficult for me to have a clear idea. I opened a second PR with a test to show the problem: https://github.com/jenkinsci/crowd2-plugin/pull/37
            Hide
            nogal Brian McCoskey added a comment -

            Hey Guys,

            I saw the discussion going on here and the concerns about hacking the pom due to the licensing using the proprietary library.

             

            As it turns out, Atlassian released an open source apache 2.0 licensed alternative to the library that utilizes the REST api namespace on the back end:

            https://jira.atlassian.com/browse/CWD-3008

            https://bitbucket.org/atlassian/crowd-rest-client

             

            I'm unsure how helpful this will be, but I just wanted to shed some light on this alternative library if it at all helps solve the issue at hand.

            Show
            nogal Brian McCoskey added a comment - Hey Guys, I saw the discussion going on here and the concerns about hacking the pom due to the licensing using the proprietary library.   As it turns out, Atlassian released an open source apache 2.0 licensed alternative to the library that utilizes the REST api namespace on the back end: https://jira.atlassian.com/browse/CWD-3008 https://bitbucket.org/atlassian/crowd-rest-client   I'm unsure how helpful this will be, but I just wanted to shed some light on this alternative library if it at all helps solve the issue at hand.
            Hide
            reneeshk RENEESH KOTTAKKALATHIL added a comment -

            Running into exact same error when integrating crowd with jenkins. Here are my versions

            Crowd - 3.4

            Jenkins - [ 2.176.2|https://jenkins.io/]

            Jenkins JDK - OpenJDK11

            Show
            reneeshk RENEESH KOTTAKKALATHIL added a comment - Running into exact same error when integrating crowd with jenkins. Here are my versions Crowd - 3.4 Jenkins - [ 2.176.2|https://jenkins.io/] Jenkins JDK - OpenJDK11
            Hide
            msglueck Markus Glück added a comment -

            I also have the same issue here. Started in refactoring the plugin here: https://github.com/jenkinsci/crowd2-plugin/pull/39

            Actually adding the missing functions with the new proposed Crowd REST client (see above) wasn't that hard. Still struggling with the JAXB dependency though. First time I touched a Jenkins plugin, so maybe I'm missing something- 

            but have to switch over to other duties ATM  Hope this helps anyways.

            Show
            msglueck Markus Glück added a comment - I also have the same issue here. Started in refactoring the plugin here: https://github.com/jenkinsci/crowd2-plugin/pull/39 Actually adding the missing functions with the new proposed Crowd REST client (see above) wasn't that hard. Still struggling with the JAXB dependency though. First time I touched a Jenkins plugin, so maybe I'm missing something-  but have to switch over to other duties ATM  Hope this helps anyways.

              People

              • Assignee:
                pingunaut Martin Spielmann
                Reporter:
                jonesbusy Valentin Delaye
              • Votes:
                0 Vote for this issue
                Watchers:
                8 Start watching this issue

                Dates

                • Created:
                  Updated: