Ignore my last mail, I figure it out. It was because of activators order. Another question, I manage now to run the war that used the embedded felix. I try to execute http requests but fail on the the ProxyServlet. The DispatcherTracker has not been initialize so this.tracker.getDispatcher() returns null.
How can I activate it? Thanks in advance On Tue, Jan 1, 2013 at 10:10 AM, itay hindy <[email protected]> wrote: > Thanks Richard, I followed your advice and make it works. > Now I have a new Issue: > > I try to use *bundle.update() *and I get next exception: > *Caused by: java.net.MalformedURLException: Unknown protocol: obr > * > When I run felix *not *embedded from tomcat everything works. > > I looked into it and the problem seems to be that when running embedded > felix within tomcat the URLHandlersStreamHandlerProxy class is not used. > > The next line: > *return new URL(context, "obr:...", handler)* > for embedded felix just tries to create url while for stand alone felix it > uses the URLHandlersStreamHandlerProxy. > > Any Idea how to config it? > > On Thu, Dec 27, 2012 at 4:08 PM, Richard S. Hall <[email protected]>wrote: > >> On 12/27/12 07:25, itay hindy wrote: >> >>> Hi All, >>> >>> I have a question about running embedded felix within tomcat. >>> >>> I had follow the instructions at >>> http://felix.apache.org/site/**apache-felix-framework-** >>> launching-and-embedding.html<http://felix.apache.org/site/apache-felix-framework-launching-and-embedding.html> >>> >>> I manage to run felix within tomcat, however I have a problem with class >>> loaders. >>> >>> Here is the scenario: >>> 1 - My host application needs to use the RepositoryAdmin service >>> from org.apache.felix.**bundlerepository-1.6.6.jar bundle >>> 2 - I add the org.apache.felix.**bundlerepository-1.6.6.jar to my class >>> path >>> so I can access its interfaces >>> 3 - I install this bundle on my host application activator code >>> URL url = >>> this.servletContext.**getResource("/WEB-INF/lib/org.** >>> apache.felix.bundlerepository-**1.6.6.jar"); >>> Bundle bundle = context.installBundle(url.**toExternalForm()); >>> bundle.start(); >>> 4 - I have created ServiceTracker for the RepositoryAdmin service >>> 5 - In the ServiceTracker the next bold line fails with class cast >>> exception >>> public Object addingService(ServiceReference reference) { >>> Object serviceObject = super.addingService(reference)** >>> ; >>> try { >>> *repositoryAdmin = (RepositoryAdmin)** >>> serviceObject*; >>> >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> return repositoryAdmin; >>> } >>> >>> The reason seems to be because RepositoryAdmin interface classloader >>> comes >>> from org.apache.catalina.loader.**WebappClassLoader and the >>> actual RepositoryAdminImpl object (the *serviceObject*) is coming from >>> BundleWiringImpl$**BundleClassLoaderJava5 >>> >> >> Yes, of course. The bundle doesn't have access to your outer repository >> classes and your host doesn't have access to the bundle's repository >> classes. >> >> You will need to try to export the repository packages from your host app >> via the system bundle. Of course, this will only work if the repository >> bundle properly imports AND exports the repository packages. Even if it >> does, it is tricky and might not work if there are any "uses" constraint >> issues, but you could try. If that doesn't work, you could look into boot >> delegating the packages from your class path, but that is a last resort. >> >> -> richard >> >> >> >> >> >>> Any Idea? >>> >>> Regards, >>> Itay Hindy >>> >>> >> >> ------------------------------**------------------------------**--------- >> To unsubscribe, e-mail: >> users-unsubscribe@felix.**apache.org<[email protected]> >> For additional commands, e-mail: [email protected] >> >> > > > -- > Regards, > > Itay Hindy > Software Solutions > +972-54-5935042 > linkedin: http://www.linkedin.com/in/itayhindy > -- Regards, Itay Hindy Software Solutions +972-54-5935042 linkedin: http://www.linkedin.com/in/itayhindy

