marcanpilami opened a new issue, #1445:
URL: https://github.com/apache/shiro/issues/1445

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/shiro/issues?q=is%3Aissue) and found no 
similar issues.
   
   
   ### Environment
   
   OSGi R8 Felix environment.
   
   ### Shiro version
   
   Version 2.0.0 of shiro-web, jakarta classifier.
   
   ### What was the actual outcome?
   
   Inside its manifest, `shiro-web` with jakarta classifier (as documented in  
https://shiro.apache.org/jakarta-ee.html) imports old javax.servlet packages 
instead of the newer jakarta ones.
   
   As a result, we need to install old javax bundles just to start the 
shiro-web bundle, and in the end we get a very logical exception  
`java.lang.ClassNotFoundException: jakarta.servlet.ServletContextListener not 
found by org.apache.shiro.web`
   
   This is logical since the code refers to `jakarta.*` packages, but as the 
manifest says to import `javax.*` instead jakarta packages are not seen (and we 
have the old packages present, but that is a lesser evil - the main issue here 
is that we fail).
   
   This seems to be due to the way the shiro jakarta packages are created by 
using shading - the manifest does not seem to be re-written at the time. I may 
be wrong.
   
   ### What was the expected outcome?
   
   shiro-web bundle should start.
   
   ### How to reproduce
   
   Just try to start the bundle in any OSGi R8 container like Karaf.
   
   ### Debug logs
   
   ```
   org.osgi.framework.ServiceException: Service factory exception: 
jakarta/servlet/ServletContextListener
           at 
org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:354)
           at 
org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:249)
           at 
org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:362)
           at org.apache.felix.framework.Felix.getService(Felix.java:3984)
           at 
org.apache.felix.framework.BundleContextImpl$ServiceObjectsImpl.getService(BundleContextImpl.java:554)
           at 
org.apache.felix.http.base.internal.util.ServiceUtils.safeGetServiceObjects(ServiceUtils.java:65)
           at 
org.apache.felix.http.base.internal.runtime.AbstractInfo.getService(AbstractInfo.java:253)
           at 
org.apache.felix.http.base.internal.handler.ListenerHandler.init(ListenerHandler.java:118)
           at 
org.apache.felix.http.base.internal.registry.EventListenerRegistry.addListeners(EventListenerRegistry.java:95)
           at 
org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry.registerListeners(PerContextHandlerRegistry.java:257)
           at 
org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.registerWhiteboardService(WhiteboardManager.java:768)
           at 
org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.activate(WhiteboardManager.java:272)
           at 
org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.addContextHelper(WhiteboardManager.java:365)
           at 
org.apache.felix.http.base.internal.whiteboard.tracker.JavaxServletContextHelperTracker.added(JavaxServletContextHelperTracker.java:108)
           at 
org.apache.felix.http.base.internal.whiteboard.tracker.JavaxServletContextHelperTracker.addingService(JavaxServletContextHelperTracker.java:82)
           at 
org.apache.felix.http.base.internal.whiteboard.tracker.JavaxServletContextHelperTracker.addingService(JavaxServletContextHelperTracker.java:38)
           at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:944)
           at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:872)
           at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
           at 
org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
           at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:322)
           at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:265)
           at 
org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.addTracker(WhiteboardManager.java:187)
           at 
org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.start(WhiteboardManager.java:172)
           at 
org.apache.felix.http.base.internal.HttpServiceController.register(HttpServiceController.java:136)
           at 
org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:360)
           at 
org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:174)
           at 
org.apache.felix.http.jetty.internal.JettyService.updated(JettyService.java:166)
           at 
org.apache.felix.http.jetty.internal.JettyManagedService.updated(JettyManagedService.java:38)
           at 
org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189)
           at 
org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152)
           at 
org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85)
           at 
org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1418)
           at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:122)
           at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:84)
           at java.base/java.lang.Thread.run(Thread.java:1583)
   Caused by: java.lang.NoClassDefFoundError: 
jakarta/servlet/ServletContextListener
           at java.base/java.lang.ClassLoader.defineClass1(Native Method)
           at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2338)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClassParallel(BundleWiringImpl.java:2156)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2090)
           at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
           at 
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
           at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1358)
           at 
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1612)
           at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1528)
           at 
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
           at java.base/java.lang.ClassLoader.defineClass1(Native Method)
           at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2338)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClassParallel(BundleWiringImpl.java:2156)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2090)
           at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
           at 
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
           at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:2116)
           at 
org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:986)
           at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:1027)
           at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1057)
           at 
org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955)
           at 
org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:920)
           at 
org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:349)
           ... 35 common frames omitted
   Caused by: java.lang.ClassNotFoundException: 
jakarta.servlet.ServletContextListener not found by org.apache.shiro.web [106]
           at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)
           at 
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
           at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
           ... 66 common frames omitted
   ```
   
   Manifest of the bundle :
   
   ```
   Manifest-Version: 1.0
   Automatic-Module-Name: org.apache.shiro.web
   Build-Jdk-Spec: 21
   Bundle-Description: Apache Shiro is a powerful and flexible open-sourc
    e security framework that cleanly handles        authentication, auth
    orization, enterprise session management, single sign-on and cryptogr
    aphy services.
   Bundle-DocURL: https://www.apache.org/
   Bundle-License: https://www.apache.org/licenses/LICENSE-2.0.txt
   Bundle-ManifestVersion: 2
   Bundle-Name: Apache Shiro :: Web
   Bundle-SymbolicName: org.apache.shiro.web
   Bundle-Vendor: The Apache Software Foundation
   Bundle-Version: 2.0.0
   Created-By: Apache Maven Bundle Plugin 5.1.9
   Export-Package: org.apache.shiro.web;version="2.0.0",org.apache.shiro.
    web.config;version="2.0.0";uses:="javax.servlet,org.apache.shiro.conf
    ig,org.apache.shiro.ini,org.apache.shiro.mgt,org.apache.shiro.web.fil
    ter.mgt",org.apache.shiro.web.env;version="2.0.0";uses:="javax.servle
    t,org.apache.shiro.config,org.apache.shiro.env,org.apache.shiro.lang.
    util,org.apache.shiro.mgt,org.apache.shiro.web.config,org.apache.shir
    o.web.filter.mgt,org.apache.shiro.web.mgt",org.apache.shiro.web.filte
    r;version="2.0.0";uses:="javax.servlet,org.apache.shiro.subject,org.a
    pache.shiro.util,org.apache.shiro.web.servlet",org.apache.shiro.web.f
    ilter.authc;version="2.0.0";uses:="javax.servlet,org.apache.shiro.aut
    hc,org.apache.shiro.subject,org.apache.shiro.web.filter,org.apache.sh
    iro.web.servlet",org.apache.shiro.web.filter.authz;version="2.0.0";us
    es:="javax.servlet,javax.servlet.http,org.apache.shiro.web.filter",or
    g.apache.shiro.web.filter.mgt;version="2.0.0";uses:="javax.servlet,or
    g.apache.shiro.config,org.apache.shiro.util",org.apache.shiro.web.fil
    ter.session;version="2.0.0";uses:="javax.servlet,org.apache.shiro.web
    .filter",org.apache.shiro.web.mgt;version="2.0.0";uses:="javax.servle
    t,org.apache.shiro.mgt,org.apache.shiro.realm,org.apache.shiro.sessio
    n,org.apache.shiro.session.mgt,org.apache.shiro.subject,org.apache.sh
    iro.web.servlet",org.apache.shiro.web.servlet;version="2.0.0";uses:="
    javax.servlet,javax.servlet.http,org.apache.shiro.config,org.apache.s
    hiro.lang.util,org.apache.shiro.session,org.apache.shiro.subject,org.
    apache.shiro.web.config,org.apache.shiro.web.filter.mgt,org.apache.sh
    iro.web.mgt,org.apache.shiro.web.subject",org.apache.shiro.web.sessio
    n;version="2.0.0";uses:="javax.servlet.http,org.apache.shiro.session"
    ,org.apache.shiro.web.session.mgt;version="2.0.0";uses:="javax.servle
    t,javax.servlet.http,org.apache.shiro.authz,org.apache.shiro.session,
    org.apache.shiro.session.mgt,org.apache.shiro.web.servlet,org.apache.
    shiro.web.util",org.apache.shiro.web.subject;version="2.0.0";uses:="j
    avax.servlet,org.apache.shiro.mgt,org.apache.shiro.subject,org.apache
    .shiro.web.util",org.apache.shiro.web.subject.support;version="2.0.0"
    ;uses:="javax.servlet,org.apache.shiro.mgt,org.apache.shiro.session,o
    rg.apache.shiro.session.mgt,org.apache.shiro.subject,org.apache.shiro
    .subject.support,org.apache.shiro.web.subject",org.apache.shiro.web.t
    ags;version="2.0.0";uses:="javax.servlet.jsp,javax.servlet.jsp.tagext
    ,org.apache.shiro.subject",org.apache.shiro.web.util;version="2.0.0";
    uses:="javax.servlet,javax.servlet.http,org.apache.shiro.web.env"
   Implementation-Title: Apache Shiro :: Web
   Implementation-Vendor: The Apache Software Foundation
   Implementation-Version: 2.0.0
   Import-Package: org.apache.shiro;version="[2,3)",org.apache.shiro.auth
    c;version="[2,3)",org.apache.shiro.authz;version="[2,3)",org.apache.s
    hiro.config;version="[2,3)",org.apache.shiro.config.ogdl;version="[2,
    3)",org.apache.shiro.env;version="[2,3)",org.apache.shiro.ini;version
    ="[2,3)",org.apache.shiro.lang.codec;version="[2,3)",org.apache.shiro
    .lang.io;version="[2,3)",org.apache.shiro.lang.util;version="[2,3)",o
    rg.apache.shiro.mgt;version="[2,3)",org.apache.shiro.realm;version="[
    2,3)",org.apache.shiro.session;version="[2,3)",org.apache.shiro.sessi
    on.mgt;version="[2,3)",org.apache.shiro.subject;version="[2,3)",org.a
    pache.shiro.subject.support;version="[2,3)",org.apache.shiro.util;ver
    sion="[2,3)",org.apache.shiro.web.config;version="[2,3)",org.apache.s
    hiro.web.env;version="[2,3)",org.apache.shiro.web.filter;version="[2,
    3)",org.apache.shiro.web.filter.authc;version="[2,3)",org.apache.shir
    o.web.filter.authz;version="[2,3)",org.apache.shiro.web.filter.mgt;ve
    rsion="[2,3)",org.apache.shiro.web.filter.session;version="[2,3)",org
    .apache.shiro.web.mgt;version="[2,3)",org.apache.shiro.web.servlet;ve
    rsion="[2,3)",org.apache.shiro.web.session;version="[2,3)",org.apache
    .shiro.web.session.mgt;version="[2,3)",org.apache.shiro.web.subject;v
    ersion="[2,3)",org.apache.shiro.web.subject.support;version="[2,3)",o
    rg.apache.shiro.web.util;version="[2,3)",javax.servlet.jsp;resolution
    :=optional,javax.servlet.jsp.tagext;resolution:=optional,java.beans,j
    ava.io,java.lang,java.lang.invoke,java.lang.reflect,java.net,java.sec
    urity,java.text,java.util,java.util.concurrent,java.util.function,jav
    a.util.regex,java.util.stream,javax.servlet;version="[4.0,5)",javax.s
    ervlet.http;version="[4.0,5)",org.owasp.encoder;version="[1.2,2)",org
    .slf4j;version="[2.0,3)"
   Include-Resource: META-INF/shiro.tld=src/main/resources/META-INF/shiro
    .tld,META-INF/DEPENDENCIES=target/maven-shared-archive-resources/META
    -INF/DEPENDENCIES,META-INF/LICENSE=target/maven-shared-archive-resour
    ces/META-INF/LICENSE,META-INF/NOTICE=target/maven-shared-archive-reso
    urces/META-INF/NOTICE
   Private-Package: org.apache.shiro.web.config,org.apache.shiro.web.env,
    org.apache.shiro.web.filter,org.apache.shiro.web.filter.authc,org.apa
    che.shiro.web.filter.authz,org.apache.shiro.web.filter.mgt,org.apache
    .shiro.web.filter.session,org.apache.shiro.web.mgt,org.apache.shiro.w
    eb,org.apache.shiro.web.servlet,org.apache.shiro.web.session,org.apac
    he.shiro.web.session.mgt,org.apache.shiro.web.subject,org.apache.shir
    o.web.subject.support,org.apache.shiro.web.tags,org.apache.shiro.web.
    util
   Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=11))"
   Specification-Title: Apache Shiro :: Web
   Specification-Vendor: The Apache Software Foundation
   Specification-Version: 2.0
   Tool: Bnd-6.3.1.202206071316
   
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to