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]
