correct way to turn EAR module into OSGI bundle

2019-05-14 14:09发布

问题:

There is a necessity to turn part of EAR (namely - war) into OSGI bundle and retain it's interoperability. Glassfish 3.0.1 already has osgi-web-container module and I succeeded to deploy standalone OSGI war.

But in case of of ex-enterprise war it looks a bit difficult to me.

  1. What do I do with EJB calls from inside future OSGI war? Is it enough to replace @EJB injections with true JNDI lookups?
  2. What about APIs and libraries shared across EAR? I could split and rearrange them, but still I will have at least one jar needed by both EAR and OSGI war. Duplicate, make it as OSGI-bundle itself and make it available to ear somehow, place it GF domain's library path?
  3. Any other ideas, advices which could make that hybrid working?

回答1:

Here are a few things to try out:

  • No need to replace @EJB by JNDI lookup. Your @EJB will continue to work even inside your OSGi War (aka WAB).
  • You can install the shared library as a bundle, then it will be visible to both OSGi war as well as legacy EAR/WAR.

I suggest you follow up in GlassFish forum.