dev@glassfish.java.net

Re: changed events are not called?

From: Lloyd Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Tue, 28 Jul 2009 15:50:24 -0700

Take a look at the class I sent. At least it used to work!

On Jul 28, 2009, at 3:43 PM, Marina Vatkina wrote:

> Lloyd Chambers wrote:
>> Not true.
>
> Which part?
>
> I do see that if I don't inject the corresponding @Configured
> object, I do not get the notifications :(.
>
> Regards,
> -marina
>
>> See org.glassfish.admin.mbeanserver.UnprocessedConfigListener
>> Lloyd
>> On Jul 28, 2009, at 3:25 PM, Marina Vatkina wrote:
>>> Tim Quinn wrote:
>>>
>>>> Marina Vatkina wrote:
>>>>
>>>>> Hi Tim,
>>>>>
>>>>> The problem is different - because the current version (that
>>>>> you have in your ws) does not inject TransactionService,
>>>>> JavaEETransactionManagerSimplified doesn't get notifications
>>>>> about changes to it on the server side.
>>>>>
>>>>> Let me see if moving the the listener code out to a separate
>>>>> class solves the problem...
>>>>
>>>> Maybe I've learned something important here.
>>>> Does a class need to inject a @Configured object in order to
>>>> receive changes for it?
>>>
>>>
>>> That's what Jerome told me some time back.
>>>
>>>> I thought just implementing ConfigListener was sufficient, and
>>>> then the "changed" method could sift through the events to find
>>>> ones of interest, whether the config object of interest was
>>>> injected or not.
>>>
>>>
>>> IIUC it gets only its own events, so that Unprocessed events mean
>>> server restart is required, not that they are somebody elses. But
>>> I might be wrong...
>>>
>>> On the other hand, if it is the case, a single class can't listen
>>> to changes of 2 different @Configured objects...
>>>
>>> thanks,
>>> -marina
>>>
>>>> - Tim
>>>>
>>>>>
>>>>> Jerome,
>>>>>
>>>>> Can the same listener listen to several even types (I need
>>>>> monitoring level as well) or do I need to have 2 separate classes?
>>>>>
>>>>> thanks,
>>>>> -marina
>>>>>
>>>>> Tim Quinn wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> Marina Vatkina wrote:
>>>>>>
>>>>>>> I don't know what is available in ACC, what not and why :(,
>>>>>>
>>>>>>
>>>>>>
>>>>>> It's supposed to be relatively simple - the ACC does not have
>>>>>> access to the server's configuration. TransactionService is
>>>>>> recorded in domain.xml - that is, in the server's config - so
>>>>>> the ACC will not know about it and therefore it cannot be
>>>>>> injected. The same is true for all domain.xml-resident
>>>>>> configuration information.
>>>>>>
>>>>>> There's some logic in JavaEETransactionManagerSimplified - at
>>>>>> least the version in my workspace - which does not inject
>>>>>> TransactionService but asks the habitat to look it up
>>>>>> explicitly (around line 200). The comments imply that the
>>>>>> logic is designed to work differently on the server vs. the
>>>>>> client. And my workspace copy of the class does not inject
>>>>>> TransactionService.
>>>>>>
>>>>>> What would the JavaEETransactionManagerSimplified do - on the
>>>>>> client - with this config information?
>>>>>>
>>>>>>
>>>>>> - Tim
>>>>>>
>>>>>>> but [1] is the stack trace from the failed injection in ACC.
>>>>>>>
>>>>>>> Is it possible to somehow identify a service for a specific
>>>>>>> injection type?
>>>>>>>
>>>>>>> thanks,
>>>>>>> -marina
>>>>>>>
>>>>>>> [1]:
>>>>>>> [exec] INFO: Cannot inject private
>>>>>>> com.sun.enterprise.config.serverbeans.TransactionService
>>>>>>> com
>>>>>>> .sun
>>>>>>> .enterprise
>>>>>>> .transaction.JavaEETransactionManagerSimplified.txnService
>>>>>>> in
>>>>>>> componentcom
>>>>>>> .sun
>>>>>>> .enterprise
>>>>>>> .transaction.JavaEETransactionManagerSimplified_at_f3552f
>>>>>>> [exec]
>>>>>>> org.jvnet.hk2.component.UnsatisfiedDepedencyException:
>>>>>>> Unsatisfied dependency exception : private
>>>>>>> com.sun.enterprise.config.serverbeans.TransactionService
>>>>>>> com
>>>>>>> .sun
>>>>>>> .enterprise
>>>>>>> .transaction.JavaEETransactionManagerSimplified.txnService
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .jvnet
>>>>>>> .hk2.component.InjectionManager.inject(InjectionManager.java:
>>>>>>> 102)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun
>>>>>>> .hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:
>>>>>>> 170)
>>>>>>> [exec] at com.sun.hk2.component.ConstructorWomb
>>>>>>> $1.run(ConstructorWomb.java:89)
>>>>>>> [exec] at
>>>>>>> java.security.AccessController.doPrivileged(Native Method)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun
>>>>>>> .hk2
>>>>>>> .component.ConstructorWomb.initialize(ConstructorWomb.java:86)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:
>>>>>>> 77)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun
>>>>>>> .hk2
>>>>>>> .component.SingletonInhabitant.get(SingletonInhabitant.java: 58)
>>>>>>> [exec] at
>>>>>>> com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:
>>>>>>> 107)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun
>>>>>>> .hk2
>>>>>>> .component
>>>>>>> .AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:60)
>>>>>>> [exec] at
>>>>>>> org.jvnet.hk2.component.Habitat.getByContract(Habitat.java:588)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun
>>>>>>> .enterprise
>>>>>>> .transaction
>>>>>>> .TransactionInvocationHandler
>>>>>>> .init(TransactionInvocationHandler.java:72)
>>>>>>> [exec] at
>>>>>>> com
>>>>>>> .sun
>>>>>>> .enterprise
>>>>>>> .transaction
>>>>>>> .TransactionInvocationHandler
>>>>>>> .afterPreInvoke(TransactionInvocationHandler.java:83)
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .glassfish
>>>>>>> .api
>>>>>>> .invocation
>>>>>>> .InvocationManagerImpl.preInvoke(InvocationManagerImpl.java:
>>>>>>> 148)
>>>>>>> [exec] at
>>>>>>> org.glassfish.appclient.client.acc.AppClientContainer $
>>>>>>> ClientMainClassSetting
>>>>>>> .getClientMainClass(AppClientContainer.java:571)
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .glassfish
>>>>>>> .appclient
>>>>>>> .client
>>>>>>> .acc.AppClientContainer.getMainMethod(AppClientContainer.java:
>>>>>>> 474)
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .glassfish
>>>>>>> .appclient
>>>>>>> .client
>>>>>>> .acc
>>>>>>> .AppClientContainer
>>>>>>> .completePreparation(AppClientContainer.java: 382)
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .glassfish
>>>>>>> .appclient
>>>>>>> .client
>>>>>>> .acc.AppClientContainer.prepare(AppClientContainer.java: 305)
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .glassfish
>>>>>>> .appclient
>>>>>>> .client.AppClientFacade.prepareACC(AppClientFacade.java:262)
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .glassfish
>>>>>>> .appclient
>>>>>>> .client
>>>>>>> .acc
>>>>>>> .agent
>>>>>>> .AppClientContainerAgent.premain(AppClientContainerAgent.java:
>>>>>>> 75)
>>>>>>> [exec] at
>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>> [exec] at
>>>>>>> sun
>>>>>>> .reflect
>>>>>>> .NativeMethodAccessorImpl
>>>>>>> .invoke(NativeMethodAccessorImpl.java:39)
>>>>>>> [exec] at
>>>>>>> sun
>>>>>>> .reflect
>>>>>>> .DelegatingMethodAccessorImpl
>>>>>>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>>> [exec] at java.lang.reflect.Method.invoke(Method.java:
>>>>>>> 597)
>>>>>>> [exec] at
>>>>>>> sun
>>>>>>> .instrument
>>>>>>> .InstrumentationImpl
>>>>>>> .loadClassAndStartAgent(InstrumentationImpl.java:323)
>>>>>>> [exec] at
>>>>>>> sun
>>>>>>> .instrument
>>>>>>> .InstrumentationImpl
>>>>>>> .loadClassAndCallPremain(InstrumentationImpl.java:338)
>>>>>>> [exec] Caused by:
>>>>>>> org.jvnet.hk2.component.UnsatisfiedDepedencyException:
>>>>>>> Unsatisfied dependency exception : private
>>>>>>> com.sun.enterprise.config.serverbeans.TransactionService
>>>>>>> com
>>>>>>> .sun
>>>>>>> .enterprise
>>>>>>> .transaction.JavaEETransactionManagerSimplified.txnService
>>>>>>> [exec] at
>>>>>>> org
>>>>>>> .jvnet
>>>>>>> .hk2.component.InjectionManager.inject(InjectionManager.java:
>>>>>>> 97)
>>>>>>> [exec] ... 24 more
>>>>>>> [exec] Result: 1
>>>>>>>
>>>>>>>
>>>>>>> Marina Vatkina wrote:
>>>>>>>
>>>>>>>> Jerome, Ken, Tim,
>>>>>>>>
>>>>>>>> I know why TM is not getting events, but I don't know what
>>>>>>>> to do about it...
>>>>>>>>
>>>>>>>> For transaction-service events to be sent, the
>>>>>>>> TransactionService field need to be *injected* into TM.
>>>>>>>>
>>>>>>>> But(!) TransactionService can't be injected when executed in
>>>>>>>> ACC (at least this is what was happening back in April when
>>>>>>>> I switched from injection to habitat access):
>>>>>>>>
>>>>>>>> [exec] INFO: Cannot inject private
>>>>>>>> com.sun.enterprise.config.serverbeans.TransactionService
>>>>>>>> com
>>>>>>>> .sun
>>>>>>>> .enterprise
>>>>>>>> .transaction.JavaEETransactionManagerSimplified.txnService
>>>>>>>> in
>>>>>>>> componentcom
>>>>>>>> .sun
>>>>>>>> .enterprise
>>>>>>>> .transaction.JavaEETransactionManagerSimplified_at_3a835d
>>>>>>>>
>>>>>>>> Tim, Ken, did it change since then?
>>>>>>>>
>>>>>>>> Are there any other options?
>>>>>>>>
>>>>>>>> thanks,
>>>>>>>> -marina
>>>>>>>>
>>>>>>>> Marina Vatkina wrote:
>>>>>>>>
>>>>>>>>> JavaEETransactionManagerSimplified doesn't get any
>>>>>>>>> TransactionService events (all of them would be change).
>>>>>>>>>
>>>>>>>>> To reproduce - deploy any app to start the TM, enable 'jta'
>>>>>>>>> logger to FINE, then do e.g.
>>>>>>>>>
>>>>>>>>> asadmin set server.transaction-service.retry-timeout-in-
>>>>>>>>> seconds=50
>>>>>>>>>
>>>>>>>>> (I didn't try admingui).
>>>>>>>>>
>>>>>>>>> If the change() method is called, you get 'Got
>>>>>>>>> TransactionService change event ==== ' append with the
>>>>>>>>> event name, the old and the new value log message.
>>>>>>>>>
>>>>>>>>> thanks,
>>>>>>>>> -marina
>>>>>>>>>
>>>>>>>>> Anissa Lam wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Yes, i have filed bug https://glassfish.dev.java.net/issues/show_bug.cgi?id=8815
>>>>>>>>>> Adding jvm option eg. -Djava.security.manager will not
>>>>>>>>>> trigger the server-restart-required status. Changing
>>>>>>>>>> value of existing jvm option does and behaves correctly.
>>>>>>>>>>
>>>>>>>>>> thanks
>>>>>>>>>> Anissa
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Jerome Dochez wrote:
>>>>>>>>>>
>>>>>>>>>>> I don't remember changing anything but I will look at it.
>>>>>>>>>>> do you have a reproduceable case to speed things up.
>>>>>>>>>>>
>>>>>>>>>>> thx, jerome
>>>>>>>>>>> On Jul 24, 2009, at 5:03 PM, Lloyd Chambers wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Anissa tells me she is not seeing restart required events.
>>>>>>>>>>>>
>>>>>>>>>>>> So yes, I think something was broken somewhere.
>>>>>>>>>>>>
>>>>>>>>>>>> Lloyd
>>>>>>>>>>>>
>>>>>>>>>>>> On Jul 24, 2009, at 4:57 PM, Marina Vatkina wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Did something change recently? Tx manager does not get
>>>>>>>>>>>>> any notifications when the transaction-service element
>>>>>>>>>>>>> is changed. The value is correctly stored in the
>>>>>>>>>>>>> domain.xml.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I call asadmin set after I see the message in the log
>>>>>>>>>>>>> that Tx manager had been initialized.
>>>>>>>>>>>>>
>>>>>>>>>>>>> thanks,
>>>>>>>>>>>>> -marina
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Lloyd Chambers
>>>>>>>>>>>> lloyd.chambers_at_sun.com
>>>>>>>>>>>> GlassFish Team
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> To unsubscribe, e-mail: dev- unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>> To unsubscribe, e-mail: dev-
>>>>>>>>>> unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>> For additional commands, e-mail: dev- help_at_glassfish.dev.java.net
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>> For additional commands, e-mail: dev-
>>>>>>>> help_at_glassfish.dev.java.net
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>> Lloyd Chambers
>> lloyd.chambers_at_sun.com
>> GlassFish Team
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>

Lloyd Chambers
lloyd.chambers_at_sun.com
GlassFish Team