aries-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Moulliard <cmoulli...@gmail.com>
Subject Re: Question about Blueprint Service and Bundle loading
Date Fri, 20 Apr 2012 16:23:22 GMT
e-03-06 | Error processing exchange. Exchange[Message: [Body is null]].
Caused by: [java.lang.IllegalArgumentException -
java.lang.ClassCastException@2bd040e8]
java.lang.IllegalArgumentException: java.lang.ClassCastException@2bd040e8
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_31]
at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_31]
at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50)
at org.apache.aries.proxy.impl.DefaultWrapper.invoke(DefaultWrapper.java:31)
at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78)
at $Proxy83.sayHello(Unknown Source)
at
com.mycompany.poc.client.HelloBean.sayHello(HelloBean.java:10)[216:route:1.0.0]

On Fri, Apr 20, 2012 at 6:17 PM, Christian Schneider <
chris@die-schneider.net> wrote:

>  If you reference the service with a filter then OSGi will inject the
> correct impl object. You will not even need to have a dynamic import as the
> impl is installed by the bundle1.
>
> So this should simply work. What exception do you get?
>
> Christian
>
> Am 20.04.2012 17:55, schrieb Charles Moulliard:
>
> Bundle 1 and Bundle 2 contain a different implementation of the interface
> which is exposed as OSGI service
>
>  Bundle 1
>
>     <bean id="service"
> class="com.mycompany.poc.service.impl.FeedbackTeamWS"/>
>
>      <service ref="service"
> interface="com.mycompany.poc.service.Feedback">
>         <service-properties>
>             <entry key="version" value="1"/>
>         </service-properties>
>     </service>
>
>  Bundle 2
>
>      <bean id="service" class="com. mycompany.poc.service.impl.
> FeedbackTeamDB"/>
>
>      <service ref="service"
> interface="com.mycompany.poc.service.Feedback">
>         <service-properties>
>             <entry key="version" value="2"/>
>         </service-properties>
>     </service>
>
>  So the bundle C do an OSGI lookup to retrieve using as key the interface
> name "com.mycompany.poc.service.Feedback", the class implemented in
> bundle 1 or bundle 2.
>
>  What would be great is that the bundle C when the following bean is
> instantiated loads the class from the bundle 1 as the filter of the
> reference to be found corresponds to it
>
>  <property name="feedbackService">
>     <reference interface="com.mycompany.poc.service.Feedback"
> filter="(version=1)"/>
>  </property>
>
>  Intrinsically we know that the class implementing this interface belongs
> to bundle 1 as filter = 1 = OSGI service exposed by bundle 1 = class =
> com.mycompany.poc.service.impl.FeedbackTeamWS
>
>
> --
> Christian Schneiderhttp://www.liquid-reality.de
>
> Open Source Architect
> Talend Application Integration Division http://www.talend.com
>
>

Mime
View raw message