Santosh, I'm glad you got this working but please bear in mind that it is a poor design choice to export an interface from the same bundle that provides the service, because it does not truly de-couple the consumer from the provider, and it makes it much harder for you to update the provider bundle as the implementation of the service evolves. So I still recommend that you pull the interface into a third bundle.
Regards, Neil On 5/30/08, Santosh Akhilesh <[EMAIL PROTECTED]> wrote: > > Hi, > > Thanks I got the problem solved as per your suggestion. > > However I could make it work with two bundles as per Toni's hint > > I included the jar in to the bundle one which was registering the service, > this bundle exported the interface A. > > In the second bundle I just imported the interface A and retrieved the > object and cast to A successfully. > > Thanks for your help and time. > > Cheers, > Santosh Akhilesh > **************************************************************************** > ************** > > This email and its attachments contain confidential information from > HUAWEI, which is intended only for the person or entity whose address is > listed above. Any use of the information contained herein in any way > (including, but not limited to, total or partial disclosure, reproduction, > or dissemination) by persons other than the intended recipient(s) is > prohibited. If you receive this e-mail in error, please notify the sender by > phone or email immediately and delete it! > > > **************************************************************************** > ************* > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] > Sent: Thursday, May 29, 2008 9:02 PM > To: Equinox development mailing list > Subject: Re: [equinox-dev] getservice throws class cast exception > > Santosh, > > You should not include the JAR that contains the interface in the > classpath of the two bundles. You should make it into a third bundle > and use Import-Package to depend on the interface. > > When a class is defined independently by two or more classloaders, the > resulting classes are considered by the JVM to be different, even if > they have exactly the same name and are defined from the same bytes on > disk. Therefore you cannot cast an instance of one type into a field > of the other. > > Regards > Neil > > On 5/29/08, Santosh Akhilesh <[EMAIL PROTECTED]> wrote: >> Dear All, >> >> >> >> I am new to OSGI and Equinox. >> >> >> >> I have defined an interface say A, this is defined in a project and > exported >> as jar >> >> >> >> Now I create Two OSGI bundles I include this jar in both the bundles. >> >> >> >> >From one bundle I implement the interface A and register the service to > the >> bundle context from second bundle I try to retrieve this service from > bundle >> context in the activator start function. >> >> >> >> I can see that service is retrieved but when I cast it to interface A, I > get >> class cast exception >> >> >> >> Any pointer why this happens and how to correct it. >> >> >> >> Regards, >> >> Santosh Akhilesh >> >> Ph: 9845482201 >> >> >> >> > _______________________________________________ > equinox-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/equinox-dev > > > _______________________________________________ > equinox-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/equinox-dev > _______________________________________________ equinox-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/equinox-dev
