What do you mean with 'framework' ? regards,
Dhiego. 2013/2/12 Richard S. Hall <[email protected]> > You are loading the class from two different class loaders, thus they are > not compatible with each other. > > You cannot "import" packages from bundles when you are on the outside of > the framework, such as you are trying to do by moving your client to the > outside. > > The only way you can get this to work is to put the packages you want to > share on the outside too and then export them into the framework via the > system bundle (see org.osgi.framework.system.**packages.extra config > property). > > Any classes you want to share between bundles and outside code must be on > the class path and shared into the framework...we have a whole chapter on > launching and embedding frameworks in the OSGi in Action book if you want a > more detailed explanation... > > -> richard > > p.s. Technically, you could also use reflection in the client instead of > using the classes directly, but I assume you don't want to do that. > > > On 2/12/13 13:56 , Imóveis Nacionais wrote: > >> I have 2 bundles, one that supplys a service and the other that calls the >> service. When both are installed and started in felix framework everything >> works. >> >> Now, I would like to drop/forget the client bundle and create a console >> app >> to launch felix, install server bundle and call the service. >> >> >> >> Here the structure of server bundle (MyBundleServer): >> >> Src >> >> com.mycompany.mybundleserver package >> >> Activator.java >> >> upnpImpl.java >> >> com.mycompany.mybundleserver.**serviceinterface >> >> upnp.java -> the interface >> >> >> >> For the console client, I created a java application, I added the >> org.apache.felix.framework-2.**0.0.jar and wrote the following code in >> main() >> function >> >> >> FrameworkFactory frameworkFactory = >> ServiceLoader.load(**FrameworkFactory.class).**iterator().next(); >> >> Map<String, String> config = new HashMap<String, String>(); >> >> Framework framework = frameworkFactory.newFramework(**config); >> >> framework.start(); >> >> >> BundleContext context = framework.getBundleContext(); >> >> Bundle y= >> context.installBundle("file:/**C:/OSGi/felix-framework-4.0.3/** >> MyBundleServer-1.0-SNAPSHOT.**jar" >> ); //the server bundle >> >> y.start(); >> >> >> >> ServiceReference sr = context.getServiceReference(** >> upnp.class.getName()); >> >> if(sr != null) >> >> { >> >> upnp x = (upnp)context.getService(sr); //interface type >> >> if(x != null) >> >> { >> >> int n=x.GetNumber(); >> >> context.ungetService(sr); >> >> } >> >> } >> >> >> >> When running, line >> >> upnp x = (upnp)context.getService(sr); >> >> generates: >> >> Exception in thread "main" java.lang.ClassCastException: >> com.mycompany.mybundleserver.**upnpImpl cannot be cast to >> com.mycompany.mybundleserver.**serviceinterface.upnp >> >> at mystandaloneclient.**MyStandAloneClient.main(** >> MyStandAloneClient.java:65) >> >> >> >> So, if upnpImpl implements upnp interface and upnp is the interface why >> can >> not JVM cast this stuff? >> >> Thanks a lot >> >> >> >> Alex >> >> > > ------------------------------**------------------------------**--------- > To unsubscribe, e-mail: > users-unsubscribe@felix.**apache.org<[email protected]> > For additional commands, e-mail: [email protected] > >

