Dain Sundstrom wrote:
>GBeanMBeanContext is an implementation of GBeanContext which is a handle
>given to a GBean to allow it to notify the GBean wrapper (container if you
>like) of state changes. I expect the most common use to be calling the
>fail() method when the service dies. For example, if the transaction log
>is full the transaction manager can notify it's users that the it is dead.
>I don't think anyone is using this yet, but it will become more important
>over time.
I am aware of one :-)
org.apache.geronimo.datastore.impl.remote.messaging.ServerNode
Basically, if the socket server listening for connections to be made can not
be started or stopped, then GBeanContext.fail() is called.
By the way, when a Reference is a Collection, the framework provides to the
GBean a ReferenceCollection. This latter can be used in order to be notified
when a Reference is added or removed.
AFAIK, this feature is not used (except
org.apache.geronimo.webdav.jetty.JettyDAVServer) and I do not really
understand how to use it "correctly":
Consider the following constructor:
MyGBean(Collection aReferenceColl) {
}
If I want to use the ReferenceCollection notification mechanism, then I will
need to cast aReferenceColl. This is fine, except if one wants to execute it
as a simple instance and not within a
running server. Moreover, as ReferenceCollection does not have a visible
implementation, it means that to unit-test a GBean, one needs to write an
implementation (I agree, this is also fine).
So I do have a question: is it possible to change slightly the way
Collection references are handled? More accurately, if one does not need the
notification mechanism, then one can use the current implementation. If one
needs to be notified, then one could implement a new mechanism, which
invokes on the target GBean a "addX" or "removeX" (configurable via
GReferenceInfo) when a reference is added or removed respectively.
Thanks,
Gianny
_________________________________________________________________
MSN Messenger http://g.msn.fr/FR1001/866 : un logiciel gratuit pour
dialoguer avec vos amis !
|