[jboss-as7-dev] Detyped API document feedback

Brian Stansberry brian.stansberry at redhat.com
Tue Jan 4 17:38:54 EST 2011


On 1/4/11 3:29 PM, David M. Lloyd wrote:
> On 01/04/2011 03:17 PM, Heiko W.Rupp wrote:
>>> The registry of operations should be external to the model itself; it
>>> would be a map with a key that corresponds to the operation name plus a
>>> "path" specification to the applicable node type.
>>
>> Did I understand you correctly that the path is not in the key?
>> I think it is also important to be able to navigate to model elements
>> over this path (think xpath expresssion) and to be able to directly
>> address an element /domain1/server14/hornetq/queue1/queue_lenght
>
> Yeah we'd definitely have some sort of direct mapping.  Take my
> operation example:
>
> node = new ModelNode();
> node.get("operation").set("change-bind-port"); // string
> node.get("address").add("base, "domain"); // a list
> node.get("address").add("profile", "web");
> node.get("address").add("subsystem", "web");
> node.get("address").add("connector", "ssl");
> node.get("bind-port").set(8433); // int
> result = connection.execute(node); // goes over remoting
>
> This would map to JMX probably like this:
>
>      jboss.as:base=domain,profile=web,subsystem=web,connector=ssl
>
> And would map to HTTP like this:
>
>
> http://myserver.foo.com/management/base/domain/profile/web/subsystem/web/connector/ssl
>
> ...where http://myserver.foo.com/management/ is the context root of the
> servlet (or com.sun.httpserver.Context or whatever) which acts as the
> REST API endpoint.
>
> Whether we want to go REST-pure and extend this address format to actual
> attributes is something I'm not sure about.
>

It's simple enough to do if it's clear that the attribute name is the 
last segment in the URL. Addresses are composed of pairs; if there's 
something left after the last pair, that's an attribute name.

>>> {
>>>       "operation-name" =>   "change-bind-port",
>>>       "address" =>   [
>>>           ("base"=>"domain"),
>>>           ("profile"=>"*"),
>>>           ("subsystem"=>"web"),
>>>           ("connector"=>"*"),
>>>       ],
>>>       "request-properties" =>   {
>>>           "bind-port" =>   {
>>>               type =>   INTEGER,
>>>               required =>   true,
>>>               min-value =>   0,
>>>               max-value =>   65535,
>>>           }
>>>       },
>>>       "reply-properties" =>   {}
>>> }
>
> To answer your earlier commentary about un-annotated MBeans, we'd want
> to use information like the above to fill out the MBean descriptors as
> fully as possible when (if?) we dynamically generate them.
>

That should be pretty easy to do. The hard part creating the information 
in the first place. But not doing that is not an option.


-- 
Brian Stansberry
Principal Software Engineer
JBoss by Red Hat



More information about the jboss-as7-dev mailing list