On 27 June 2011 20:19, Felix Meschberger <[email protected]> wrote:

> Hi,
>
> Am Montag, den 27.06.2011, 20:07 +0100 schrieb Alasdair Nottingham:
> > Hi,
> >
> > I've been looking at the way the whiteboard implementation works and I
> was
> > wondering if it would make sense to change the way it detects mbeans.
> > Currently it detects them by looking for:
> >
> > (objectClass=*MBean). The impl then needs to either have a jmx.objectname
> > property, or it needs to be javax.management.MBeanRegistration extension.
> I
>
> My idea for requiring some MBean interface is that it makes registration
> extremely easy:
>

I agree with this goal.


>
> - either it is a DynamicMBean (or some extension thereof) service
> - or it is an interface with MBean suffix which as per the spec
>   defines the MBean interface for the bean
>

OK.


>
> For the registration then only an ObjectName is required which can be
> provided as a service registration property or by implementing the
> MBeanRegistration interface (which is also similarly used in the spec
> IIRC).
>
>
> > think it would make more sense for a service filter like this:
> >
> > (|(objectClass=javax.management.MBeanRegistration)(jmx.objectname=))
> >
> > what do people think?
>
> By going that way, you will solve the second issue with the filter but
> you then have an MBean where you have to find out how to be able to
> register (or I may be missing something in more recent JMX specs).
>
> But then, I don't think we should require the MBeanRegistration
> interface as a service interface. Sounds kind of incorrect.
>

I think if it needs to be an MBeanRegistration then we should require the
object to be advertised as an MBeanRegistration. Not putting
MBeanRegistration on a service and then relying on it being one is dodgy in
OSGi. Sure in most cases it'll work, but if someone decides to use service
hooks to insert a proxy they will probably get this wrong, also you can't
make use of the service registry to get the class space consistency.

Overall based on this I think a more correct filter would be this:

(&(objectClass=*MBean)(|(objectClass=javax.management.MBeanRegistration)(jmx.objectname=)))


>
> All in all, I think the original filter sounds more correct.
>
> Regards
> Felix
>
> > Alasdair
> >
>
>
>


-- 
Alasdair Nottingham
[email protected]

Reply via email to