Bugs item #871649, was opened at 2004-01-06 13:16
Message generated for change (Comment added) made by ejort
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=871649&group_id=22866

Category: JBossMX
Group: v3.2
Status: Open
>Resolution: Accepted
Priority: 5
Submitted By: Jeff Haynie (jhaynie)
>Assigned to: Jeff Haynie (jhaynie)
Summary: Problem with source of JMX Notifications

Initial Comment:
According to the JMX spec, the source of a Notification 
must be of type ObjectName.

At line 420 in ServerImpl:

Notification msg = new Notification
(START_NOTIFICATION_TYPE, this, 1);

should be changed to:

Notification msg = new Notification
(START_NOTIFICATION_TYPE, 
ServerImplMBean.OBJECT_NAME, 1);


We should also update JMX to check this (although I 
thought it did before - maybe its happening at the at a 
higher level in the BasicMBeanRegistry).

The problem is that the ListenerRegistration in the 
NotificationBroadcasterSupport.sendNotification() will 
evaluate the NotificationFilter before being dispatched 
up to the listener. The listener is being wrapped at a 
higher level by the mbean server using the 
NotificationListenerProxy which sets the source - but 
this happens after the filter is applied  -- which causes 
problems if you're checking the ObjectName in the filter.

An easy enough fix for this particular problem is just to 
do above.  However, I'm worried we'll still see this in 
other places.  Another thought is to wrap the 
MBeanServerListenerRegistration (which creates 
NotificationListenerProxy) and pass in a proxy to the 
filter, such that it will set the appropriate source using 
the MBeanServerListenerRegistration and then delegate 
to the appropriate filter.

The other thing is to enforce in our Notification 
implementation ObjectName in setSource and the 
constructor -- which according to the JMX spec we're 
suppose to throw an IllegalArgumentException.

----------------------------------------------------------------------

>Comment By: Adrian Brock (ejort)
Date: 2004-01-06 13:50

Message:
Logged In: YES 
user_id=9459

Yes, go ahead.

Regards,
Adrian

----------------------------------------------------------------------

Comment By: Jeff Haynie (jhaynie)
Date: 2004-01-06 13:44

Message:
Logged In: YES 
user_id=4529

OK, looking at the JMX 1.2 spec javadoc for Notification, it
states:

"The Notification class represents a notification emitted by an
 MBean.  It contains a reference to the source MBean: if the
notification has been forwarded through the MBean server,
this is the object name of the MBean. If the listener has
registered directly with the MBean, this is either the
object name or a direct reference to the MBean.

It is strongly recommended that notification senders use the
object name rather than a reference to the MBean object as
the source."


In my case, and in the case for jboss mx, we're not
registering directly with the mbean.  I like the idea of
filter proxy since it would enforce the ObjectName
externally and still allow either ObjectName or direct
reference in the implementation of an MBean.

Is this something you would like me to apply?



----------------------------------------------------------------------

Comment By: Adrian Brock (ejort)
Date: 2004-01-06 13:34

Message:
Logged In: YES 
user_id=9459

The only requirement from the spec is that notification
listeners
registered through the MBeanServer receive notifications
with the ObjectName they registered against.

Direct notifications (i.e. where you register directly with
the MBean)
are not required to use the ObjectName,
but direct notifications are frowned upon.

You cannot setSource() a normal object but there is no
such requirement on the constructor.
Unless the broadcaster also implements MBeanRegistration
it does not know its own ObjectName.

One way to fix the problem would be to add a
NotificationFilterProxy
that replaces the source with the ObjectName in the same
way that is done for the NotificationListener.

Regards,
Adrian

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=871649&group_id=22866


-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to