You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Carsten Ziegeler (Jira)" <ji...@apache.org> on 2022/04/28 11:37:00 UTC

[jira] [Work started] (FELIX-6525) org.apache.felix.http.servlet-api exports multiple versions with no uses

     [ https://issues.apache.org/jira/browse/FELIX-6525?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Work on FELIX-6525 started by Carsten Ziegeler.
-----------------------------------------------
> org.apache.felix.http.servlet-api exports multiple versions with no uses
> ------------------------------------------------------------------------
>
>                 Key: FELIX-6525
>                 URL: https://issues.apache.org/jira/browse/FELIX-6525
>             Project: Felix
>          Issue Type: Improvement
>          Components: HTTP Service
>    Affects Versions: http.servlet-api-1.2.0
>            Reporter: Tom Watson
>            Assignee: Carsten Ziegeler
>            Priority: Major
>             Fix For: http.servlet-api-2.0.0
>
>
> Here is the Export-Package for the bundle
> {quote}
> Export-Package: 
>   javax.servlet;version="2.6";uses:="javax.servlet.annotation,javax.servlet.descriptor",
>   javax.servlet.annotation;version="2.6";uses:="javax.servlet",javax.servlet.descriptor;version="2.6",
>   javax.servlet.http;version="2.6";uses:="javax.servlet",
>   javax.servlet;version="3.0",
>   javax.servlet.annotation;version="3.0",
>   javax.servlet.descriptor;version="3.0",
>   javax.servlet.http;version="3.0",
>   javax.servlet;version="3.1",
>   javax.servlet.annotation;version="3.1",
>   javax.servlet.descriptor;version="3.1",
>   javax.servlet.http;version="3.1",
>   javax.servlet;version="4.0",
>   javax.servlet.annotation;version="4.0",
>   javax.servlet.descriptor;version="4.0",
>   javax.servlet.http;version="4.0"{quote}
> Only the lowest version of the packages is exported with the `uses` directive.  I believe this will cause some very difficult to debug resolution issues.  Each export becomes a distinct capability to the resolver.  Bundles wiring to the 2.6 versions will be constrained by the used packages while bundles that can wiring to the higher versions will not be constrained.
> This becomes even more prevalent if a bundle uses the recommended way to consume these osgi.contract bundles.  There they would import the packages without any specified version, but then also put a requirement on the osgi.contract for JavaServlet at a specific version.  This contract is also provided by this servlet-api bundle with the proper uses constraints.  But now that leaves the resolver with the option to choose any versions exported by this bundle.  Most likely the framework ResolveContext is going to start with the highest version available.  And that package will have no uses contraints.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)