dev@glassfish.java.net

Re: HK2 secret sauce--why don't _at_Extract and _at_Inject work

From: Lloyd L Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Thu, 13 Mar 2008 15:35:57 -0700

Answer: it just doesn't work.

I had to make it implement org.jvnet.hk2.component.Factory and add a
getObject() method.

I don't understand this asymmetric coding: @Extract doesn't function,
but @Inject does if the Factory provides an object.

Lloyd

On Mar 13, 2008, at 3:09 PM, Lloyd L Chambers wrote:

> I've written this and I see that it has been started:
>
> @Service
> @Scoped(Singleton.class)
> @Async
> public final class AppserverMBeanServerFactory implements Startup,
> PostConstruct, PreDestroy
> {
> @Extract
> private final MBeanServer officialMBeanServer;
> ...
> }
>
> Then I have this elsewhere, later, I'm sure the above has long since
> executed:
>
> abstract class AMXCommandBase implements AdminCommand {
> @Inject
> private MBeanServer mMBeanServer;
> ...
> }
>
> I get this error:
>
> Mar 13, 2008 3:08:51 PM
> SEVERE: org.jvnet.hk2.component.UnsatisfiedDepedencyException:
> Unsatisfied dependency exception : private
> javax.management.MBeanServer
> org.glassfish.admin.amx.cmd.AMXCommandBase.mMBeanServer
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> org
> .jvnet.hk2.component.InjectionManager.inject(InjectionManager.java:83)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com.sun.hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:
> 64)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com
> .sun.hk2.component.ConstructorWomb.initialize(ConstructorWomb.java:50)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com.sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:39)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com
> .sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:
> 22)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:71)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com
> .sun
> .hk2
> .component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:24)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> org.jvnet.hk2.component.Habitat.getComponent(Habitat.java:284)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com
> .sun.enterprise.v3.admin.CommandRunner.getCommand(CommandRunner.java:
> 272)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com
> .sun.enterprise.v3.admin.CommandRunner.doCommand(CommandRunner.java:
> 75)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:
> 144)
> Mar 13, 2008 3:08:51 PM
> SEVERE: at
> com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:
> 109)
>
>
>
>
>
>
>
>
> ---
> Lloyd L Chambers
> lloyd.chambers_at_sun.com
> Sun Microsystems, Inc
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>

---
Lloyd L Chambers
lloyd.chambers_at_sun.com
Sun Microsystems, Inc