Ya, good point.
The example you mention does not consider recursion. If it has to be
"... consistent with the rule that a given type always implies the same
list of other key properties."
I guess we should use a schema like the following, where everything is
an UPnPDevice type
UPnP:type=UPnPDevice, UDN= "... id ....." , parentUDN= "even empty" ,
chidrenUDN="even empty"
UPnP:type=UPnPDevice.UPnPDevice, UDN= "... id ....." , parentUDN= "..."
, chidrenUDN="..."
UPnP:type=UPnPDevice.UPnPDevice.UPnPDevice, UDN= "... id ....." ,
parentUDN= "..." , chidrenUDN="..."
or distinguish between root and embedded devices
UPnP:type=UPnPDevice, UDN= "... id ....." , chidrenUDN="even empty"
UPnP:type=UPnPDevice.EmbeddeUPnPDevice, UDN= "... id ....." ,
parentUDN= "..." , chidrenUDN="..."
UPnP:type=UPnPDevice.EmbeddeUPnPDevice.EmbeddeUPnPDevice, UDN= "... id
....." , parentUDN= "..." , chidrenUDN="..."
(the used types could be also RootUPnPDevice and UPnPDevice for ones
embedded)
what do you prefer or what else you suggest?
Are such containment hierarchies automatically managed by the current
JMX consoles? just curious :-)
francesco
Didier Donsez wrote:
Francesco Furfari wrote:
Thanks Didier for the reference.
So far I tried a very simple approach and my types are basically
strings and hashtables.
I have just committed a directory trunk/upnp.doc you can use to
launch the configurations (same as mosgi, but you should check out
also upnp.jmxbridge and upnp.jmxbridge.tab on my sandbox).
The jmx bridge registers a ControlPoint MBean that notifies the
Remote UPnP console about new registered UPnPDeviceMBean on the
managed platform. The console then gets the XML description of the
device and display the RootDevice on the TreeViewer . The actions
execution is mapped on the "invokeAction" operation specifying the
serviceId of a service. Selecting a root device and clicking on the
Import button the UPnPDevice is registered on the platform.
What do you plan to do for sub-devices (ie embedded device such as IGD) ?
You could reuse the Object Name Conventions used by the JSR 77 (for
J2EE mbeans).
http://java.sun.com/products/JavaManagement/best-practices.html#mozTocId366979
gives some naming conventions for "hierarchical mbeans"
Didier
This approach for the moment is functional to console GUI i was
thinking to use, and I guess it is not very attractive for generic
JMX console. I have not idea if using generic console we can achieve
a good interaction model with remote devices. When a first stable
implementation will be ready we can discuss about it.
The code is still incomplete see commit logs for details.
francesco
Manuel Santillán wrote:
Well, Until recently I was not very fond of open mbeans, since they
are way to cumbersome to create. You had to handcraft the
serialization of data. It was really SNMP-ish. Recent support of
open mbeans in Java 6 simplifies it significantly, though...
Didier Donsez escribió:
Manuel Santillán wrote:
Hi Francesco,
Notifications in JMX can embed custom data if you like. Take a
look at the javax.management.Notification#setUserData(Object o)
and its related getter. One thing to take into account is that
you need to have knowledge of the type in the client. Hope it
helped!!
Hum, JMX best practices recommend to reuse open mbean types
So you can display your notified user data in off-the-shelves JMX
consoles (JConsole, ...)
You can have also a look on
http://java.sun.com/products/JavaManagement/best-practices.html#mozTocId199275
Didier
Cheers
//manuel
Manuel Santillán
Francesco Furfari escribió:
Dear Stephan , Manuel,
I need some hint about the notification mechanism in JMX.
I've figured out that mbean notifications allow to send only
simple messages.
If a client needs to receive complex data it has to pull the
data using, for example, the sequence number obtained in a
previous notification message.
Is this correct or I'm missing something?
thanks in advance
francesco