Everything solved! - My client bundle was not supposed to import org.apache.felix.bundlerepository, even though I needed the jar in the classpath. That solved the inconsistency problems. - I had to get the RepositoryAdmin service like it's shown in the tutorials (using RepositoryAdmin.class.getName()). I had no more problems using this because my inconsistency problems were solved.
Thank you! 2008/5/16 Richard S. Hall <[EMAIL PROTECTED]>: > 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] > >