You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by to...@quarendon.net on 2016/09/20 13:19:29 UTC

Resolution problem with osgi.enroute.dto.api

I'm tracking down a rather odd problem trying to deploy a bundle into Karaf. The
issue appears to be with the osgi.enroute.dto.api package.

I'm getting this resolution error from Karaf:

missing requirement: osgi.wiring.package;
filter:="(&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.0)(!(version>=2.0.0)))"

So I don't have anything that provides the osgi.enroute.dto.api package.

I have the Karaf obr festure installed, and it's set up to point to 
https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/index.xml

So I *think* it ought to just find whatever it needs by just looking in that
OBR. Nice.

Looking at the runbundles list in the bndrun file I have, it shows
"osgi.enroute.dto.bndlib.provider". At a guess this is where bndtools has
resolved that capability. Indeed, if I look at the MANIFEST for that jar, I see

Export-Package: osgi.enroute.dto.api;version="1.0.0"

If I use Karaf to list the information about that JAR though, it shows:
Requires:package:(&(package=osgi.enroute.dto.api)(version>=1.0.0)(!(version>=1.1.0)))
Karaf is just showing the information in the
https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/index.xml
file here.

So, on the one hand, the osgi.enroute.dto.bndlib.provider.jar file says it
exports the package, but on the other hand the OBR index says that it has a
requirement on that package.

On the face of it, this seems like a contradiction. Indeed if I install that
bundle into Karaf, it complains of:
Unsatisfied Requirements:
[osgi.enroute.dto.bndlib.provider [60](R 60.0)] osgi.wiring.package;
(&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.0)(!(version>=1.1.0)))

Equally if I create a very simple bundle that just has:
   @Reference private osgi.enroute.dto.api.DTOs dtos;

I don't seem to be able to deploy it within Karaf, bundle:diag shows:

Unsatisfied Requirements:
[simple.dtousage [63](R 63.0)] osgi.wiring.package;
(&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.0)(!(version>=2.0.0)))
[simple.dtousage [63](R 63.0)] osgi.service;
(objectClass=osgi.enroute.dto.api.DTOs)


Is this an issue with the bundle? Or the bnd index? Or with karaf? 
Or am I misinterpreting? 

Thanks.

Re: Resolution problem with osgi.enroute.dto.api

Posted by Guillaume Nodet <gn...@apache.org>.
In order to use a R5 repository, you can do the following.


<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="test">
<resource-repository>
https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/index.xml
</resource-repository>
<feature name="test">
<requirement>
osgi.wiring.package;filter:="(&amp;(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.0)(!(version>=2.0.0)))"
</requirement>
</feature>
</features>

However, using this very simple file leads to the following:


*karaf*@root()> feature:install --verbose --simulate test

Adding features: test/[0,0.0.0]

Changes to perform:

  Region: root

    Bundles to install:


https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/org.apache.felix.log/org.apache.felix.log-1.0.1.jar


https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/org.apache.felix.scr/org.apache.felix.scr-2.0.0.jar


https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/org.eclipse.osgi/org.eclipse.osgi-3.10.100.jar


https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/org.knopflerfish.bundle.useradmin/org.knopflerfish.bundle.useradmin-4.1.1.jar


https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/osgi.enroute.dtos.bndlib.provider/osgi.enroute.dtos.bndlib.provider-1.0.0.jar


https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/cnf/distro/osgi.promise/osgi.promise-6.0.0.jar

But I don't guarantee the results... nor its usability, it really depends
on the content of the index.xml.

Guillaume


2016-09-20 15:19 GMT+02:00 <to...@quarendon.net>:

> I'm tracking down a rather odd problem trying to deploy a bundle into
> Karaf. The
> issue appears to be with the osgi.enroute.dto.api package.
>
> I'm getting this resolution error from Karaf:
>
> missing requirement: osgi.wiring.package;
> filter:="(&(osgi.wiring.package=osgi.enroute.dto.api)(
> version>=1.0.0)(!(version>=2.0.0)))"
>
> So I don't have anything that provides the osgi.enroute.dto.api package.
>
> I have the Karaf obr festure installed, and it's set up to point to
> https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/
> cnf/distro/index.xml
>
> So I *think* it ought to just find whatever it needs by just looking in
> that
> OBR. Nice.
>
> Looking at the runbundles list in the bndrun file I have, it shows
> "osgi.enroute.dto.bndlib.provider". At a guess this is where bndtools has
> resolved that capability. Indeed, if I look at the MANIFEST for that jar,
> I see
>
> Export-Package: osgi.enroute.dto.api;version="1.0.0"
>
> If I use Karaf to list the information about that JAR though, it shows:
> Requires:package:(&(package=osgi.enroute.dto.api)(version>
> =1.0.0)(!(version>=1.1.0)))
> Karaf is just showing the information in the
> https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/
> cnf/distro/index.xml
> file here.
>
> So, on the one hand, the osgi.enroute.dto.bndlib.provider.jar file says it
> exports the package, but on the other hand the OBR index says that it has a
> requirement on that package.
>
> On the face of it, this seems like a contradiction. Indeed if I install
> that
> bundle into Karaf, it complains of:
> Unsatisfied Requirements:
> [osgi.enroute.dto.bndlib.provider [60](R 60.0)] osgi.wiring.package;
> (&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.
> 0)(!(version>=1.1.0)))
>
> Equally if I create a very simple bundle that just has:
>    @Reference private osgi.enroute.dto.api.DTOs dtos;
>
> I don't seem to be able to deploy it within Karaf, bundle:diag shows:
>
> Unsatisfied Requirements:
> [simple.dtousage [63](R 63.0)] osgi.wiring.package;
> (&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.
> 0)(!(version>=2.0.0)))
> [simple.dtousage [63](R 63.0)] osgi.service;
> (objectClass=osgi.enroute.dto.api.DTOs)
>
>
> Is this an issue with the bundle? Or the bnd index? Or with karaf?
> Or am I misinterpreting?
>
> Thanks.
>



-- 
------------------------
Guillaume Nodet
------------------------
Red Hat, Open Source Integration

Email: gnodet@redhat.com
Web: http://fusesource.com
Blog: http://gnodet.blogspot.com/

Re: Resolution problem with osgi.enroute.dto.api

Posted by David Daniel <da...@gmail.com>.
API bundles are generally marked compile only and should not be deployed at
runtime

On Sep 20, 2016 9:19 AM, <to...@quarendon.net> wrote:

> I'm tracking down a rather odd problem trying to deploy a bundle into
> Karaf. The
> issue appears to be with the osgi.enroute.dto.api package.
>
> I'm getting this resolution error from Karaf:
>
> missing requirement: osgi.wiring.package;
> filter:="(&(osgi.wiring.package=osgi.enroute.dto.api)(
> version>=1.0.0)(!(version>=2.0.0)))"
>
> So I don't have anything that provides the osgi.enroute.dto.api package.
>
> I have the Karaf obr festure installed, and it's set up to point to
> https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/
> cnf/distro/index.xml
>
> So I *think* it ought to just find whatever it needs by just looking in
> that
> OBR. Nice.
>
> Looking at the runbundles list in the bndrun file I have, it shows
> "osgi.enroute.dto.bndlib.provider". At a guess this is where bndtools has
> resolved that capability. Indeed, if I look at the MANIFEST for that jar,
> I see
>
> Export-Package: osgi.enroute.dto.api;version="1.0.0"
>
> If I use Karaf to list the information about that JAR though, it shows:
> Requires:package:(&(package=osgi.enroute.dto.api)(version>
> =1.0.0)(!(version>=1.1.0)))
> Karaf is just showing the information in the
> https://raw.githubusercontent.com/osgi/osgi.enroute/v1.0.0/
> cnf/distro/index.xml
> file here.
>
> So, on the one hand, the osgi.enroute.dto.bndlib.provider.jar file says it
> exports the package, but on the other hand the OBR index says that it has a
> requirement on that package.
>
> On the face of it, this seems like a contradiction. Indeed if I install
> that
> bundle into Karaf, it complains of:
> Unsatisfied Requirements:
> [osgi.enroute.dto.bndlib.provider [60](R 60.0)] osgi.wiring.package;
> (&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.
> 0)(!(version>=1.1.0)))
>
> Equally if I create a very simple bundle that just has:
>    @Reference private osgi.enroute.dto.api.DTOs dtos;
>
> I don't seem to be able to deploy it within Karaf, bundle:diag shows:
>
> Unsatisfied Requirements:
> [simple.dtousage [63](R 63.0)] osgi.wiring.package;
> (&(osgi.wiring.package=osgi.enroute.dto.api)(version>=1.0.
> 0)(!(version>=2.0.0)))
> [simple.dtousage [63](R 63.0)] osgi.service;
> (objectClass=osgi.enroute.dto.api.DTOs)
>
>
> Is this an issue with the bundle? Or the bnd index? Or with karaf?
> Or am I misinterpreting?
>
> Thanks.
>