Sorry, I had some issues and I was not clear enough.
Let me summarize:
1 - I manage to run the war with the embedded felix and everything works
great.
2 - I had to run the below lines in order that the ProxyServlet will pass
requests to my bundle that use a servlet
* //need it for the dispatcher to work*
* url =
this.servletContext.getResource("/WEB-INF/lib/org.apache.felix.http.bridge-2.2.0.jar");
*
* bundle = context.installBundle(url.toExternalForm());*
* bundle.start(); *
3 - As I said everything works great with one war running in tomcat. When I
try to use 2 wars side by side I get the below exception:
ERROR: Bundle org.apache.felix.http.bridge [2] Error starting
jndi:/localhost/itay/qa/WEB-INF/lib/org.apache.felix.http.bridge-2.2.0.jar
(org.osgi.framework.BundleException: Activator start error in bundle
org.apache.felix.http.bridge [2].)
java.lang.LinkageError: loader constraint violation: when resolving
overridden method
"org.apache.felix.http.base.internal.listener.AbstractListenerManager.addingService(Lorg/osgi/framework/ServiceReference;)Ljava/lang/Object;"
the class lo
ader (instance of
org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the
current class,
org/apache/felix/http/base/internal/listener/AbstractListenerManager, and
its superclass loader (instance of org/apache/catalina/loa
der/WebappClassLoader), have different Class objects for the type
org/osgi/framework/ServiceReference used in the signature
at
org.apache.felix.http.base.internal.HttpServiceController.<init>(HttpServiceController.java:76)
Thanks
On Tue, Jan 1, 2013 at 4:23 PM, Richard S. Hall <[email protected]>wrote:
> On 1/1/13 06:12, itay hindy wrote:
>
>> 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?
>>
>
> Sorry, I don't know what you are talking about.
>
> -> richard
>
>
>> 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-**<http://felix.apache.org/site/**apache-felix-framework-**>
>>>>> launching-and-embedding.html<h**ttp://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.**apac**he.org<http://apache.org>
>>>> <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<http://www.linkedin.com/in/itayhindy>
>>>
>>>
>>
>>
>
> ------------------------------**------------------------------**---------
> 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