From ebfd9ff053b04ab379acfc0fefedee5a31b6d8a5 Mon Sep 17 00:00:00 2001 From: "Stephen D. Huston" Date: Fri, 21 Oct 2011 01:19:00 +0000 Subject: Undo bad merge from trunk - merged at wrong level. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/QPID-2519@1187150 13f79535-47bb-0310-9956-ffa450edef68 --- .../client/src/example/ConnectWithBroker.out.ok | 81 + .../example/GetMultipleResourceProperties.out.ok | 262 +++ .../src/example/GetQManResourceMembers.out.ko | 54 + .../src/example/GetQManResourceMembers.out.ok | 55 + .../example/GetResourceMetadataDescriptor.out.ok | 188 ++ .../src/example/GetResourcePropertyDocument.out.ok | 138 ++ .../src/example/GetResourcePropertyRequest.out.ok | 588 +++++ .../example/GetWsdlMetadata.out.ko.no.resources | 58 + .../client/src/example/GetWsdlMetadata.out.ok | 1968 +++++++++++++++++ .../src/example/PauseAndResumeSubscription.out.ok | 133 ++ java/management/client/src/example/README.txt | 69 + .../example/SetResourcePropertiesRequest.out.ok | 2316 ++++++++++++++++++++ .../management/example/AbstractQManExample.java | 140 ++ .../example/ConnectWithBrokerExample.java | 240 ++ .../example/ConsumerAndProducerExample.java | 293 +++ .../GetMultipleResourcePropertiesExample.java | 179 ++ .../example/GetQManResourceMembersExample.java | 93 + .../GetResourceMetadataDescriptorExample.java | 156 ++ .../GetResourcePropertyDocumentExample.java | 111 + .../example/GetResourcePropertyExample.java | 172 ++ .../management/example/GetWSDLMetadataExample.java | 156 ++ .../example/PausableSubscriptionExample.java | 88 + .../example/SetResourcePropertyExample.java | 306 +++ 23 files changed, 7844 insertions(+) create mode 100644 java/management/client/src/example/ConnectWithBroker.out.ok create mode 100644 java/management/client/src/example/GetMultipleResourceProperties.out.ok create mode 100644 java/management/client/src/example/GetQManResourceMembers.out.ko create mode 100644 java/management/client/src/example/GetQManResourceMembers.out.ok create mode 100644 java/management/client/src/example/GetResourceMetadataDescriptor.out.ok create mode 100644 java/management/client/src/example/GetResourcePropertyDocument.out.ok create mode 100644 java/management/client/src/example/GetResourcePropertyRequest.out.ok create mode 100644 java/management/client/src/example/GetWsdlMetadata.out.ko.no.resources create mode 100644 java/management/client/src/example/GetWsdlMetadata.out.ok create mode 100644 java/management/client/src/example/PauseAndResumeSubscription.out.ok create mode 100644 java/management/client/src/example/README.txt create mode 100644 java/management/client/src/example/SetResourcePropertiesRequest.out.ok create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/AbstractQManExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/ConnectWithBrokerExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/ConsumerAndProducerExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/GetMultipleResourcePropertiesExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/GetQManResourceMembersExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/GetResourceMetadataDescriptorExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyDocumentExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/GetWSDLMetadataExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/PausableSubscriptionExample.java create mode 100644 java/management/client/src/example/org/apache/qpid/management/example/SetResourcePropertyExample.java (limited to 'java/management/client/src/example') diff --git a/java/management/client/src/example/ConnectWithBroker.out.ok b/java/management/client/src/example/ConnectWithBroker.out.ok new file mode 100644 index 0000000000..33af477b98 --- /dev/null +++ b/java/management/client/src/example/ConnectWithBroker.out.ok @@ -0,0 +1,81 @@ + ConnectWithBrokerExample +------------------------------------------------------------------- + +This example shows how to connect QMan with a broker using +the adapter interface. + +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://romagazzarini:8080/qman/services/adapter + http://amqp.apache.org/qpid/management/qman/Connect + uuid:48bf9a1b-f814-7391-b5cf-d163de4ac068 + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + + sofia.gazzax.com + 5672 + test + a.gazzarini + p1ssw9rd + 1 + 4 + 2000 + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://www.w3.org/2005/08/addressing/fault + uuid:220bfe54-d5f4-4a04-794c-0f5d99a64567 + uuid:48bf9a1b-f814-7391-b5cf-d163de4ac068 + + http://romagazzarini:8080/qman/services/adapter + + + + + + qman:QMan + + + Unable to connect with the requested broker. Underlying exception message was null + + + + 2009-02-17T10:37:08+01:00 + + + http://romagazzarini:8080/qman/services/adapter + + sofia.gazzax.com + 5672 + test + p1ssw9rd + + + + + + +-----------------------EXAMPLE FAILURE----------- +Not well-defined exception was detected while +running the example. +org.apache.muse.ws.addressing.soap.SoapFault: Unable to connect with the requested broker. Underlying exception message was null + at org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:298) + at org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:232) + at org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:211) + at org.apache.qpid.management.example.ConnectWithBrokerExample.executeExample(ConnectWithBrokerExample.java:146) + at org.apache.qpid.management.example.ConnectWithBrokerExample.execute(ConnectWithBrokerExample.java:97) + at org.apache.qpid.management.example.ConnectWithBrokerExample.main(ConnectWithBrokerExample.java:201) +-------------------------------------------------------- diff --git a/java/management/client/src/example/GetMultipleResourceProperties.out.ok b/java/management/client/src/example/GetMultipleResourceProperties.out.ok new file mode 100644 index 0000000000..005841488d --- /dev/null +++ b/java/management/client/src/example/GetMultipleResourceProperties.out.ok @@ -0,0 +1,262 @@ + GetMultipleResourcePropertiesExample +------------------------------------------------------------------- + +This example shows how to get properties from a +WS-Resource using one request. +First of all a request is send to WS-DM in order to get +all registered WS-Resources. +If the returned list is not empty then a GetMetadataRequest +to the first child. +The result metadata descriptor contains all property names of +the target WS-Resource. +Those names are then used for retrieving the corresponding values +using the GetMultipleResourceProperties request. + +------------------------------------------------------------------- + +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:1a72feb1-7d76-1014-66d7-cd03aeff3525 + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:783956b1-4de7-f4b6-5421-536f5f310b9a + uuid:1a72feb1-7d76-1014-66d7-cd03aeff3525 + + http://localhost:8080/qman/services/adapter + + + + + + + http://localhost:8080/qman/services/ServiceGroupEntry + + uuid:b220e2bd-0370-da4e-fc71-5e283954d319 + + + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata + uuid:588288c9-8bb7-04e9-e7bf-7be1e2fe41fb + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + http://docs.oasis-open.org/wsrf/rmd-1 + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse + uuid:77c5520b-d450-5a8a-7e2b-22a1079392f2 + uuid:588288c9-8bb7-04e9-e7bf-7be1e2fe41fb + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest + uuid:783fc044-58a9-e780-a2ba-5b2ac0454985 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + qman:MgmtPubInterval + qman:Name + qman:MsgTotalEnqueues + qman:Arguments + qman:VhostRef + qman:ExpireTime + qman:Durable + qman:ConsumerCount + qman:Type + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse + uuid:9a2d76dd-52ba-ac7c-74cf-4acd99708529 + uuid:783fc044-58a9-e780-a2ba-5b2ac0454985 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + 32767 + Initial Name + 9223372036854775797 + + + Key3 + 2147483647 + + + Key4 + 3.4028235E38 + + + Key1 + aStringValue + + + Key2 + -9223372036854775808 + + + 2deef1b3-d2c6-49f3-a8de-51f6a75a1a6b + 9223372036854775807 + true + -2147483638 + + + \ No newline at end of file diff --git a/java/management/client/src/example/GetQManResourceMembers.out.ko b/java/management/client/src/example/GetQManResourceMembers.out.ko new file mode 100644 index 0000000000..d6b733e430 --- /dev/null +++ b/java/management/client/src/example/GetQManResourceMembers.out.ko @@ -0,0 +1,54 @@ + GetQManResourceMembersExample Example +------------------------------------------------------------------- + +This example shows the usage of WS-DM +GetResourcePropertyRequest / Response on a +Group service. +The target resource is the WS-DM Adapter itself +and the requested property is "ws-rp:Entry". +WS-DM Adapter is a special WS-Resource (is a Group) +that acts as the main entry point for retrieving +all other managed resources. +So clients that want to deal with QMan WS-Resources +must first get resource identifiers sending +a GetResourcePropertyRequest to WS-DM Adapter +with "ws-rp:Entry" as target target property. + +------------------------------------------------------------------- + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://192.38.73.2:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:796bab33-ed59-3432-4e2c-1fadde465a25 + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +-----------------------EXAMPLE FAILURE---------------------- +org.apache.muse.ws.addressing.soap.SoapFault: No route to host: connect + at org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:298) + at org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:254) + at org.apache.muse.ws.resource.remote.WsResourceClient.getResourceProperty(WsResourceClient.java:138) + at org.apache.muse.ws.resource.sg.remote.ServiceGroupClient.getMembers(ServiceGroupClient.java:110) + at org.apache.qpid.management.example.GetQManResourceMembersExample.execute(GetQManResourceMembersExample.java:61) + at org.apache.qpid.management.example.GetQManResourceMembersExample.main(GetQManResourceMembersExample.java:133) + + +######################################################################################### + +WARNING! Unable to run this sample : port number must be a number. +------------------------------------------------------------- +Expected command line args for this sample are : + +1) host : ip or host name where QMan is running. +2) port : port number where QMan is running. +------------------------------------------------------------ \ No newline at end of file diff --git a/java/management/client/src/example/GetQManResourceMembers.out.ok b/java/management/client/src/example/GetQManResourceMembers.out.ok new file mode 100644 index 0000000000..dd75e1e490 --- /dev/null +++ b/java/management/client/src/example/GetQManResourceMembers.out.ok @@ -0,0 +1,55 @@ + GetQManResourceMembersExample Example +------------------------------------------------------------------- + +This example shows the usage of WS-DM +GetResourcePropertyRequest / Response on a +Group service. +The target resource is the WS-DM Adapter itself +and the requested property is "ws-rp:Entry". +WS-DM Adapter is a special WS-Resource (is a Group) +that acts as the main entry point for retrieving +all other managed resources. +So clients that want to deal with QMan WS-Resources +must first get resource identifiers sending +a GetResourcePropertyRequest to WS-DM Adapter +with "ws-rp:Entry" as target target property. + +------------------------------------------------------------------- + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://romagazzarini:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:024c678b-1fab-cb6a-0992-30027817fb92 + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:90b0e421-6467-a72e-a8f4-cdedb80460b6 + uuid:024c678b-1fab-cb6a-0992-30027817fb92 + + http://romagazzarini:8080/qman/services/adapter + + + + + + + +-------------------------------------------------------------------------- +QMan has at the moment 0 registered resources. +-------------------------------------------------------------------------- \ No newline at end of file diff --git a/java/management/client/src/example/GetResourceMetadataDescriptor.out.ok b/java/management/client/src/example/GetResourceMetadataDescriptor.out.ok new file mode 100644 index 0000000000..a259259228 --- /dev/null +++ b/java/management/client/src/example/GetResourceMetadataDescriptor.out.ok @@ -0,0 +1,188 @@ + GetResourceMetadataDescriptorExample +------------------------------------------------------------------- + +The example shows how to get metadata from a +WS-Resource. +A QMan WS-Resource has different kinds of metadata. +(see below) +User who wants to receive metadata of a WS-Resource +must send a GetMetadataRequesta specifying the +associated dialect. +Supported metadata that could be requested are : + +- WSDL : in this case dialect is "http://schemas.xmlsoap.org/wsdl/"; +- RDM (Resource Metadata Descriptor) : in this case dialect is "http://docs.oasis-open.org/wsrf/rmd-1 ". + +Note that this examples focuses on RDM Metadata only; +another one is dedicated to WSDL. +------------------------------------------------------------------- + +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:cdcf747a-e5fc-3762-1748-87cc2eefb18b + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:1d0d091b-8867-d765-7cc8-4898851cd783 + uuid:cdcf747a-e5fc-3762-1748-87cc2eefb18b + + http://localhost:8080/qman/services/adapter + + + + + + + http://localhost:8080/qman/services/ServiceGroupEntry + + uuid:3a2ee31e-49ed-e30a-c985-0fe49c182a75 + + + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=cbe0cada-e8ee-424c-945b-f6c42df7b011,class=queue,name=1232952196269,objectId=e2857418-b873-47b7-ab30-441ae9376529,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata + uuid:ba2435fc-9172-69d8-f4be-34f7f45b26ff + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=cbe0cada-e8ee-424c-945b-f6c42df7b011,class=queue,name=1232952196269,objectId=e2857418-b873-47b7-ab30-441ae9376529,package=org.apache.qpid + + + + http://docs.oasis-open.org/wsrf/rmd-1 + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse + uuid:ceb6eb90-4910-01a9-c138-6029e6bb0836 + uuid:ba2435fc-9172-69d8-f4be-34f7f45b26ff + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=cbe0cada-e8ee-424c-945b-f6c42df7b011,class=queue,name=1232952196269,objectId=e2857418-b873-47b7-ab30-441ae9376529,package=org.apache.qpid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/management/client/src/example/GetResourcePropertyDocument.out.ok b/java/management/client/src/example/GetResourcePropertyDocument.out.ok new file mode 100644 index 0000000000..9d6312f2f3 --- /dev/null +++ b/java/management/client/src/example/GetResourcePropertyDocument.out.ok @@ -0,0 +1,138 @@ + GetResourcePropertyDocument +------------------------------------------------------------------- + +This example shows how to get the whole property +document from a WS-Resource. +Resource property document represents a particular +composed structural view of the resource properties +of the WS-Resource. +First of all a request is send to WS-DM in order to get +all registered WS-Resources. +the target WS-Resource. +If the returned list is not empty then a +GetResourcePropertyDocumentRequest is sent to the first child. + +------------------------------------------------------------------- + +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:50aa09f5-44e7-8bd3-7f24-49b8f0b9bf0d + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:f71342ad-2185-fdb3-393a-e9a98305effd + uuid:50aa09f5-44e7-8bd3-7f24-49b8f0b9bf0d + + http://localhost:8080/qman/services/adapter + + + + + + + http://localhost:8080/qman/services/ServiceGroupEntry + + uuid:b220e2bd-0370-da4e-fc71-5e283954d319 + + + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest + uuid:e035946b-c3f5-1b24-e94a-61c674ce07b9 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse + uuid:dafe12e4-c0a9-f872-cf1e-2a41bc291b2e + uuid:e035946b-c3f5-1b24-e94a-61c674ce07b9 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + 32767 + http://www.w3.org/TR/1999/REC-xpath-19991116 + Initial Name + + 9223372036854775797 + + + Key3 + 2147483647 + + + Key4 + 3.4028235E38 + + + Key1 + aStringValue + + + Key2 + -9223372036854775808 + + + 2deef1b3-d2c6-49f3-a8de-51f6a75a1a6b + 1232956293823 + 9223372036854775807 + true + -2147483638 + + + + \ No newline at end of file diff --git a/java/management/client/src/example/GetResourcePropertyRequest.out.ok b/java/management/client/src/example/GetResourcePropertyRequest.out.ok new file mode 100644 index 0000000000..4fa0ab3b8d --- /dev/null +++ b/java/management/client/src/example/GetResourcePropertyRequest.out.ok @@ -0,0 +1,588 @@ + GetResourcePropertyExample +------------------------------------------------------------------- + +This example shows how to get the property value +from a WS-Resource. +First of all a request is send to WS-DM in order to get +all registered WS-Resources. +If the returned list is not empty then a GetMetadataRequest +to the first child. +The result metadata descriptor contains all properties of +the target WS-Resource. +For each of them a GetResourcePropertyRequest is sent + in order to get its value. + +------------------------------------------------------------------- + +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:e581b9cb-04a9-a87f-7763-dcf227ed7f8b + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:27bab9a7-89aa-16a1-966b-c0aa19d3b352 + uuid:e581b9cb-04a9-a87f-7763-dcf227ed7f8b + + http://localhost:8080/qman/services/adapter + + + + + + + http://localhost:8080/qman/services/ServiceGroupEntry + + uuid:b220e2bd-0370-da4e-fc71-5e283954d319 + + + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata + uuid:c5efae22-bc2f-ccdd-477c-621d4e49cd77 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + http://docs.oasis-open.org/wsrf/rmd-1 + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse + uuid:4d933676-fb60-3fae-d7b9-39324a8661fc + uuid:c5efae22-bc2f-ccdd-477c-621d4e49cd77 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:83c13239-3e37-853d-776d-3dac2729117b + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:MgmtPubInterval + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:0beb3927-6420-9877-f163-4288ea1560da + uuid:83c13239-3e37-853d-776d-3dac2729117b + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + 32767 + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:30b678da-f1fa-8120-7660-9eb86ebb76b7 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:Name + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:8343b104-1a82-212a-c84a-460cbc223327 + uuid:30b678da-f1fa-8120-7660-9eb86ebb76b7 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + Initial Name + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:795eaebd-dd48-75b0-18b3-a7e3c1fd4d5a + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:MsgTotalEnqueues + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:b6b91fd1-762b-3ae4-76c3-fe206c93b76d + uuid:795eaebd-dd48-75b0-18b3-a7e3c1fd4d5a + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + 9223372036854775797 + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:f57f0179-a31b-8607-668b-c2602838c363 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:Arguments + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:fc07cbe4-a19a-6374-c985-49fa525d3e90 + uuid:f57f0179-a31b-8607-668b-c2602838c363 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + + Key3 + 2147483647 + + + Key4 + 3.4028235E38 + + + Key1 + aStringValue + + + Key2 + -9223372036854775808 + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:5d735040-95d1-7c87-7ac9-b4a5700e0ab9 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:VhostRef + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:cdfe639c-357b-d55b-fe7d-4a203d46465c + uuid:5d735040-95d1-7c87-7ac9-b4a5700e0ab9 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + 2deef1b3-d2c6-49f3-a8de-51f6a75a1a6b + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:e3fde856-57f5-a96f-a382-5e0f4206a6fe + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:ExpireTime + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:fa290c54-bac1-62d6-701e-3b8ec2eaf817 + uuid:e3fde856-57f5-a96f-a382-5e0f4206a6fe + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + 9223372036854775807 + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:092dd5d9-c443-428c-813c-13428058b08c + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:Durable + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:1053800e-345c-abed-e352-f524c1d24afa + uuid:092dd5d9-c443-428c-813c-13428058b08c + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + true + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:bc291be9-b1d1-f668-f3c5-29647e78d6bf + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:ConsumerCount + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:7467dddf-033e-f540-241f-76ce81c0ebeb + uuid:bc291be9-b1d1-f668-f3c5-29647e78d6bf + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + -2147483638 + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:92783239-777c-27fa-cec2-ee3afecf5c32 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + qman:Type + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:af8168b4-6c13-c736-b521-f2b410541dd0 + uuid:92783239-777c-27fa-cec2-ee3afecf5c32 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=8e069b14-40ba-4d48-a2cb-b9f2bef2d404,class=queue,name=1232953394537,objectId=781f4ad7-4c96-4caa-b69d-291461cdb1fc,package=org.apache.qpid + + + + + + + \ No newline at end of file diff --git a/java/management/client/src/example/GetWsdlMetadata.out.ko.no.resources b/java/management/client/src/example/GetWsdlMetadata.out.ko.no.resources new file mode 100644 index 0000000000..6e727261f9 --- /dev/null +++ b/java/management/client/src/example/GetWsdlMetadata.out.ko.no.resources @@ -0,0 +1,58 @@ + GetWSDLMetadataExample +------------------------------------------------------------------- + +This example shows the usage of WS-DM +GetResourcePropertyRequest / Response on a +Group service. +The target resource is the WS-DM Adapter itself +and the requested property is "ws-rp:Entry". +WS-DM Adapter is a special WS-Resource (is a Group) +that acts as the main entry point for retrieving +all other managed resources. +So clients that want to deal with QMan WS-Resources +must first get resource identifiers sending +a GetResourcePropertyRequest to WS-DM Adapter +with "ws-rp:Entry" as target target property. + +------------------------------------------------------------------- + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:7f801eff-c528-91e8-33eb-3d1dd164bce7 + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:86a34968-38aa-83e8-47dd-8e86ffd8ac06 + uuid:7f801eff-c528-91e8-33eb-3d1dd164bce7 + + http://localhost:8080/qman/services/adapter + + + + + + + +----------------------------WARNING--------------------------- +Cannot proceed with the example... it seems +that there are no managed WS-Resources on QMan. +Please check QMan in order to see that it is really +connected with a broker. +------------------------------------------------------------------- diff --git a/java/management/client/src/example/GetWsdlMetadata.out.ok b/java/management/client/src/example/GetWsdlMetadata.out.ok new file mode 100644 index 0000000000..16a4c1e07e --- /dev/null +++ b/java/management/client/src/example/GetWsdlMetadata.out.ok @@ -0,0 +1,1968 @@ + GetWSDLMetadataExample +------------------------------------------------------------------- + +This example shows the usage of WS-DM +GetResourcePropertyRequest / Response on a +Group service. +The target resource is the WS-DM Adapter itself +and the requested property is "ws-rp:Entry". +WS-DM Adapter is a special WS-Resource (is a Group) +that acts as the main entry point for retrieving +all other managed resources. +So clients that want to deal with QMan WS-Resources +must first get resource identifiers sending +a GetResourcePropertyRequest to WS-DM Adapter +with "ws-rp:Entry" as target target property. + +------------------------------------------------------------------- + +Type enter to proceed. + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/adapter + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:ec4d0c03-3174-e39d-4a36-8f109056865b + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + wsrf-sg:Entry + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:0f47d614-565e-5360-8dcc-ea8e4771e4dd + uuid:ec4d0c03-3174-e39d-4a36-8f109056865b + + http://localhost:8080/qman/services/adapter + + + + + + + http://localhost:8080/qman/services/ServiceGroupEntry + + uuid:1d01b4ee-7d23-3a30-342e-62fc49984fe6 + + + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=d5b32f44-5164-4e59-8f1d-a6f8c0a8a748,class=queue,name=1232872843214,objectId=a3759467-bede-476d-8dde-169f1a652191,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata + uuid:0cdb5112-09e0-ac39-06ba-393843f06e42 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=d5b32f44-5164-4e59-8f1d-a6f8c0a8a748,class=queue,name=1232872843214,objectId=a3759467-bede-476d-8dde-169f1a652191,package=org.apache.qpid + + + + http://schemas.xmlsoap.org/wsdl/ + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse + uuid:980617c8-e3a0-ebf1-8f5a-2b43d3d6d416 + uuid:0cdb5112-09e0-ac39-06ba-393843f06e42 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=d5b32f44-5164-4e59-8f1d-a6f8c0a8a748,class=queue,name=1232872843214,objectId=a3759467-bede-476d-8dde-169f1a652191,package=org.apache.qpid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To form a QName, the name of any MetadataDescriptor must be + unique within a Definitions element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get access to the xml: attribute groups for xml:lang as declared on 'schema' + and 'documentation' below + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/management/client/src/example/PauseAndResumeSubscription.out.ok b/java/management/client/src/example/PauseAndResumeSubscription.out.ok new file mode 100644 index 0000000000..8a98e1d0b7 --- /dev/null +++ b/java/management/client/src/example/PauseAndResumeSubscription.out.ok @@ -0,0 +1,133 @@ +This example is demonstrating a WS-Notification scenario +when (for simplicity) QMan is at the same time consumer +and producer. + +Specifically the example shows how a requestor can create, +pause and resume a subscription. +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://romagazzarini:8080/qman/services/adapter + http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest + uuid:485cc87c-660e-de43-e8fa-4ad5fffa95a6 + + http://www.w3.org/2005/08/addressing/role/anonymous + + + + + + http://romagazzarini:8080/qman/services/consumer + + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse + uuid:0ee610d1-e211-95c6-a498-e1084a610c44 + uuid:485cc87c-660e-de43-e8fa-4ad5fffa95a6 + + http://romagazzarini:8080/qman/services/adapter + + + + + + http://romagazzarini:8080/qman/services/SubscriptionManager + + 282f28e6-4396-4000-a19d-87a03978e8a0 + + + 2009-02-27T13:51:56+01:00 + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://romagazzarini:8080/qman/services/SubscriptionManager + http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/PauseSubscriptionRequest + uuid:35cc80af-84ac-2456-3e1f-edc2a7f60970 + + http://www.w3.org/2005/08/addressing/role/anonymous + + 282f28e6-4396-4000-a19d-87a03978e8a0 + + + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/PauseSubscriptionResponse + uuid:bb53d38a-428c-3d90-cc45-29d5cb27a8df + uuid:35cc80af-84ac-2456-3e1f-edc2a7f60970 + + http://romagazzarini:8080/qman/services/SubscriptionManager + + 282f28e6-4396-4000-a19d-87a03978e8a0 + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://romagazzarini:8080/qman/services/SubscriptionManager + http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/ResumeSubscriptionRequest + uuid:bfb48615-905a-e472-a9ca-5483fa592f60 + + http://www.w3.org/2005/08/addressing/role/anonymous + + 282f28e6-4396-4000-a19d-87a03978e8a0 + + + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/ResumeSubscriptionResponse + uuid:aab4cf18-3cc0-30c4-7036-009e26bb3213 + uuid:bfb48615-905a-e472-a9ca-5483fa592f60 + + http://romagazzarini:8080/qman/services/SubscriptionManager + + 282f28e6-4396-4000-a19d-87a03978e8a0 + + + + + + + + diff --git a/java/management/client/src/example/README.txt b/java/management/client/src/example/README.txt new file mode 100644 index 0000000000..5365a416e5 --- /dev/null +++ b/java/management/client/src/example/README.txt @@ -0,0 +1,69 @@ +*** QMan WS-DM examples *** + +1) DESCRIPTION +This set of examples shows QMan WS-DM interface capabilities. +Each example is articulated in the following way. +First the name of the example class with a brief description about that is printed out. For example : + + GetWSDLMetadataExample +------------------------------------------------------------------- + +This example shows the usage of WS-DM +GetResourcePropertyRequest / Response on a +Group service. +The target resource is the WS-DM Adapter itself +and the requested property is "ws-rp:Entry". +WS-DM Adapter is a special WS-Resource (is a Group) +that acts as the main entry point for retrieving +all other managed resources. +So clients that want to deal with QMan WS-Resources +must first get resource identifiers sending +a GetResourcePropertyRequest to WS-DM Adapter +with "ws-rp:Entry" as target target property. + +------------------------------------------------------------------- + +Type enter to proceed. + +When you're ready type enter to proceed. Now the example runs and all the exchanged +SOAP messages are printed out on the screen. +If you want, we shipped (under sample_messages folder) several files containing those messages. + +A general note concerning examples...they are all written using java language so what you see is the +"java" usage of WS-DM client API. +The most important thing that you should keep in mind is that what is expected (on QMan side) is a SOAP WS-DM +compliant message so on top of that you don't need to use those java API but feel free to produce those messages +in your preferred way (by hand or using another programming language). + +Another thing : the examples contain a lot of code duplication because each of them is took as independent as possible. +The general idea is that you open an example source file and in the executeExample(...) method you should have a quick +idea of how things are working. +Also, as mentioned before, we provided, under the sample_messages folder, the messages that are part of each example conversation. +Remember : these messages are important, not the way / language you use to produce them. + +2) HOW TO RUN + +2.1) Java +You need JDK 1.5 or higher in order to run and / or compile the examples. + +2.2) Dependencies +You need to set / update the CLASSPATH environment variable with libraries found under $QMAN_HOME/app/qman/WEB-INF/lib. +After that you should be able to run one the shipped examples: + +> java org.apache.qpid.management.example.GetMultipleResourcePropertiesExample +> java org.apache.qpid.management.example.GetQManResourceMembersExample +> java org.apache.qpid.management.example.GetResourceMetadataDescriptorExample +> java org.apache.qpid.management.example.GetResourcePropertyDocumentExample +> java org.apache.qpid.management.example.GetResourcePropertyExample +> java org.apache.qpid.management.example.GetWSDLMetadataExample +> java org.apache.qpid.management.example.SetResourcePropertyExample + +Where + is the host (ip or hostname) where QMan is running; + is the port number where QMan is running; + +2.3) Qpid +You must have a running C++ broker with management enabled. + +2.4) QMan +You must have QMan WS-DM up, running and connected with the broker above. \ No newline at end of file diff --git a/java/management/client/src/example/SetResourcePropertiesRequest.out.ok b/java/management/client/src/example/SetResourcePropertiesRequest.out.ok new file mode 100644 index 0000000000..1f346afa4e --- /dev/null +++ b/java/management/client/src/example/SetResourcePropertiesRequest.out.ok @@ -0,0 +1,2316 @@ + SetResourcePropertyExample +------------------------------------------------------------------- + +This example shows how to change the state of a WS-Resource. +That means a SetResourcePropertyRequest is sent to that +WS-Resource. +First of all a request is send to WS-DM in order to get all +registered WS-Resources. +If the returned list is not empty then two GetMetadataRequests +(one for WSDL and one for RDM) are sent to the first child. +The result metadata descriptors are used for determine : + +1) WS-Resource property names; +2) Modifiability (read-only, read-write +3) Datatype; +------------------------------------------------------------------- + +So a SetResourcePropertyRequest can be sent in order +to change the WS-Resource state. +The example is looking for a property that has one of the +following datatype : + +1) String (xsd:string) +2) Long (xsd:long) +3) Integer (xsd:integer or xsd:int) +4) Double (xsd:double) +5) Float (xsd:float) +6) Short (xsd:short) + +After the update / insert request has been sent, a +GetResourcePropertiesRequest is made again +in order to see if the state has changed correctly. + +Type enter to proceed... + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata + uuid:d026718c-2724-d3bf-fd5b-3c6bf4cd5a8c + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + http://docs.oasis-open.org/wsrf/rmd-1 + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse + uuid:dba8d7ab-83a6-16e1-03cc-48edc672a325 + uuid:d026718c-2724-d3bf-fd5b-3c6bf4cd5a8c + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata + uuid:11581af1-04af-05cd-7215-103cad6a316c + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + http://schemas.xmlsoap.org/wsdl/ + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse + uuid:785964d4-9a81-784f-d68a-60de63223094 + uuid:11581af1-04af-05cd-7215-103cad6a316c + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To form a QName, the name of any MetadataDescriptor must be + unique within a Definitions element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get access to the xml: attribute groups for xml:lang as declared on 'schema' + and 'documentation' below + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:103f564f-7008-8456-042f-095a092444f9 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + qman:MgmtPubInterval + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:b78625a8-af2f-b542-8001-d7e81d3de1c9 + uuid:103f564f-7008-8456-042f-095a092444f9 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + 32767 + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest + uuid:0b80a9ca-9e02-1d6b-c0e0-8ceb8560ee6e + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + 12 + + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse + uuid:ae67ff51-e1c1-f2c3-5243-d54905f3907b + uuid:0b80a9ca-9e02-1d6b-c0e0-8ceb8560ee6e + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:0dca61e4-072f-3091-0f38-9a967f14666a + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + qman:MgmtPubInterval + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:84399474-c5b1-8738-f410-fd86face1599 + uuid:0dca61e4-072f-3091-0f38-9a967f14666a + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + 12 + + + + +---------------------------------------------------------------------------------- +Resource has been correctly updated. +---------------------------------------------------------------------------------- +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:8be37e48-b3a5-0e4a-aea3-eda3aad58418 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + qman:Type + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:b92c8851-d071-204f-6506-3706694cf32e + uuid:8be37e48-b3a5-0e4a-aea3-eda3aad58418 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest + uuid:7917abf6-5c85-7e25-4515-b7f60cd32c39 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + This is a string. + + + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse + uuid:0b895a1f-39e5-8739-d9d7-390c5f2eb445 + uuid:7917abf6-5c85-7e25-4515-b7f60cd32c39 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + + + +[CLIENT TRACE] SOAP envelope contents (outgoing): + + + + http://localhost:8080/qman/services/QManWsResource + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest + uuid:930f39a4-0114-03bd-9921-105579fb4213 + + http://www.w3.org/2005/08/addressing/role/anonymous + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + qman:Type + + + +[CLIENT TRACE] SOAP envelope contents (incoming): + + + + http://www.w3.org/2005/08/addressing/role/anonymous + http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse + uuid:3d3f04ab-3171-da69-08b5-2e74927ee981 + uuid:930f39a4-0114-03bd-9921-105579fb4213 + + http://localhost:8080/qman/services/QManWsResource + + Q-MAN: brokerID=0ef67394-e34a-4bff-b0bf-88cf359ba1a0,class=queue,name=1232966356552,objectId=894cddd3-b893-4e2f-94d2-2489f72cbdd6,package=org.apache.qpid + + + + + + This is a string. + + + + +---------------------------------------------------------------------------------- +Resource has been correctly updated. +---------------------------------------------------------------------------------- diff --git a/java/management/client/src/example/org/apache/qpid/management/example/AbstractQManExample.java b/java/management/client/src/example/org/apache/qpid/management/example/AbstractQManExample.java new file mode 100644 index 0000000000..ffa96635a8 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/AbstractQManExample.java @@ -0,0 +1,140 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import java.io.IOException; +import java.net.URI; + +import org.apache.muse.ws.addressing.EndpointReference; + +/** + * Common interface for all QMan related examples. + * + * @author Andrea Gazzarini + */ +public abstract class AbstractQManExample +{ + final static String LINE_SEPARATOR = System.getProperty("line.separator","\n"); + protected final static String PREFIX = "qman"; + + /** + * Prints out the expected command line of this sample and after that exits. + */ + static void printUsageAndExit(String reason) + { + StringBuilder builder = new StringBuilder(); + builder.append("WARNING! Unable to run this sample : ") + .append(reason) + .append(LINE_SEPARATOR) + .append("-------------------------------------------------------------") + .append(LINE_SEPARATOR) + .append("Expected command line args for this sample are :") + .append(LINE_SEPARATOR) + .append(LINE_SEPARATOR) + .append("1) host : ip or host name where QMan is running.") + .append(LINE_SEPARATOR) + .append("2) port : port number where QMan is running.") + .append(LINE_SEPARATOR) + .append("------------------------------------------------------------"); + System.out.println(builder); + System.exit(1); + } + + /** + * Prints out a description of this example. + */ + abstract void printOutExampleDescription(); + + /** + * Executes this example. + * Note that this is just a template method used to avoid code duplication + * (printOutExampleDescription() line) so in order to see how the example + * works you should have a look at the concrete implementation of + * executeExample(String host, int port). + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + */ + void execute(String [] arguments) + { + if (arguments.length != 2){ + printUsageAndExit("invalid command line was given."); + } + + try + { + // 1) Parses command line arguments... + String host = arguments[0]; + int port = Integer.parseInt(arguments[1]); + + printOutExampleDescription(); + + waitForUserInput("Type enter to proceed..."); + + executeExample(host, port); + + } catch(NumberFormatException exception) + { + printUsageAndExit("port number must be a number."); + } catch(Exception exception) + { + System.out.println("-----------------------EXAMPLE FAILURE-----------"); + System.out.println("Not well-defined exception was detected while"); + System.out.println("running the example."); + exception.printStackTrace(System.out); + System.out.println("--------------------------------------------------------"); + } + } + + protected void waitForUserInput(String message) throws IOException { + System.out.println(message); + System.in.read(); + } + + /** + * Each concrete implementor must define here how the example works. + * So, on top of that, user who wants to see how to use a specific feature + * should have a look at the concrete implementation of this method.. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception{}; + + /** + * Returns the endpoint reference of the adapter service. + * + * @param host ip or host name where the service is running. + * @param port the port number of the server where the service is running. + * @return the endpoint reference of the adapter service. + */ + EndpointReference getAdapterEndpointReference(String host, int port) + { + URI address = URI.create( + "http://"+ + host+ + ":"+ + port+ + "/qman/services/adapter"); + return new EndpointReference(address); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/ConnectWithBrokerExample.java b/java/management/client/src/example/org/apache/qpid/management/example/ConnectWithBrokerExample.java new file mode 100644 index 0000000000..153f0f66d5 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/ConnectWithBrokerExample.java @@ -0,0 +1,240 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import javax.xml.namespace.QName; + +import org.apache.muse.core.proxy.ProxyHandler; +import org.apache.muse.core.proxy.ReflectionProxyHandler; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; + +/** + * This example shows how to connect QMan with a broker using the adapter interface. + * As you can see the interface is very simple and requests you the following parameters : + * + *
    + *
  • hostname : the host (hostname or ip) where the broker is running;
  • + *
  • port : the port number of the running broker;
  • + *
  • virtual host : the name of the virtual host;
  • + *
  • username : the username that will be used for estabilshing connection.
  • + *
  • password : the password that will be used for estabilshing connection.
  • + *
  • initial pool capacity : the initial size of broker connection pool.
  • + *
  • maximum pool capacity : the max allowed size of broker connection pool.
  • + *
  • maximum wait timeout : the max wait timeout for retrieving connections.
  • + *
+ * + * @author Andrea Gazzarini + */ +public class ConnectWithBrokerExample extends AbstractQManExample +{ + + /** + * Executes the connect example. + * Although not specified explicitly, the input array MUST contains in the following order : + * + *
    + *
  • host : the hostname where QMan is running;
  • + *
  • port : the port number where QMan is running;
  • + *
  • qpid host : the host name where QPid is running;
  • + *
  • qpid port : the port number where Qpid is running;
  • + *
  • virtual host : the virtual host name;
  • + *
  • username : the username that will be used for estabilshing connection.
  • + *
  • password : the password that will be used for estabilshing connection.
  • + *
  • initial pool capacity : the initial size of broker connection pool.
  • + *
  • maximum pool capacity : the max allowed size of broker connection pool.
  • + *
  • maximum wait timeout : the max wait timeout for retrieving connections.
  • + *
+ * + * Note that this example differs from the others (and therefore is overriding the execute() method) because + * in this case we are not using the "standard" WSRF interface but instead an additional custom + * "operation" on a WS-Resource. + * + * @param arguments the commadn line arguments. + */ + void execute(String [] arguments) + { + if (arguments.length != 10){ + printUsageAndExit("invalid command line was given."); + } + + try + { + // 1) Parses command line arguments... + String host = arguments[0]; + int port = Integer.parseInt(arguments[1]); + String qpidHost = arguments[2]; + int qpidPort = Integer.parseInt(arguments[3]); + String virtualHost = arguments[4]; + String username = arguments[5]; + String password = arguments[6]; + int initPoolCapacity = Integer.parseInt(arguments[7]); + int maxPoolCapacity = Integer.parseInt(arguments[8]); + long maxWaitTimeout = Long.parseLong(arguments[9]); + + printOutExampleDescription(); + + waitForUserInput("Type enter to proceed..."); + + executeExample( + host, + port, + qpidHost, + qpidPort, + virtualHost, + username, + password, + initPoolCapacity, + maxPoolCapacity, + maxWaitTimeout); + + } catch(NumberFormatException exception) + { + printUsageAndExit("Unable to run the example. Please ensure that all numeric values are correctly supplied."); + } catch(Exception exception) + { + System.out.println("-----------------------EXAMPLE FAILURE-----------"); + System.out.println("Not well-defined exception was detected while"); + System.out.println("running the example."); + exception.printStackTrace(System.out); + System.out.println("--------------------------------------------------------"); + } + } + + /** + * Connects QMan with a broker. + * + *@param host the hostname where QMan is running; + *@param port the port number where QMan is running; + *@param qpidHost the host name where QPid is running; + *@param qpidPort the port number where Qpid is running; + *@param virtualHost the virtual host name; + *@param username the username that will be used for estabilshing connection. + *@param password the password that will be used for estabilshing connection. + *@param initPoolCapacity the initial size of broker connection pool. + *@param maxPoolCapacity the max allowed size of broker connection pool. + *@param maxWaitTimeout the max wait timeout for retrieving connections. + * + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port, String qpidHost, int qpidPort, String virtualHost, String username, String password, int initPoolCapacity, int maxPoolCapacity, long maxWaitTimeout) throws Exception + { + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + WsResourceClient adapterClient = new WsResourceClient(adapterEndpointReference); + adapterClient.setTrace(true); + + // 2) Creates the Adapter service client... + adapterClient.invoke( + getProxyHandler(), + new Object[]{ + qpidHost, + qpidPort, + username, + password, + virtualHost, + initPoolCapacity, + maxPoolCapacity, + maxWaitTimeout}); + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("This example shows how to connect QMan with a broker using"); + System.out.println("the adapter interface."); + System.out.println(); + } + + /** + * A proxy handler is a module needed in order to make a capability + * service invocation. + * It contains logic to serialize and deserialize request, response, input and + * output parameters during a web service invocation. + * + * @return a proxy handler. + */ + private ProxyHandler getProxyHandler() + { + ProxyHandler handler = new ReflectionProxyHandler(); + handler.setAction("http://amqp.apache.org/qpid/management/qman/Connect"); + handler.setRequestName(new QName("http://amqp.apache.org/qpid/management/qman", "Connect", PREFIX)); + handler.setRequestParameterNames(new QName[]{ + new QName("http://amqp.apache.org/qpid/management/qman", "host", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "port", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "username", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "password", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "virtualHost", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "initialPoolCapacity", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "maxPoolCapacity", PREFIX), + new QName("http://amqp.apache.org/qpid/management/qman", "maxWaitTimeout", PREFIX)}); + handler.setResponseName(new QName("http://amqp.apache.org/qpid/management/qman", "ConnectResponse", PREFIX)); + handler.setReturnType(null); + return handler; + } + + public static void main(String[] arguments) + { + new ConnectWithBrokerExample().execute(arguments); + } + + static void printUsageAndExit(String reason) + { + StringBuilder builder = new StringBuilder(); + builder.append("WARNING! Unable to run this sample : ") + .append(reason) + .append(LINE_SEPARATOR) + .append("-------------------------------------------------------------") + .append(LINE_SEPARATOR) + .append("Expected command line args for this sample are :") + .append(LINE_SEPARATOR) + .append(LINE_SEPARATOR) + .append("1) host : ip or host name where QMan is running.") + .append(LINE_SEPARATOR) + .append("2) port : port number where QMan is running.") + .append(LINE_SEPARATOR) + .append("3) qpid host : port number where Qpid is running.") + .append(LINE_SEPARATOR) + .append("4) qpid port : port number where Qpid is running.") + .append(LINE_SEPARATOR) + .append("5) virtual host : virtual host name.") + .append(LINE_SEPARATOR) + .append("6) username : port number where QMan is running.") + .append(LINE_SEPARATOR) + .append("7) password : port number where QMan is running.") + .append(LINE_SEPARATOR) + .append("8) initial pool capacity : port number where QMan is running.") + .append(LINE_SEPARATOR) + .append("9) max pool capacity : port number where QMan is running.") + .append(LINE_SEPARATOR) + .append("10) max wait timeout : port number where QMan is running.") + .append(LINE_SEPARATOR) + + .append("------------------------------------------------------------"); + System.out.println(builder); + System.exit(1); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/ConsumerAndProducerExample.java b/java/management/client/src/example/org/apache/qpid/management/example/ConsumerAndProducerExample.java new file mode 100644 index 0000000000..42587d78ff --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/ConsumerAndProducerExample.java @@ -0,0 +1,293 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import java.net.URI; +import java.util.Date; + +import org.apache.muse.util.xml.XPathUtils; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.addressing.soap.SoapFault; +import org.apache.muse.ws.notification.impl.FilterCollection; +import org.apache.muse.ws.notification.impl.MessagePatternFilter; +import org.apache.muse.ws.notification.impl.ProducerPropertiesFilter; +import org.apache.muse.ws.notification.impl.TopicFilter; +import org.apache.muse.ws.notification.remote.NotificationProducerClient; +import org.apache.qpid.management.Names; + +/** + * This example is demonstrating a WS-Notification scenario + * when (for simplicity) QMan is at the same time consumer + * and producer. + * + * Basically we have (on producer side) two topics : one for + * lifecycle events of object instance (objects created & removed) + * and another one for lifecycle of event (events created). + * + * On consumer side there are many options that you can use in + * order to made a sunscription : + * + *
    + *
  • you could be an observer of all messages (all topics);
  • + *
  • you could be an observer of one specific topic;
  • + *
  • + * you could be an observer of all messages that match + * a condition expressed in XPath; + *
  • + *
+ * + * All those options are provided with or withour a termination time. + * A subscription with a termination time will have a predefined expiry + * date while if there's no termination the subscription will never expire. + * + * @author Andrea Gazzarini + * + */ +public class ConsumerAndProducerExample extends AbstractQManExample +{ + @Override + void executeExample(String host, int port) throws Exception + { + // This is QMan... + URI producerURI = URI.create("http://"+host+":"+port+"/qman/services/adapter"); + + // ...and this is QMan too! Note that it has an hidden consumer capability that is used in + // order to run successfully this example... + URI consumerURI = URI.create("http://"+host+":"+port+"/qman/services/consumer"); + + EndpointReference producerEPR = new EndpointReference(producerURI); + EndpointReference consumerEPR = new EndpointReference(consumerURI); + + // Example 1 : all messages on all topics without termination time. + subscribeAllMessagesWithoutTerminationTime(producerEPR,consumerEPR); + + // Example 2 : all messages on all topics with termination time. + subscribeAllMessagesWithTerminationTime(producerEPR,consumerEPR); + + // Example 3: Topic filter without termination time. + topicSubscriptionWithoutTerminationTime(producerEPR,consumerEPR); + + // Example 4: Topic filter with termination time. + topicSubscriptionWithTerminationTime(producerEPR,consumerEPR); + + // Example 5: a MessageFilter is installed in order to listen only for connection events + // (connections created or removed). The subscription never expire. + allMessagesWithMessageFilterWithoutTerminationTime(producerEPR,consumerEPR); + + // Example 6: a MessageFilter is installed in order to listen only for connection events + // (connections created or removed). The subscription will expire in 10 seconds. + allMessagesWithMessageFilterAndTerminationTime(producerEPR,consumerEPR); + + // Example 7 : a subscription with more than one filter. + complexSubscription(producerEPR, consumerEPR); + } + + /** + * Makes a subscription on all topics / all messages without an expiry date. + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void subscribeAllMessagesWithoutTerminationTime(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + null, // Filter, if null that means "all messages" + null); // Termination Time : if null the subscription will never expire. + } + + /** + * Makes a subscription on all topics / all messages with 10 seconds as termination time. + * The subscription will expire after 10 seconds. + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void subscribeAllMessagesWithTerminationTime(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + null, // Filter, if null that means "all messages" + new Date(System.currentTimeMillis() + 10000)); // Termination Time + } + + /** + * Makes a subscription on a specifc topic without an expiry date. + * Only messages published on the given topic will be delivered to the given consumer. + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void topicSubscriptionWithoutTerminationTime(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + TopicFilter filter = new TopicFilter(Names.EVENTS_LIFECYLE_TOPIC_NAME); + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + filter, // Topic Filter + null); // Termination Time : if null the subscription will never expire. + } + + /** + * Makes a subscription on a specifc topic with an expiry date. + * Only messages published on the given topic will be delivered to the given consumer. + * The subscription will end after 10 seconds + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void topicSubscriptionWithTerminationTime(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + TopicFilter filter = new TopicFilter(Names.EVENTS_LIFECYLE_TOPIC_NAME); + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + filter, // Topic Filter + new Date(System.currentTimeMillis() + 10000)); // Termination Time + } + + /** + * Makes a subscription on all topics with a message filter without an expiry date. + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void allMessagesWithMessageFilterWithoutTerminationTime(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + // Applying this filter will result in a subscription that wll be notified only when a "connection" + // object is created or removed + MessagePatternFilter filter= new MessagePatternFilter( + "/wsnt:NotificationMessage/wsnt:Message/qman:LifeCycleEvent/qman:Resource/qman:Name/text()='connection'", // expression (XPath) + XPathUtils.NAMESPACE_URI); // Dialect : the only supported dialect is XPath 1.0 + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + filter, // Message Filter + null); // Termination Time : if null the subscription will never expire. + } + + /** + * Makes a subscription on all topics with a message filter and an expiry date. + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void allMessagesWithMessageFilterAndTerminationTime(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + // Applying this filter will result in a subscription that wll be notified only when a "connection" + // object is created or removed + MessagePatternFilter filter= new MessagePatternFilter( + "/wsnt:NotificationMessage/wsnt:Message/qman:LifeCycleEvent/qman:Resource/qman:Name/text()='connection'", // expression (XPath) + XPathUtils.NAMESPACE_URI); // Dialect : the only supported dialect is XPath 1.0 + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + filter, // Message Filter + new Date(System.currentTimeMillis() + 10000)); // Termination Time + } + + /** + * Makes a subscription on a specifc topic with an expiry date. + * Only messages published on the given topic will be delivered to the given consumer. + * The subscription will end after 10 seconds + * + * @param producer the producer endpoint reference. + * @param consumer the consumer endpoint reference . + * @throws SoapFault when the subscription cannot be made. + */ + private void complexSubscription(EndpointReference producer, EndpointReference consumer) throws SoapFault + { + NotificationProducerClient producerClient = new NotificationProducerClient(producer); + producerClient.setTrace(true); + + FilterCollection filter = new FilterCollection(); + + TopicFilter topicFilter = new TopicFilter(Names.EVENTS_LIFECYLE_TOPIC_NAME); + MessagePatternFilter messageFilter= new MessagePatternFilter( + "/wsnt:NotificationMessage/wsnt:Message/qman:LifeCycleEvent/qman:Resource/qman:Name/text()='connection'", // expression (XPath) + XPathUtils.NAMESPACE_URI); // Dialect : the only supported dialect is XPath 1.0 + + ProducerPropertiesFilter producerFilter = new ProducerPropertiesFilter( + "boolean(/*/MgtPubInterval > 100 and /*/MsgTotalEnqueues > 56272)", + XPathUtils.NAMESPACE_URI); + + filter.addFilter(topicFilter); + filter.addFilter(messageFilter); + filter.addFilter(producerFilter); + + producerClient.subscribe( + consumer, // Consumer Endpoint reference + filter, // Topic Filter + new Date(System.currentTimeMillis() + 10000)); // Termination Time + } + + @Override + void printOutExampleDescription() + { + System.out.println("This example is demonstrating a WS-Notification scenario "); + System.out.println("when (for simplicity) QMan is at the same time consumer "); + System.out.println("and producer."); + System.out.println(); + System.out.println("Basically we have (on producer side) two topics : one for"); + System.out.println("lifecycle events of object instance (objects created & removed) "); + System.out.println("and another one for lifecycle of event (events created)."); + System.out.println(); + System.out.println("On consumer side there are many options that you can use in"); + System.out.println("order to made a sunscription :"); + System.out.println(); + System.out.println("- you could be an observer of all messages (all topics);"); + System.out.println("- you could be an observer of one specific topic;"); + System.out.println("- you could be an observer of all messages that match a condition expressed in XPath;"); + System.out.println(); + System.out.println("All those options are provided with or withour a termination time."); + System.out.println("A subscription with a termination time will have a predefined expiry"); + System.out.println("date while if there's no termination the subscription will never expire."); + } + + public static void main(String[] args) + { + new ConsumerAndProducerExample().execute(new String[]{"localhost","8080"}); + } +} diff --git a/java/management/client/src/example/org/apache/qpid/management/example/GetMultipleResourcePropertiesExample.java b/java/management/client/src/example/org/apache/qpid/management/example/GetMultipleResourcePropertiesExample.java new file mode 100644 index 0000000000..413222a79d --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/GetMultipleResourcePropertiesExample.java @@ -0,0 +1,179 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.namespace.QName; + +import org.apache.muse.core.proxy.ProxyHandler; +import org.apache.muse.core.proxy.ReflectionProxyHandler; +import org.apache.muse.util.xml.XmlUtils; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; +import org.w3c.dom.Element; + +/** + * This example shows how to get properties from a WS-Resource using one request. + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then a GetMetadataRequest is sent to the + * first child. + * The result metadata descriptor contains all properties names of the target WS-Resource. + * Those names are then used for retrieving the corresponding values. + * + * @author Andrea Gazzarini + */ +public class GetMultipleResourcePropertiesExample extends AbstractQManExample +{ + + /** + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then a GetMetadataRequest is sent to the + * first child. + * The result metadata descriptor contains all properties names of the target WS-Resource. + * Those names are then used for retrieving the corresponding values. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Adapter service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(adapterEndpointReference); + adapterClient.setTrace(true); + + // 3) Retrieves the all registered members (QMan WS-Resources) + WsResourceClient [] resources = adapterClient.getMembers(); + + // Sanity check : we cannot proceed if there are no WS-Resources. + if (resources.length == 0) + { + System.out.println("----------------------------WARNING---------------------------"); + System.out.println("Cannot proceed with the example... it seems"); + System.out.println("that there are no managed WS-Resources on QMan."); + System.out.println("Please check QMan in order to see that it is really"); + System.out.println("connected with a broker."); + System.out.println("-------------------------------------------------------------------"); + System.exit(0); + } + + // 4) Creates a proxy handler for service invocation. + ProxyHandler metadataProxyHandler = createProxyHandler(); + + // 5) ..and invokes the GetMetadata on the first member. + WsResourceClient wsResourceClient = resources[0]; + wsResourceClient.setTrace(true); + + // Dialect is RDM for this example + String dialect = "http://docs.oasis-open.org/wsrf/rmd-1"; + Object [] inputParameters = {dialect}; + + // RDM is the first element of the returned array. + // The first element is a wsx:Metadata containing all resource properties. + Element [] metadata = (Element[]) wsResourceClient.invoke(metadataProxyHandler, inputParameters); + Element resourceMetadataDescriptor = metadata[0]; + + // 6) using XPath navigates xml in order to get the list of all properties. + Element [] properties = XmlUtils.findInSubTree( + resourceMetadataDescriptor, + new QName("http://docs.oasis-open.org/wsrf/rmd-1","Property","wsrmd")); + List names = new ArrayList(); + + for (Element property : properties) + { + + String attributeName = property.getAttribute("name"); // = qman: + + // For this example we are only interested on qman namespace related properties... + if (attributeName.startsWith("qman")) + { + String attributeNameWithoutPrefix = attributeName.replaceFirst("qman:", ""); // = + + names.add(new QName( + "http://amqp.apache.org/qpid/management/qman", + attributeNameWithoutPrefix, + "qman")); + } + } + + QName [] qnames = names.toArray(new QName[names.size()]); + + // 7) Send a GetMultipleResourcePropertiesRequest. + // We do nothing with the returned value(s) because it / they + // has / have already printed out (wsResourceClient.setTrace(true)) + @SuppressWarnings("unused") + Element [] values = wsResourceClient.getMultipleResourceProperties(qnames); + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("This example shows how to get properties from a"); + System.out.println("WS-Resource using one request. "); + System.out.println("First of all a request is send to WS-DM in order to get"); + System.out.println("all registered WS-Resources."); + System.out.println("If the returned list is not empty then a GetMetadataRequest"); + System.out.println("to the first child."); + System.out.println("The result metadata descriptor contains all property names of"); + System.out.println("the target WS-Resource."); + System.out.println("Those names are then used for retrieving the corresponding values"); + System.out.println("using the GetMultipleResourceProperties request."); + System.out.println(); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + } + + /** + * A proxy handler is a module needed in order to make a capability + * service invocation. + * It contains logic to serialize and deserialize request, response, input and + * output parameters during a web service invocation. + * + * @return a proxy handler. + */ + private ProxyHandler createProxyHandler() + { + ProxyHandler handler = new ReflectionProxyHandler(); + handler.setAction("http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"); + handler.setRequestName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "GetMetadata", PREFIX)); + handler.setRequestParameterNames(new QName[]{new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Dialect", PREFIX)}); + handler.setResponseName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Metadata", PREFIX)); + handler.setReturnType(Element[].class); + return handler; + } + + public static void main(String[] arguments) + { + new GetMultipleResourcePropertiesExample().execute(arguments); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/GetQManResourceMembersExample.java b/java/management/client/src/example/org/apache/qpid/management/example/GetQManResourceMembersExample.java new file mode 100644 index 0000000000..f74a44ab57 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/GetQManResourceMembersExample.java @@ -0,0 +1,93 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; + +/** + * An example demonstrating the usage of GetResourcePropertyRequest/Response on + * the WS-DM Adapter. + * + * @author Andrea Gazzarini + */ +public class GetQManResourceMembersExample extends AbstractQManExample +{ + /** + * Looks for memebers of QMan group requesting ws-rp:Entry property to + * WS-DM Adapter resource service. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + // 1) Creates an endpoint reference of the adapter service... + EndpointReference serviceEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(serviceEndpointReference); + adapterClient.setTrace(true); + + // 3) Invokes the service. + WsResourceClient [] resources = adapterClient.getMembers(); + + String result = (resources.length != 0) + ? ("QMan has at the moment "+resources.length+" registered resources.") + : "It seems that there are no managed resource on QMan side..."; + + System.out.println("--------------------------------------------------------------------------"); + System.out.println(result); + System.out.println("--------------------------------------------------------------------------"); + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("This example shows the usage of WS-DM "); + System.out.println("GetResourcePropertyRequest / Response on a "); + System.out.println("Group service."); + System.out.println("The target resource is the WS-DM Adapter itself "); + System.out.println("and the requested property is \"wsrf-sg:Entry\"."); + System.out.println("WS-DM Adapter is a special WS-Resource (is a Group)"); + System.out.println("that acts as the main entry point for retrieving"); + System.out.println("all other managed resources."); + System.out.println("So clients that want to deal with QMan WS-Resources"); + System.out.println("must first get resource identifiers sending"); + System.out.println("a GetResourcePropertyRequest to WS-DM Adapter "); + System.out.println("with \"wsrf-sg:Entry\" as target target property."); + System.out.println(); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + } + + public static void main(String[] arguments) + { + new GetQManResourceMembersExample().execute(arguments); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/GetResourceMetadataDescriptorExample.java b/java/management/client/src/example/org/apache/qpid/management/example/GetResourceMetadataDescriptorExample.java new file mode 100644 index 0000000000..84befc01e4 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/GetResourceMetadataDescriptorExample.java @@ -0,0 +1,156 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import javax.xml.namespace.QName; + +import org.apache.muse.core.proxy.ProxyHandler; +import org.apache.muse.core.proxy.ReflectionProxyHandler; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; +import org.w3c.dom.Element; + +/** + * This example shows how to get metadata from a WS-Resource. + * The service supports different kinds of metadata. + * User who wants to receive metadata of a WS-Resource must + * send a GetMetadataRequesta specifying the requested dialect. + * + * Supported metadata that could be requested are + * + *
    + *
  • + * WSDL : requested using "http://schemas.xmlsoap.org/wsdl/" as dialect.. + *
  • + *
  • + * RDM (Resource Metadata Descriptor) : requested using "http://docs.oasis-open.org/wsrf/rmd-1 "as dialect. + *
  • + *
+ * + * Note that this example focuses on RDM Metadata only; another example is dedicated to WSDL. + * + * @author Andrea Gazzarini + */ +public class GetResourceMetadataDescriptorExample extends AbstractQManExample +{ + + /** + * First, sends a request to WS-DM Adapter in order to get the list of managed resources. + * If the list is not empty, then takes the first member and sends it a GetMetadataRequest + * in order to get its RDM. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Adapter service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(adapterEndpointReference); + adapterClient.setTrace(true); + + // 3) Retrieves the all registered members (QMan WS-Resources) + WsResourceClient [] resources = adapterClient.getMembers(); + + // Sanity check : we cannot proceed if there are no WS-Resources. + if (resources.length == 0) + { + System.out.println("----------------------------WARNING---------------------------"); + System.out.println("Cannot proceed with the example... it seems"); + System.out.println("that there are no managed WS-Resources on QMan."); + System.out.println("Please check QMan in order to see that it is really"); + System.out.println("connected with a broker."); + System.out.println("-------------------------------------------------------------------"); + System.exit(0); + } + + // 4) Creates a proxy handler for service invocation. + ProxyHandler metadataProxyHandler = createProxyHandler(); + + // 5) ..and invokes the GetMetadata on the first member. + WsResourceClient firstMember = resources[0]; + firstMember.setTrace(true); + + // Dialect is RDM for this example + String dialect = "http://docs.oasis-open.org/wsrf/rmd-1"; + Object [] inputParameters = {dialect}; + + // WSDL is the first element of the returned array. We don't need to print out it here + // because at this point it should have been already printed out (line 96 : firstMember.setTrace(true)) + @SuppressWarnings("unused") + Element [] metadata = (Element[]) firstMember.invoke(metadataProxyHandler, inputParameters); + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("The example shows how to get metadata from a"); + System.out.println("WS-Resource."); + System.out.println("A QMan WS-Resource has different kinds of metadata."); + System.out.println("(see below)"); + System.out.println("User who wants to receive metadata of a WS-Resource"); + System.out.println("must send a GetMetadataRequesta specifying the"); + System.out.println("associated dialect."); + System.out.println("Supported metadata that could be requested are : "); + System.out.println(); + System.out.println("- WSDL : in this case dialect is \"http://schemas.xmlsoap.org/wsdl/\";"); + System.out.println("- RDM (Resource Metadata Descriptor) : in this case dialect is \"http://docs.oasis-open.org/wsrf/rmd-1 \"."); + System.out.println(); + System.out.println("Note that this examples focuses on RDM Metadata only;"); + System.out.println("another one is dedicated to WSDL."); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + } + + /** + * A proxy handler is a module needed in order to make a capability + * service invocation. + * It contains logic to serialize and deserialize request, response, input and + * output parameters during a web service invocation. + * + * @return a proxy handler. + */ + private ProxyHandler createProxyHandler() + { + ProxyHandler handler = new ReflectionProxyHandler(); + handler.setAction("http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"); + handler.setRequestName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "GetMetadata", PREFIX)); + handler.setRequestParameterNames(new QName[]{new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Dialect", PREFIX)}); + handler.setResponseName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Metadata", PREFIX)); + handler.setReturnType(Element[].class); + return handler; + } + + public static void main(String[] arguments) + { + new GetResourceMetadataDescriptorExample().execute(arguments); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyDocumentExample.java b/java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyDocumentExample.java new file mode 100644 index 0000000000..56ce81358d --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyDocumentExample.java @@ -0,0 +1,111 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; +import org.w3c.dom.Element; + +/** + * This example shows how to get the whole property document from a WS-Resource. + * Resource property document represents a particular composed structural view of + * the resource properties of the WS-Resource. + * Let's say that It is a way to get all-in-once the state of the WS-Resource. + * + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then a GetResourcePropertyDocumentRequest is + * sent to the first child. + * + * @author Andrea Gazzarini + */ +public class GetResourcePropertyDocumentExample extends AbstractQManExample +{ + + /** + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then a GetResourcePropertyDocumentRequest is + * sent to the first child. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Adapter service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(adapterEndpointReference); + adapterClient.setTrace(true); + + // 3) Retrieves the all registered members (QMan WS-Resources) + WsResourceClient [] resources = adapterClient.getMembers(); + + // Sanity check : we cannot proceed if there are no WS-Resources. + if (resources.length == 0) + { + System.out.println("----------------------------WARNING---------------------------"); + System.out.println("Cannot proceed with the example... it seems"); + System.out.println("that there are no managed WS-Resources on QMan."); + System.out.println("Please check QMan in order to see that it is really"); + System.out.println("connected with a broker."); + System.out.println("-------------------------------------------------------------------"); + System.exit(0); + } + + // 4) ..and invokes the GetMetadata on the first member. + WsResourceClient wsResourceClient = resources[0]; + wsResourceClient.setTrace(true); + + @SuppressWarnings("unused") + Element resourcePropertyDocument = wsResourceClient.getResourcePropertyDocument(); + } + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("This example shows how to get the whole property"); + System.out.println("document from a WS-Resource."); + System.out.println("Resource property document represents a particular "); + System.out.println("composed structural view of the resource properties"); + System.out.println("of the WS-Resource."); + System.out.println("First of all a request is send to WS-DM in order to get"); + System.out.println("all registered WS-Resources."); + System.out.println("the target WS-Resource."); + System.out.println("If the returned list is not empty then a"); + System.out.println("GetResourcePropertyDocumentRequest is sent to the first child."); + System.out.println(); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + } + + public static void main(String[] arguments) + { + new GetResourcePropertyDocumentExample().execute(arguments); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyExample.java b/java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyExample.java new file mode 100644 index 0000000000..28ed1c7925 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/GetResourcePropertyExample.java @@ -0,0 +1,172 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import javax.xml.namespace.QName; + +import org.apache.muse.core.proxy.ProxyHandler; +import org.apache.muse.core.proxy.ReflectionProxyHandler; +import org.apache.muse.util.xml.XmlUtils; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; +import org.w3c.dom.Element; + +/** + * This example shows how to get the property value from a WS-Resource. + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then a GetMetadataRequest is sent to the + * first child. + * The result metadata descriptor contains all properties of the target WS-Resource. + * For each of them a GetResourcePropertyRequest is sent in order to get its value. + * + * @author Andrea Gazzarini + */ +public class GetResourcePropertyExample extends AbstractQManExample +{ + + /** + * First, sends a request to WS-DM Adapter in order to get the list of managed resources. + * If the list is not empty, then takes the first member and sends it a GetMetadataRequest + * in order to get its WSDL. + * After that, for each property contained in ResourceMetadataDescriptorm (RDM) a + * GetResourcePropertyRequest is sent in order to get its value. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Adapter service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(adapterEndpointReference); + adapterClient.setTrace(true); + + // 3) Retrieves the all registered members (QMan WS-Resources) + WsResourceClient [] resources = adapterClient.getMembers(); + + // Sanity check : we cannot proceed if there are no WS-Resources. + if (resources.length == 0) + { + System.out.println("----------------------------WARNING---------------------------"); + System.out.println("Cannot proceed with the example... it seems"); + System.out.println("that there are no managed WS-Resources on QMan."); + System.out.println("Please check QMan in order to see that it is really"); + System.out.println("connected with a broker."); + System.out.println("-------------------------------------------------------------------"); + System.exit(0); + } + + // 4) Creates a proxy handler for service invocation. + ProxyHandler metadataProxyHandler = createProxyHandler(); + + // 5) ..and invokes the GetMetadata on the first member. + WsResourceClient wsResourceClient = resources[0]; + wsResourceClient.setTrace(true); + + // Dialect is RDM for this example + String dialect = "http://docs.oasis-open.org/wsrf/rmd-1"; + Object [] inputParameters = {dialect}; + + // RDM is the first element of the returned array. + // The first element is a wsx:Metadata containing all resource properties. + Element [] metadata = (Element[]) wsResourceClient.invoke(metadataProxyHandler, inputParameters); + Element resourceMetadataDescriptor = metadata[0]; + + // 6) using XPath navigates xml in order to get the list of all properties. + Element [] properties = XmlUtils.findInSubTree( + resourceMetadataDescriptor, + new QName("http://docs.oasis-open.org/wsrf/rmd-1","Property","wsrmd")); + + for (Element property : properties) + { + + String attributeName = property.getAttribute("name"); // = qman: + + // For this example we are only interested on qman namespace related properties... + if (attributeName.startsWith("qman")) + { + String attributeNameWithoutPrefix = attributeName.replaceFirst("qman:", ""); // = + + // 7) Send a GetResourcePropertyRequest for the given attribute. + // We do nothing with the returned value(s) because it / they + // has / have already printed out (wsResourceClient.setTrace(true)) + @SuppressWarnings("unused") + Element [] values = wsResourceClient.getResourceProperty( + new QName( + "http://amqp.apache.org/qpid/management/qman", + attributeNameWithoutPrefix, + "qman")); + } + } + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("This example shows how to get the property value"); + System.out.println("from a WS-Resource."); + System.out.println("First of all a request is send to WS-DM in order to get"); + System.out.println("all registered WS-Resources."); + System.out.println("If the returned list is not empty then a GetMetadataRequest"); + System.out.println("to the first child."); + System.out.println("The result metadata descriptor contains all properties of"); + System.out.println("the target WS-Resource."); + System.out.println("For each of them a GetResourcePropertyRequest is sent"); + System.out.println(" in order to get its value."); + System.out.println(); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + } + + /** + * A proxy handler is a module needed in order to make a capability + * service invocation. + * It contains logic to serialize and deserialize request, response, input and + * output parameters during a web service invocation. + * + * @return a proxy handler. + */ + private ProxyHandler createProxyHandler() + { + ProxyHandler handler = new ReflectionProxyHandler(); + handler.setAction("http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"); + handler.setRequestName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "GetMetadata", PREFIX)); + handler.setRequestParameterNames(new QName[]{new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Dialect", PREFIX)}); + handler.setResponseName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Metadata", PREFIX)); + handler.setReturnType(Element[].class); + return handler; + } + + public static void main(String[] arguments) + { + new GetResourcePropertyExample().execute(arguments); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/GetWSDLMetadataExample.java b/java/management/client/src/example/org/apache/qpid/management/example/GetWSDLMetadataExample.java new file mode 100644 index 0000000000..ecda6e8fb1 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/GetWSDLMetadataExample.java @@ -0,0 +1,156 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import javax.xml.namespace.QName; + +import org.apache.muse.core.proxy.ProxyHandler; +import org.apache.muse.core.proxy.ReflectionProxyHandler; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; +import org.w3c.dom.Element; + +/** + * This example shows how to get metadata from a WS-Resource. + * The service supports different kinds of metadata. + * User who wants to receive metadata of a WS-Resource must + * send a GetMetadataRequesta specifying the requested dialect. + * + * Supported metadata that could be requested are + * + *
    + *
  • + * WSDL : requested using "http://schemas.xmlsoap.org/wsdl/" as dialect.. + *
  • + *
  • + * RDM (Resource Metadata Descriptor) : requested using "http://docs.oasis-open.org/wsrf/rmd-1 "as dialect. + *
  • + *
+ * + * Note that this example focuses on WSDL Metadata only; another example is dedicated to RDM. + * + * @author Andrea Gazzarini + */ +public class GetWSDLMetadataExample extends AbstractQManExample +{ + + /** + * First, sends a request to WS-DM Adapter in order to get the list of managed resources. + * If the list is not empty, then takes the first member and sends it a GetMetadataRequest + * in order to get its WSDL. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Adapter service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(adapterEndpointReference); + adapterClient.setTrace(true); + + // 3) Retrieves the all registered members (QMan WS-Resources) + WsResourceClient [] resources = adapterClient.getMembers(); + + // Sanity check : we cannot proceed if there are no WS-Resources. + if (resources.length == 0) + { + System.out.println("----------------------------WARNING---------------------------"); + System.out.println("Cannot proceed with the example... it seems"); + System.out.println("that there are no managed WS-Resources on QMan."); + System.out.println("Please check QMan in order to see that it is really"); + System.out.println("connected with a broker."); + System.out.println("-------------------------------------------------------------------"); + System.exit(0); + } + + // 4) Creates a proxy handler for service invocation. + ProxyHandler metadataProxyHandler = createProxyHandler(); + + // 5) ..and invokes the GetMetadata on the first member. + WsResourceClient firstMember = resources[0]; + firstMember.setTrace(true); + + // Dialect is WSDL for this example + String dialect = "http://schemas.xmlsoap.org/wsdl/"; + Object [] inputParameters = {dialect}; + + // WSDL is the first element of the returned array. We don't need to print out it here + // because at this point it should have been already printed out (line 96 : firstMember.setTrace(true)) + @SuppressWarnings("unused") + Element [] metadata = (Element[]) firstMember.invoke(metadataProxyHandler, inputParameters); + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("The example shows how to get metadata from a"); + System.out.println("WS-Resource."); + System.out.println("A QMan WS-Resource has different kinds of metadata."); + System.out.println("(see below)"); + System.out.println("User who wants to receive metadata of a WS-Resource"); + System.out.println("must send a GetMetadataRequesta specifying the"); + System.out.println("associated dialect."); + System.out.println("Supported metadata that could be requested are : "); + System.out.println(); + System.out.println("- WSDL : in this case dialect is \"http://schemas.xmlsoap.org/wsdl/\";"); + System.out.println("- RDM (Resource Metadata Descriptor) : in this case dialect is \"http://docs.oasis-open.org/wsrf/rmd-1 \"."); + System.out.println(); + System.out.println("Note that this examples focuses on WSDL Metadata only;"); + System.out.println("another one is dedicated to RDM."); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + } + + /** + * A proxy handler is a module needed in order to make a capability + * service invocation. + * It contains logic to serialize and deserialize request, response, input and + * output parameters during a web service invocation. + * + * @return a proxy handler. + */ + private ProxyHandler createProxyHandler() + { + ProxyHandler handler = new ReflectionProxyHandler(); + handler.setAction("http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"); + handler.setRequestName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "GetMetadata", PREFIX)); + handler.setRequestParameterNames(new QName[]{new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Dialect", PREFIX)}); + handler.setResponseName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Metadata", PREFIX)); + handler.setReturnType(Element[].class); + return handler; + } + + public static void main(String[] arguments) + { + new GetWSDLMetadataExample().execute(arguments); + } +} \ No newline at end of file diff --git a/java/management/client/src/example/org/apache/qpid/management/example/PausableSubscriptionExample.java b/java/management/client/src/example/org/apache/qpid/management/example/PausableSubscriptionExample.java new file mode 100644 index 0000000000..01a27a16f9 --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/PausableSubscriptionExample.java @@ -0,0 +1,88 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import java.net.URI; + +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.notification.remote.NotificationProducerClient; +import org.apache.muse.ws.notification.remote.SubscriptionClient; + +/** + * This example is demonstrating a WS-Notification scenario + * when (for simplicity) QMan is at the same time consumer + * and producer. + * + * Specifically the example shows how a requestor can create, pause and resume + * a subscription. + * + * @author Andrea Gazzarini + * + */ +public class PausableSubscriptionExample extends AbstractQManExample +{ + @Override + void executeExample(String host, int port) throws Exception + { + // This is QMan... + URI producerURI = URI.create("http://"+host+":"+port+"/qman/services/adapter"); + + // ...and this is QMan too! Note that it has an hidden consumer capability that is used in + // order to run successfully this example... + URI consumerURI = URI.create("http://"+host+":"+port+"/qman/services/consumer"); + + EndpointReference producerEPR = new EndpointReference(producerURI); + EndpointReference consumerEPR = new EndpointReference(consumerURI); + + NotificationProducerClient producerClient = new NotificationProducerClient(producerEPR); + producerClient.setTrace(true); + + // 1) Creates a subscription and gets the corresponding reference. + SubscriptionClient subscriptionClient = producerClient.subscribe( + consumerEPR, // Consumer Endpoint reference + null, // Filter, if null that means "all messages" + null); // Termination Time : if null the subscription will never expire. + subscriptionClient.setTrace(true); + + + // 2) Pauses the subscription. + subscriptionClient.pauseSubscription(); + + // 3) Resumes the subscription. + subscriptionClient.resumeSubscription(); + } + + @Override + void printOutExampleDescription() + { + System.out.println("This example is demonstrating a WS-Notification scenario "); + System.out.println("when (for simplicity) QMan is at the same time consumer "); + System.out.println("and producer."); + System.out.println(); + System.out.println("Specifically the example shows how a requestor can create,"); + System.out.println("pause and resume a subscription."); + } + + public static void main(String[] args) + { + new PausableSubscriptionExample().execute(new String[]{"romagazzarini","8080"}); + } +} diff --git a/java/management/client/src/example/org/apache/qpid/management/example/SetResourcePropertyExample.java b/java/management/client/src/example/org/apache/qpid/management/example/SetResourcePropertyExample.java new file mode 100644 index 0000000000..8aed3101ff --- /dev/null +++ b/java/management/client/src/example/org/apache/qpid/management/example/SetResourcePropertyExample.java @@ -0,0 +1,306 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.example; + +import java.lang.reflect.Array; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.namespace.QName; + +import org.apache.muse.core.proxy.ProxyHandler; +import org.apache.muse.core.proxy.ReflectionProxyHandler; +import org.apache.muse.util.xml.XmlUtils; +import org.apache.muse.ws.addressing.EndpointReference; +import org.apache.muse.ws.resource.remote.WsResourceClient; +import org.apache.muse.ws.resource.sg.remote.ServiceGroupClient; +import org.w3c.dom.Element; + +/** + * This example shows how to change the state of a WS-Resource. That means + * a SetResourcePropertyRequest is sent to that WS-Resource. + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then two GetMetadataRequests are sent to the + * first child (one for WSDL and one for RDM). + * The result metadata descriptors are the used to determine : + * + *
What are names of WS-Resouce properties + *
Their modifiability (read-only or read-write) + *
Their type + * + * So a SetResourcePropertyRequest can be sent in order to change the WS-Resource state. + * The example is looking for a property that has one of the following datatype : + * + *
    + *
  • String
  • + *
  • Long
  • + *
  • Integer
  • + *
  • Short
  • + *
  • Double
  • + *
  • Float
  • + *
+ * + * After the update / insert request has been sent, a GetResourcePropertiesRequest is made + * again in order to see if the state has changed correctly. + * + * @author Andrea Gazzarini + */ +public class SetResourcePropertyExample extends AbstractQManExample +{ + /** + * First of all a request is send to WS-DM in order to get all registered WS-Resources. + * If the returned list is not empty then two GetMetadataRequests are sent to the + * first child (one for WSDL and one for RDM). + * The result metadata descriptors are the used to determine : + * + *
What are names of WS-Resouce properties + *
Their modifiability (read-only or read-write) + *
Their type + * + * So a SetResourcePropertyRequest can be sent in order to change the WS-Resource state. + * The example is looking for a property that has one of the following datatype : + * + *
    + *
  • String
  • + *
  • Long
  • + *
  • Integer
  • + *
  • Short
  • + *
  • Double
  • + *
  • Float
  • + *
+ * + * After the update / insert request has been sent, a GetResourcePropertiesRequest is made + * again in order to see if the state has changed correctly. + * + * @param host the host where QMan is running. + * @param port the port where QMan is running. + * @throws Exception when the example fails (not at application level). + */ + void executeExample(String host, int port) throws Exception + { + // 1) Creates an endpoint reference of the adapter service... + EndpointReference adapterEndpointReference = getAdapterEndpointReference(host, port); + + // 2) Creates the Adapter service client... + ServiceGroupClient adapterClient = new ServiceGroupClient(adapterEndpointReference); + adapterClient.setTrace(false); + + // 3) Retrieves the all registered members (QMan WS-Resources) + WsResourceClient [] resources = adapterClient.getMembers(); + + // Sanity check : we cannot proceed if there are no WS-Resources. + if (resources.length == 0) + { + System.out.println("----------------------------WARNING---------------------------"); + System.out.println("Cannot proceed with the example... it seems"); + System.out.println("that there are no managed WS-Resources on QMan."); + System.out.println("Please check QMan in order to see that it is really"); + System.out.println("connected with a broker."); + System.out.println("-------------------------------------------------------------------"); + System.exit(0); + } + + // 4) Creates a proxy handler for service invocation. + ProxyHandler metadataProxyHandler = createProxyHandler(); + + // 5) ..and invokes the GetMetadata on the first member. + WsResourceClient wsResourceClient = resources[0]; + wsResourceClient.setTrace(true); + + // Resource Metadata Descriptor + String dialect = "http://docs.oasis-open.org/wsrf/rmd-1"; + Object [] inputParameters = {dialect}; + + // RDM is the first element of the returned array. + // The first element is a wsx:Metadata containing all resource properties. + Element [] metadata = (Element[]) wsResourceClient.invoke(metadataProxyHandler, inputParameters); + Element resourceMetadataDescriptor = metadata[0]; + + // 6) Now we need WSDL in order to catch datatypes + dialect = "http://schemas.xmlsoap.org/wsdl/"; + inputParameters = new Object[]{dialect}; + metadata = (Element[]) wsResourceClient.invoke(metadataProxyHandler, inputParameters); + Element wsdl = metadata[0]; + + //7) Defines sample values used for update property. + Map sampleValues = new HashMap(); + sampleValues.put("xsd:string","This is a string."); + sampleValues.put("xsd:integer",new Integer(12345)); + sampleValues.put("xsd:int",new Integer(54321)); + sampleValues.put("xsd:long",new Integer(12345)); + sampleValues.put("xsd:double",new Double(12345.6d)); + sampleValues.put("xsd:float",new Float(123.4f)); + sampleValues.put("xsd:short",new Short((short)12)); + + // 8) using XPath navigates xml in order to get the list of all properties. + Element [] properties = XmlUtils.findInSubTree( + resourceMetadataDescriptor, + new QName("http://docs.oasis-open.org/wsrf/rmd-1","Property","wsrmd")); + + Element [] wsdlElements = XmlUtils.findInSubTree( + wsdl, + new QName("http://www.w3.org/2001/XMLSchema","element","xsd")); + + // Did we find at least one writable property? + boolean atLeastOnePropertyHasBeenFound = false; + + for (Element property : properties) + { + // Sanity check : if the property is read-only then proceed with next + // property. + if (!"read-write".equals(property.getAttribute("modifiability"))) + { + continue; + } + + String attributeName = property.getAttribute("name"); // = qman: + + // For this example we are only interested on qman namespace related properties... + if (attributeName.startsWith("qman")) + { + String attributeNameWithoutPrefix = attributeName.replaceFirst("qman:", ""); // = + + for (Element wsdlElement : wsdlElements) + { + String name = wsdlElement.getAttribute("name"); + String type = wsdlElement.getAttribute("type"); + if ((name != null) && (attributeNameWithoutPrefix.equals(name)) && (type != null)) + { + Object newValue = sampleValues.get(type); + if (newValue != null) + { + atLeastOnePropertyHasBeenFound = true; + + inputParameters = new Object[] {newValue}; + + // 9) Makes a GetResourcePropertiesRequest in order to get the current value. + QName propertyQName = new QName( + "http://amqp.apache.org/qpid/management/qman", + name, + "qman"); + + // The returned value is really an array because property shoudl be a multi-value property. + // So in order to get its value we need to extract the first value. + Object currentValue = wsResourceClient.getPropertyAsObject(propertyQName,newValue.getClass()); + + // 10a) If the property is not set (value is null) then an "Insert" request must be sent. + if (currentValue == null || Array.getLength(currentValue) == 0) + { + wsResourceClient.insertResourceProperty(propertyQName,inputParameters); + } + // 10b) If the property is not null then an "Update" request must be sent. + else + { + wsResourceClient.updateResourceProperty(propertyQName,inputParameters); + } + + // 11) Let's query again the resource using GetResourceProperties in order to ensure the + // previous property has been properly updated. + currentValue = wsResourceClient.getPropertyAsObject(propertyQName,newValue.getClass()); + + String resultMessage = (newValue.equals(Array.get(currentValue, 0))) + ? "Resource has been correctly updated." + : "Something was wrong : resource seems not to be properly updated."; + + System.out.println("----------------------------------------------------------------------------------"); + System.out.println(resultMessage); + System.out.println("----------------------------------------------------------------------------------"); + + // Let's stop...one property is enough for this example :) + break; + } + } + } + if (!atLeastOnePropertyHasBeenFound) + { + System.out.println("----------------------------------------------------------------------------------"); + System.out.println("WARNING : This example wasn't able to run because no writable "); + System.out.println("property has been found on the target WS-Resource."); + System.out.println("----------------------------------------------------------------------------------"); + } + } + } + } + + /** + * Prints out a description of this example. + */ + void printOutExampleDescription() + { + System.out.println(" "+getClass().getSimpleName()+" "); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("This example shows how to change the state of a WS-Resource."); + System.out.println("That means a SetResourcePropertyRequest is sent to that"); + System.out.println("WS-Resource."); + System.out.println("First of all a request is send to WS-DM in order to get all"); + System.out.println("registered WS-Resources."); + System.out.println("If the returned list is not empty then two GetMetadataRequests"); + System.out.println("(one for WSDL and one for RDM) are sent to the first child."); + System.out.println("The result metadata descriptors are used for determine :"); + System.out.println(); + System.out.println("1) WS-Resource property names;"); + System.out.println("2) Modifiability (read-only, read-write"); + System.out.println("3) Datatype;"); + System.out.println("-------------------------------------------------------------------"); + System.out.println(); + System.out.println("So a SetResourcePropertyRequest can be sent in order"); + System.out.println("to change the WS-Resource state."); + System.out.println("The example is looking for a property that has one of the"); + System.out.println("following datatype :"); + System.out.println(); + System.out.println("1) String (xsd:string)"); + System.out.println("2) Long (xsd:long)"); + System.out.println("3) Integer (xsd:integer or xsd:int)"); + System.out.println("4) Double (xsd:double)"); + System.out.println("5) Float (xsd:float)"); + System.out.println("6) Short (xsd:short)"); + System.out.println(); + System.out.println("After the update / insert request has been sent, a "); + System.out.println("GetResourcePropertiesRequest is made again"); + System.out.println("in order to see if the state has changed correctly."); + System.out.println(); + } + + /** + * A proxy handler is a module needed in order to make a capability + * service invocation. + * It contains logic to serialize and deserialize request, response, input and + * output parameters during a web service invocation. + * + * @return a proxy handler. + */ + private ProxyHandler createProxyHandler() + { + ProxyHandler handler = new ReflectionProxyHandler(); + handler.setAction("http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"); + handler.setRequestName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "GetMetadata", PREFIX)); + handler.setRequestParameterNames(new QName[]{new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Dialect", PREFIX)}); + handler.setResponseName(new QName("http://schemas.xmlsoap.org/ws/2004/09/mex", "Metadata", PREFIX)); + handler.setReturnType(Element[].class); + return handler; + } + + public static void main(String[] arguments) + { + new SetResourcePropertyExample().execute(arguments); + } +} \ No newline at end of file -- cgit v1.2.1