qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrea Gazzarini" <a.gazzar...@gmail.com>
Subject WS-DM connector : Status of the work
Date Thu, 27 Nov 2008 10:25:38 GMT
Hi devs, I'm fighting with the WS-DM adapter for QMan and I must say that
it's a very interesting topic...
Just a simple mail to inform you about the status of the work. A first
version of the Adapter / Connector is already done (you can see two examples
below).
The QMan WebService is implementig the following operation :

- getMetadata() : this operation comes from WS-DM specs and returns the WSDL
(that is, the metadata of a manageable resource);

- getResourceProperty(propertyName) : this operation comes from WS-DM specs
and returns the value of the requested property. Note that the property is
supposed to be part of the QMan web service definition and it isn't a
property of a managed object instance. QMan at the moment has only two
properties :

   1. connectedBrokerCount : how many brokers QMan is connected with;
   2. managedInstanceCount : how many manageable instances (that is :
   mbeans) are registered under the Q-MAN domain;

- getResourcePropertyDocument() :  this operation comes from WS-DM specs and
returns an XML containing all the properties of the manageable resource
(QMan);

- getMultipleResourceProperties(propNames []) : this operation comes from
WS-DM specs and returns an array containing the values of the requested
properties;

- queryNames (jmxQuery): returns an array containings the name of the
mbean(s) registered under the Q-MAN domain and matching the given jmx query;
For example, if you call this operation with "*" as jmx query, it will
return all the mbeans registered under the Q-MAN domain; if you use
"*,class=queue" you will obtain all the queue instances;

- getManagedEntityAttributeValue(objectName, attributeName) : this is the
operation that should be invoked in order to get the value of an attribute
of a managed instance (mbean)

- invoke(objectName, operationName, arguments[]) : invokes a method on the
given mbean instance using the given set of arguments. This is a void method
so if the invocation succeeds there's no return value (see the example 1
below). Otherwise, if there's an error, a soap fault is generated on the
response and sent back to the client (see example 2 below)


Example 1 : successfull invocation of purge(int) on a queue instance

This is the WS-DM SOAP request for invoking the "invoke" method on QMan (and
therefore on the specified managed object instance).
In the example below I'm using the "Invoke" operation of the QMan Web
Service in order to invoke the purge(int) method on a queue instance.

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header>
        <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://127.0.0.1:8080/bridge/services/QMan</wsa:To>
        <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://amqp.apache.org/qpid/management/qman/Invoke</wsa:Action>
        <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">
uuid:fe27279e-7426-98f9-a5b4-1ce404014eab</wsa:MessageID>
        <wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing">
            <wsa:Address>http://www.w3.org/2005/08/addressing/role/anonymous
</wsa:Address>
        </wsa:From>
    </soap:Header>
    <soap:Body>
        <pfx0:Invoke xmlns:pfx0="http://amqp.apache.org/qpid/management/qman
" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
            <pfx0:AttributesPart>

brokerID=ds23321q-7422-98f1-b5b4-1ci404014cdb,type=Object,package=org.apache.qpid.broker,class=queue,objectID=s24958q-9981-77f1-b5b1-1ci818188cdb
            </pfx0:AttributesPart>
            <pfx0:OperationName>purge</pfx0:OperationName>
            <pfx0:Arguments>
                <pfx0:Arguments xsi:type="xsd:int">1</pfx0:Arguments>
            </pfx0:Arguments>
        </pfx0:Invoke>
    </soap:Body>
</soap:Envelope>

...and this is the response from QMan! Operation purge was successfully
executed.

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <soapenv:Header>
        <wsa:To>http://www.w3.org/2005/08/addressing/anonymous</wsa:To>
        <wsa:ReplyTo>
            <wsa:Address>http://www.w3.org/2005/08/addressing/none
</wsa:Address>
        </wsa:ReplyTo>
        <wsa:MessageID>urn:uuid:231D56A39DAB615D1F12277783589102
</wsa:MessageID>
        <wsa:Action>http://amqp.apache.org/qpid/management/qman/Invoke
</wsa:Action>
        <wsa:RelatesTo wsa:RelationshipType="
http://www.w3.org/2005/08/addressing/reply">
uuid:2461e21c-0190-108c-2810-1e6d4acd2644</wsa:RelatesTo>
    </soapenv:Header>
    <soapenv:Body>
        <muse-op:InvokeResponse
            xmlns:muse-op="http://amqp.apache.org/qpid/management/qman"
            xmlns:tns="http://qman.management.qpid.apache.org"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"/>
    </soapenv:Body>
</soapenv:Envelope>

Example 2 : invocation of resetLifespan() on a session instance with
exception

The request :

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header>
        <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://127.0.0.1:8080/bridge/services/QMan</wsa:To>
        <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://amqp.apache.org/qpid/management/qman/Invoke</wsa:Action>
        <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">
uuid:rt82921e-7192-09f2-a3b4-1ce862664ijs</wsa:MessageID>
        <wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing">
            <wsa:Address>http://www.w3.org/2005/08/addressing/role/anonymous
</wsa:Address>
        </wsa:From>
    </soap:Header>
    <soap:Body>
        <pfx0:Invoke xmlns:pfx0="http://amqp.apache.org/qpid/management/qman
" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
            <pfx0:AttributesPart>

brokerID=ds23321q-7422-98f1-b5b4-1ci404014cdb,type=Object,package=org.apache.qpid.broker,class=session,objectID=k99282e-6251-12f4-r631-2ci991922cdb
            </pfx0:AttributesPart>
            <pfx0:OperationName>resetLifeSpan</pfx0:OperationName>
            <pfx0:Arguments/>
        </pfx0:Invoke>
    </soap:Body>
</soap:Envelope>


...and the corresponding response when you can see the thrown Soap Fault:

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <soapenv:Header>
        <wsa:To>http://www.w3.org/2005/08/addressing/anonymous</wsa:To>
        <wsa:ReplyTo>
            <wsa:Address>http://www.w3.org/2005/08/addressing/none
</wsa:Address>
        </wsa:ReplyTo>
        <wsa:MessageID>urn:uuid:BAB241AD57E917253C12277792998902
</wsa:MessageID>
        <wsa:Action>http://amqp.apache.org/qpid/management/qman/Invoke
</wsa:Action>
        <wsa:RelatesTo wsa:RelationshipType="
http://www.w3.org/2005/08/addressing/reply">
uuid:e5544f59-4cf3-4564-1daf-8fe550fa7dba</wsa:RelatesTo>
    </soapenv:Header>
    <soapenv:Body>
        <soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
            xmlns:tns="http://qman.management.qpid.apache.org"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
            <soap:Code xmlns:qman="
http://amqp.apache.org/qpid/management/qman">
                <soap:Value>qman:Service</soap:Value>
            </soap:Code>
            <soap:Reason>
                <soap:Text>UnknownObject</soap:Text>
            </soap:Reason>
            <soap:Detail>
                <qman:OperationInvocationFault xmlns:qman="
http://amqp.apache.org/qpid/management/qman">
                    <wsrf-bf:Timestamp xmlns:wsrf-bf="
http://docs.oasis-open.org/wsrf/bf-2
">2008-11-27T10:48:21+01:00</wsrf-bf:Timestamp>
                    <wsrf-bf:OriginatorReference xmlns:wsrf-bf="
http://docs.oasis-open.org/wsrf/bf-2">
                        <wsa:ReferenceParameters/>
                        <wsa:Address>
http://192.168.197.51:8080/bridge/services/QMan</wsa:Address>
                    </wsrf-bf:OriginatorReference>
                    <wsrf-bf:ErrorCode
                        Dialect="
http://amqp.apache.org/qpid/management/errno" xmlns:wsrf-bf="
http://docs.oasis-open.org/wsrf/bf-2">
                        <qman:StatusCode>1</qman:StatusCode>
                    </wsrf-bf:ErrorCode>
                </qman:OperationInvocationFault>
            </soap:Detail>
        </soap:Fault>
    </soapenv:Body>
</soapenv:Envelope>

Any comments would be appreciated.

Regards,
Andrea

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message