also cc sahoo, a point: hk2-osgi-adapter bundle must be started.
Thanks
Tang
Martin Soch wrote:
> Hello HK2 developers,
>
> I am evaluating HK2 and I am experiencing troubles with named services
> when running in OSGi environment.
> I would like to dynamically create named services with the following
> code snippet:
>
> public EventService getEventService(String name) {
> EventService es = locator.getService(EventService.class, name);
> if (es == null) {
> // there is no service in the registry with given name ->
> create it
> DynamicConfigurationService dcs =
> locator.getService(DynamicConfigurationService.class);
> DynamicConfiguration config = dcs.createDynamicConfiguration();
> Descriptor d = createEventServiceDescriptor(name);
> config.bind(d);
> config.commit();
> es = locator.getService(EventService.class, name);
> }
> return es;
> }
>
> private Descriptor createEventServiceDescriptor(String name) {
> return BuilderHelper.link(EventServiceImpl.class).
> to(EventService.class).
> named(name).
> in(Singleton.class).
> build();
> }
>
> "EventService" is the interface/contract and the "EventServiceImpl" is
> the implementation of that interface.
> The getEventService(String) works fine when running as standalone Java
> application but in OSGi environment it always returns "null".
>
> Under OSGi I am using hk2-osgi-adapter to obtain the ServiceLocator with
> the following code:
>
> Main main = (Main) bundleContext.getService((ServiceReference)
> bundleContext.getServiceReference(Main.class));
> ModulesRegistry registry = (ModulesRegistry)
> bundleContext.getService((ServiceReference)
> bundleContext.getServiceReference(ModulesRegistry.class));
> StartupContext ctx = new StartupContext();
> ServiceLocator l = main.createServiceLocator(registry, ctx, null, null);
>
> where ModulesRegistry means com.sun.enterprise.module.ModulesRegistry,
> Main means com.sun.enterprise.module.bootstrap.Main and bundleContext is
> instance of org.osgi.framework.BundleContext.
>
> Do you have any idea why I am always getting null under OSGi ?
> I am using ProSyst implementation of OSGi and HK2-2.2.0-b27 from Maven
> repo.
>
> Thanks
> Martin
>
--
----------------------
Tang Yong
Senior Engineer
GlassFish Committer (OSGi & OSGi-JavaEE)
OSGi Alliance Supporter
Blog: http://osgizone.typepad.com/tangyong/
Nanjing Fujitsu NanDa Software Tec CO.,LTD
http://www.fujitsu.com/cn/fnst
Tel: +86-25-86630566-8310
Fax: +86-25-83317685
----------------------