Mathieu Plourde wrote:
Hello all,

   I'm a newbie using Felix and I'm wondering how to use the OBR (
http://felix.apache.org/site/apache-felix-osgi-bundle-repository-obr.html).
In the application I'm working on, I want to be able to add my own
repositories. So far I've registered the Apache Felix Bundle Repository as a
bundle, but I don't know how to use it. The following code (from the Felix
OBR site) does exactly what I want:


RepositoryAdmin repoAdmin = ... // Get repo admin service
Resolver resolver = repoAdmin.resolver();
Resource resource = repoAdmin.discoverResources(filterStr);
resolver.add(resource);
if (resolver.resolve())
{
    resolver.deploy(true);
}
else
{
    Requirement[] reqs = resolver.getUnsatisfiedRequirements();
    for (int i = 0; i < reqs.length; i++)
    {
        System.out.println("Unable to resolve: " + reqs[i]);
    }
}



The only problem is how to get the repo admin service?

You need to lookup the service in the OSGi service registry.

The only coding stuff
I've done with Felix are the tutorials. I read a lot of doc, but I'm
struggling with the coding.

Well, if you have done the tutorials, you should look more closely at how the clients lookup services in the service registry (see examples 3 & 4)...the OBR bundle provides the RepositoryAdmin service. Your client bundle will need to do a service lookup to find it. Once you have the service, then you will be able to do the above code.

The only thing I've done so far
is installing/activating the Apache Felix Bundle Repository bundle. That's
pretty much it. I want to use the repo admin service in another bundle. Do I
need to import the packages in that bundle? When I do it, I get conflicts
saying some classes are loaded twice. For example, if I use the class
Repository, it says the classloader already loaded the same class
already (The Apache Felix Bundle Repository is installed as a bundle, and I
also inculded the .jar file in the classpath. Maybe that could be the
problem? But if I don't add it to the classpath, how to I access the
classes?)

In order to use the OBR service you will need to import the OBR API package in your client bundle. If you are getting inconsistency, it is likely because you have the classes available from more than one place (e.g., on your class path or in your client bundle). Generally speaking, the OBR packages should only be contained in the OBR bundle JAR file and no place else.

As you can see I got some basic problems with it. I would really appreciate
if you could help me. Also if you have some interesting sites/doc about
Felix OBR, send them out please.

I know you were using SIP Communicator, but for these experiments, I would just work with Felix by itself for now. When you start Felix in already has OBR installed, so you just need to create a simple client bundle that will import the OBR API package in its manifest and do the service lookup in its start() method. It should be pretty simple for you to get this working; however, if you are still having difficulties at this point, then you can easily post your bundle code and manifest and we will be able to figure it out quickly.

-> richard

Thank you very much!

Sincerely,
    Mathieu


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to