On 6/22/09 9:00 AM, Lohmann Kevin wrote:
Hi *,our application does communication with an ApplicationServer with JNDI-lookups. Therefore we have 3 types of bundles: (1) "ejb-bundle": It is an special bundle, which encapsulates the true AppServer, so with a change of this bundle, we can change the AppServer too. This bundle has an explizit symbolic-bundle-name ("ejb-bundle"). This bundle exists just one time in the OSGi-runtime and includes all vendor-specific jar as private-packages (i.e. the jboss-all-client.jar). It services an OSGi-service to lookup a remote-interface on the AppServer. For this service, it initialized an InitialContext, so the "lookup"-service just call lookup on the InitialContext. (2) "interface-bundle": These bundles includes interfaces, which are the remote-interfaces, that are implemented by EJBs on the AppServer. The bundles export its interfaces. (3) "use-bundle": It is a bundle, which use the remote-interface. Is has imports on the interface-packages. The use-bundle gets the remote-Interface over the OSGi-Service, described above. So, we call in an use-bundle the lookup-service and hope to retrieve a remote-interface. But this only works, when we make the interface-bundles as fragments and attach them to the "ejb-bundle". Otherwise we retrieve not a proxy-object, but an object, which we can not cast to our remote-interface -> class-loading-issue. So far, so good? Is there a solution without fragment/host?
It is not clear to me why the ejb-bundle must have the remote interfaces attached as fragments as opposed to just importing the remote interfaces. If use-bundle gets its interfaces from interface-bundle, but ejb-bundle gets them as fragments, then they are seeing different copies of the same interfaces, which is typically not good.
We could live with that, but we allow to install bundles during runtime. That means, we must dynamicly attach fragments to the ejb-bundle. But we run in errors, when we uninstall these bundles. Then we have to dynamicly detach the fragments from the host. Surprisingly when we type "refresh n" in the console from equinox (n is the bundle_id from the ejb-bundle), the whole OSGi-framework is refreshed.
Dynamic fragment attachment is not mandated by the spec. I don't think dynamic fragment detachment is possible.
-> richard
How do you do this? Instead of returning an remote-interface, the lookup-service could return the initialcontext-object. But then we run into class-loading-issues too. Creating the initialcontext in the "use-bundle" works not too, I assume this is because of not importing the vendor-specific classes from the ejb-bundle. But the use-bundles does not know about the AppServer-vendor. I hope, my concerns got clear. Any ideas to this? Cheers, Kevin --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

