La prise en charge du contrôle Web Services Distributed Management (WSDM) fourni dans la Version 6.1 du Feature Pack for Web Services utilise un logiciel de gestion externe. Il est cependant plus utile de générer un moniteur
WebSphere
Application Server personnalisé pour WSDM. Utilisez cette tâche pour créer un moniteur WSDM basé sur l'interface Java pour le modèle de programmation XML Web Services (JAX-WS).
Pourquoi et quand exécuter cette tâche
Procédez comme suit pour créer un moniteur WSDM :
- Récupérez les URL relatives. Le tableau suivant contient une liste des URL que vous pouvez utiliser pour récupérer les fichiers WSDL (Web Services Description Language) pour chaque ressource prise en charge du produit.
Tableau 1. URL relatives aux fichiers WSDL de WSDM. Utilisez cette liste d'URL pour récupérer les fichiers WSDL (Web Services Description Language) pour chaque ressource prise en charge du produit. Ressource |
URL |
Groupe de services |
/websphere-management/services/service-group?wsdl |
Application |
/websphere-management/services/application?wsdl |
Serveur d'applications |
/websphere-management/services/applicationserver?wsdl |
Source de données |
/websphere-management/services/datasource?wsdl |
Beans EJB |
/websphere-management/services/ejb?wsdl |
machine virtuelle Java (JVM) |
/websphere-management/services/jvm?wsdl |
Servlet |
/websphere-management/services/servlet?wsdl |
Cluster WebSphere |
/websphere-management/services/webspherecluster?wsdl |
Domaine WebSphere |
/websphere-management/services/webspheredomain?wsdl |
Service Web |
/websphere-management/services/webservices?wsdl |
- Créez un schéma directeur des fichiers de l'interface de noeud final de service (SEI) pour le client de services Web. Après avoir récupéré les URL relatives, créez un schéma directeur pour les fichiers du SEI en exécutant les outils WSDL à Java contre les fichiers WSDL de WSDM. Vous pouvez utiliser le Rational Application Developer d'IBM ou l'utilitaire de commandes wsimport à cette fin. Exécutez l'utilitaire wsimport contre le fichier WSDL récupéré.
Important : Au minimum, les fichiers WSDL de la ressource du groupe de services et de la ressource que vous voulez doivent être compilés.
Lorsque vous avez terminé cette étape, vous avez créé le schéma directeur utilisé pour communiquer avec le fournisseur de services, qui se trouve dans le noeud final de service WSDM.
- Inscrivez le schéma pour le client JAX-WS WSDM. Examinez l'exemple de code client JAX-WS WSDM suivant avant d'écrire le code client.
L'exemple de code client démontre une implémentation terminée d'un client adapté aux statistiques de sondage pour une ressource. Il est utilisé pour déléguer le paramétrage des références de ressources WS-Addressing et le traitement des requêtes et réponses.
Exemple de client WSDM JAX-WS
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import org.oasis_open.docs.wsrf.rp_2.GetResourcePropertyResponse;
import org.oasis_open.docs.wsrf.sg_2.EntryType;
import org.oasis_open.docs.wsrf.sgw_2.ServiceGroupPortType;
import org.oasis_open.docs.wsrf.sgw_2.ServiceGroupService;
import org.w3c.dom.Element;
import com.ibm.wsspi.wsaddressing.AttributedURI;
import com.ibm.wsspi.wsaddressing.EndpointReference;
import com.ibm.wsspi.wsaddressing.EndpointReferenceManager;
import com.ibm.wsspi.wsaddressing.WSAConstants;
import com.ibm.wsspi.wsaddressing.WSAddressingFactory;
import com.ibm.xmlns.prod.websphere.management.servlet.ServletPortType;
import com.ibm.xmlns.prod.websphere.management.servlet.ServletService;
public class WsdmJaxWsClient {
static QName WAS_MBEAN_ID = new QName("http://ibm.com/2006/v1.3", "WAS_Resource_MbeanIdentifier");
static QName WAS_RESOURCE_ID = new QName("http://ibm.com/2006/v1.3", "WAS_Resource_MRID");
static QName WAS_RESOURCE_TYPE = new QName("http://ibm.com/2006/v1.3", "WAS_Resource_Type");
private String ServerAndHost = null;
public WsdmJaxWsClient(String serverAndHost) {
this.ServerAndHost = serverAndHost;
}
/**
* Obtenez une liste des ressources disponibles dans l'application WSDM
*/
public List<EntryType> getResources() throws Exception {
// Créez un service et obtenez une référence de service
ServiceGroupService sgs = new ServiceGroupService();
ServiceGroupPortType sgp = sgs.getServiceGroupPort();
// Créez wsa:Action
URI actionUri = new URI(
"http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest");
AttributedURI wsaAction = WSAddressingFactory
.createAttributedURI(actionUri);
// Créez wsa:To et renseigner les paramètres des références
String sgServicePortURI = "http://" + ServerAndHost
+ "/websphere-management/services/service-group";
QName resourceId = new QName("http://ws.apache.org/muse/addressing",
"ResourceId", "muse-wsa");
EndpointReference wsaDestinationEpr = EndpointReferenceManager
.createEndpointReference(new URI(sgServicePortURI));
wsaDestinationEpr.setReferenceParameter(resourceId, "MuseResource-1");
// Remplissez requestContext
Map<String, Object> rc = ((BindingProvider) sgp).getRequestContext();
rc.put(WSAConstants.WSADDRESSING_ACTION, wsaAction);
rc.put(WSAConstants.WSADDRESSING_DESTINATION_EPR, wsaDestinationEpr);
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc
.put(
BindingProvider.SOAPACTION_URI_PROPERTY,
"http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest");
rc.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, sgServicePortURI);
// Récupérez une liste des ressources disponibles
QName entryQName = new QName("http://docs.oasis-open.org/wsrf/sg-2",
"Entry");
GetResourcePropertyResponse grpr = sgp.getResourceProperty(entryQName);
// L'élément list<object> renvoyé doit être converti à un type plus significatif
List<Object> inputList = grpr.getAny();
List<EntryType> outputList = new ArrayList<EntryType>(inputList.size());
// Effectuez la conversion élément par élément
for (Object obj : inputList) {
JAXBElement jbe = (JAXBElement) obj;
EntryType entry = (EntryType) jbe.getValue();
outputList.add(entry);
}
return outputList;
}
/**
* Lire une propriété ou une entrée spécifiée
*/
public Object getResourceProperty(EntryType entry, QName property)
throws Exception {
// Créez un service et obtenez une référence de service
ServletService rs = new ServletService();
ServletPortType rp = rs.getServletPort();
// Créez wsa:Action
URI actionUri = new URI(
"http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest");
AttributedURI wsaAction = WSAddressingFactory
.createAttributedURI(actionUri);
// Créez wsa:To et renseignez les paramètres de ressources
String servicePortURI = getResourceAddress(entry);
// QName resourceId = new QName("http://ws.apache.org/muse/addressing",
// "ResourceId", "muse-wsa");
EndpointReference wsaDestinationEpr = EndpointReferenceManager
.createEndpointReference(new URI(servicePortURI));
wsaDestinationEpr.setReferenceParameter(WAS_RESOURCE_ID,
findListMember(entry, WAS_RESOURCE_ID));
wsaDestinationEpr.setReferenceParameter(WAS_MBEAN_ID, findListMember(
entry, WAS_MBEAN_ID));
wsaDestinationEpr.setReferenceParameter(WAS_RESOURCE_TYPE,
findListMember(entry, WAS_RESOURCE_TYPE));
// Remplissez requestContext
Map<String, Object> rc = ((BindingProvider) rp).getRequestContext();
rc.put(WSAConstants.WSADDRESSING_ACTION, wsaAction);
rc.put(WSAConstants.WSADDRESSING_DESTINATION_EPR, wsaDestinationEpr);
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc
.put(
BindingProvider.SOAPACTION_URI_PROPERTY,
"http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest");
rc.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, servicePortURI);
// Récupérez une liste des ressources disponibles
GetResourcePropertyResponse response = null;
response = rp.getResourceProperty(property);
// Retour de propriété
if (response != null) {
return ((JAXBElement) response.getAny().get(0)).getValue();
} else {
return null;
}
}
public String getResourceMBeanID(EntryType entry) {
return findListMember(entry, WAS_MBEAN_ID);
}
public String getResourceMRID(EntryType entry) {
return findListMember(entry, WAS_RESOURCE_ID);
}
public String getResourceType(EntryType entry) {
return findListMember(entry, WAS_RESOURCE_TYPE);
}
/**
* Extraire l'adresse des ERP
*/
public String getResourceAddress(EntryType entry) {
if (entry == null)
return null;
else
return entry.getMemberServiceEPR().getAddress().getValue();
}
/**
* Les EPR ne peuvent pas être consultés selon leur QName. Cette méthode effectue une recherche linéaire
* de l'EPR pour trouver un paramètre de référence particulier
*/
private String findListMember(EntryType entry, QName name) {
if (name == null || entry == null) return null;
List<Object> res = entry.getMemberServiceEPR().getReferenceParameters()
.getAny();
for (Object ob : res) {
Element e = (Element) ob;
if (name.getLocalPart().equals(e.getNodeName()))
return e.getTextContent();
}
return null;
}
}
- Créez le moniteur WSDM. L'exemple suivant est utilisé pour interroger un servlet sur le nombre de requêtes auxquelles le servlet répond.
Moniteur WSDM
// Instancier le client et lui apprendre à interroger
// le serveur au niveau de l'hôte local :9080
WsdmJaxWsClient wjc = nouveau WsdmJaxWsClient(“localhost:9080”);
// Obtenir une liste de toutes les ressources disponibles
List<EntryType> entries = wjc.getResources();
// Itérer parmi les ressources disponibles jusqu'à trouver
// une ressource de servlet
Servlet EntryType = null;
for (EntryType entry: entries){
if ("servlet".equals(wjc.getResourceType(entry))){
servlet = entry;
System.out.println("URL " + wjc.getResourceAddress(entry));
System.out.println("Type " + wjc.getResourceType(entry));
System.out.println("MbeanID" + wjc.getResourceMBeanID(entry));
System.out.println("ResourceID " + wjc.getResourceMRID(entry));
break;
}
}
// Demander des statistiques PMI de requêtes simultanées à ce servlet
Objet servletConcurrentRequests =
wjc.getResourceProperty(servlet, J2EEConstants.CONCURRENT_REQUESTS_QNAME);
System.out.println(servletConcurrentRequests);
- Obtenez une liste des ressources disponibles. L'exemple de client JAX-WS WSDM indiqué dans l'exemple de code 1 du schéma indique une liste de ressources disponibles.
La liste est filtrée pour obtenir certaines ressources et certaines statistiques à partir des objets de ces ressources. Dans cette étape, le client est lancé pour un serveur d'applications installé sur une machine locale et révise des requêtes HTTP sur le port 9080.
Initialisation du client WSDM
// Instancier le client et lui apprendre à interroger
// le serveur au niveau de l'hôte local :9080
WsdmJaxWsClient wjc = nouveau WsdmJaxWsClient(“localhost:9080”);
// Obtenir une liste de toutes les ressources disponibles
List<EntryType> entries = wjc.getResources();
- Filtrez les ressources disponibles. La liste des ressources retournées par l'appel getResources est longue. Cet appel permet de renvoyer une liste de toutes les ressources actuellement disponibles, pas forcément le type de ressource particulier auquel vous vous intéressez peut-être.
Filtrage des ressources
// Itérez parmi les ressources disponibles jusqu'à trouver une ressource de servlet
Servlet EntryType = null;
for (EntryType entry: entries){
if ("servlet".equals(wjc.getResourceType(entry))){
servlet = entry;
System.out.println("URL " + wjc.getResourceAddress(entry));
System.out.println("Type " + wjc.getResourceType(entry));
System.out.println("MbeanID" + wjc.getResourceMBeanID(entry));
System.out.println("ResourceID " + wjc.getResourceMRID(entry));
break;
}
}
Vous voudrez peut-être étendre cet exemple pour rechercher une ressource particulière au lieu de trouver le premier servlet disponible. Pour mener cette opération à bien, vous devez filtrer à nouveau selon getResourceMBeanID. La chaîne représentant la ressource est similaire à l'exemple de code suivant :
Exemple de chaîne d'identificateur MBean de ressource
WebSphere:WebModule=WSDMDemo.war,name=myServlet,process=server1,Application=wsdm-demo,platform=dynamicproxy,
J2EEApplication=wsdmdDemo,node=demoNode01,J2EEName=wsdm-demo#WSDMDemo.war#mySelvlet,j2eeType=Servlet,
J2EEServer=server1,Server=server1,version=6.1.0.7,type=Servlet,mbeanIdentifier=
wsdm-demo#WSDMDemo.war#myServlet,cell=demoCell01,spec=1.0
- Interrogez les ressources pour les statistiques. Enfin, vous pouvez désormais demander la propriété de la ressource. Une liste des URL disponibles pour une ressource donnée est accessible dans le fichier WSDL du tableau 1. L'exemple suivant est une liste des propriétés d'un servlet :
Propriétés disponibles pour une ressource de servlet
<xsd:element name="ServletResourceProperties">
xsd:complexType>
xsd:sequence>
!-- WSDM MUWS Partie 1 - Identity -->
<xsd:element ref="muws1:ResourceId"></xsd:element>
!-- WSDM MUWS Partie 1 - ManageabilityCharacteristics -->
<xsd:element ref="muws1:ManageabilityCapability" minOccurs="0" maxOccurs="unbounded"></xsd:element>
!-- WSDM MUWS Partie 2 - Description -->
<xsd:element ref="muws2:Caption" minOccurs="0" maxOccurs="unbounded"></xsd:element>
<xsd:element ref="muws2:Description" minOccurs="0" maxOccurs="unbounded"></xsd:element>
<xsd:element ref="muws2:Version" minOccurs="0"></xsd:element>
!-- WSDM MUWS Partie 2 - Metrics -->
<xsd:element ref="muws2:CurrentTime"></xsd:element>
!-- J2EE Servlet -->
<xsd:element ref="servlet:ConcurrentRequests"></xsd:element>
<xsd:element ref="servlet:TotalRequests"></xsd:element>
<xsd:element ref="servlet:NumberOfErrors"></xsd:element>
<xsd:element ref="servlet:ResponseTime"></xsd:element>
!-- J2EE ManagedObject -->
<xsd:element ref="j2ee:ObjectName"></xsd:element>
<xsd:element ref="j2ee:StateManageable"></xsd:element>
<xsd:element ref="j2ee:EventProvider"></xsd:element>
<xsd:element ref="j2ee:StatisticsProvider"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
- Obtenez des statistiques. Vous pouvez utiliser l'exemple de code suivant pour interroger la propriété des requêtes simultanées. Puis vous pouvez résoudre la propriété pour un QName et faire passer la propriété au client.
Obtention de statistiques
// Demander des statistiques PMI de requêtes simultanées à ce servlet
Objet servletConcurrentRequests =
wjc.getResourceProperty(servlet, nouveau QName(“http://www.ibm.com/xmlns/prod/websphere/management/j2ee/servlet”, “ConcurrentRequests”));
System.out.println(servletConcurrentRequests);
Résultats
Vous avez créé un moniteur WSDM personnalisé que vous pouvez utiliser pour gérer et contrôler les ressources.
Utilisez les exemples de codes pour vous aider à créer votre moniteur personnalisé, notamment l'exemple de code de conversation SOAP.
En plus de ces exemples de codes, il y a un exemple de code intégré dans le produit que vous pouvez utiliser pour récupérer les statistiques d'une ressource de servlet. Pour exécuter cet exemple, exécutez java –classpath wsdm-demo.jar;<;rép_install_client_léger_jax-ws>/com.ibm.jaxws.thinclient_8.5.0.jar samples.wsdm.servlet.WsdmDemo.
Exemple de conversation SOAP
L'exemple de code suivant démontre comment demander toutes les ressources disponibles.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://test.ibm.com:8080/websphere-management/services/service-group</wsa:To>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">
http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest</wsa:Action>
<wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:2f1abf03-ef3e-0837-b8e6-d34dc8e352e2</wsa:MessageID>
<wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Address>
http://www.w3.org/2005/08/addressing/role/anonymous</wsa:Address></wsa:From>
<muse-wsa:ResourceId xmlns:muse-wsa="http://ws.apache.org/muse/addressing" xmlns:wsa="http://www.w3.org/2005/08/addressing" wsa:IsReferenceParameter=
"true">MuseResource-1</muse-wsa:ResourceId>
</soap:Header>
<soap:Body>
<wsrf-rp:GetResourceProperty xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2" xmlns:wsrf-sg=
"http://docs.oasis-open.org/wsrf/sg-2">wsrf-sg:Entry</wsrf-rp:GetResourceProperty>
</soap:Body>
</soap:Envelope>
Cet exemple est une réponse qui a deux ressources disponibles, représentées sous forme d'éléments wsrf-sg:Entry XML.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:soapenc="http:www.w3.org/2003/05/soap-encoding"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<wsa:To>http://www.w3.org/2005/08/addressing/role/anonymous</wsa:To>
<wsa:Action>http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse</wsa:Action>
<wsa:MessageID>uuid:4eda30ea-c8ca-2998-2c9f-e2519175a1aa</wsa:MessageID>
<wsa:RelatesTo RelationshipType="wsa:Reply">uuid:2f1abf03-ef3e-0837-b8e6-d34dc8e352e2</wsa:RelatesTo>
<wsa:From>
<wsa:Address>http://test.ibm.com:8080/websphere-management/services/service-group</wsa:Address>
<wsa:ReferenceParameters><muse-wsa:ResourceId xmlns:muse-wsa="http://ws.apache.org/muse/addressing" IsReferenceParameter="true">
MuseResource-1</muse-wsa:ResourceId></was:From>
<was:RelatesTo>uuid:2f1abf03-ef3e-0837-b8e6-d34dc8e352e2</was:RelatesTo>
</env:Header>
<env:Body>
<wsrf-rp:GetResourcePropertyResponse xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
<wsrf-rp:Entry xmlns:wsrf-sg="http://docs.oasis-open.org/wsrf/sg-2"
<wsrf-sg:ServiceGroupEntryEPR
<wsa:Address> "http://test.ibm.com:8080/websphere-management/services/service-group-entry</wsa:Address>
<wsa:ReferenceParameters><muse-wsa:ResourceId xmlns:muse-wsa="http://ws.apache.org/muse/addressing">MuseResource-103</muse-wsa:ResourceId>
</wsa:ReferenceParameters>
</wsrf-sg:ServiceGroupEntryEPR>
<wsrf-sg:MemberServiceEPR>
<wsa:Address>http://test.ibm.com:8080/websphere-management/services/ejb</wsa:Address>
<wsa:ReferenceParameters>
<was-wsdm:WAS_Resource_Type>
<was-wsdm:WAS_Resource_ManagedNodeID xmlns:was-wsdm="http://ibm.com/2006/v1.3"
<was-wsdm:WAS_Resource_Type xmlns:was-wsdm="http://ibm.com/2006/v1.3">ejb <was-wsdm:WAS_Resource_MbeanIdentifier
xmlns:was-wsdm="http://ibm.com/2006/v1.3">
WebSphere:name=EjbClient,process=server1,Application=jms-client,platform=dynamicproxy,J2EEApplication=jms-client,node=
Node01,J2EEName=jms-client#jms-ejb-client.jar#EjbClient,j2eeType=StatelessSessionBean,J2EEServer=server1,Server=server1,version=
7.0.0.0,type=StatelessSessionBean,mbeanIdentifier=jms-client#jms-ejb-client.jar#EjbClient,EJBModule=jms-ejb-client.jar,cell=
Cell01,spec=1.0</was-wsdm:WAS_Resource_MbeanIdentifier>
<was-wsdm:WAS_Resource_MRID xmlns:was-wsdm="http://ibm.com/2006/v1.3">
ejb:WebSphere:name=EjbClient,process=server1,Application=jms-client,platform=dynamicproxy,J2EEApplication=jms-client,node=
Node01,J2EEName=jms-client#jms-ejb-client.jar#EjbClient,j2eeType=StatelessSessionBean,J2EEServer=server1,Server=server1,version=
7.0.0.0,type=StatelessSessionBean,mbeanIdentifier=jms-client#jms-ejb-client.jar#EjbClient,EJBModule=jms-ejb-client.jar,cell=
Cell01,spec=1.0</was-wsdm:WAS_Resource_MRID>
</wsa:ReferenceParameters>
</wsrf-sg:MemberServiceEPR>
<wsrf-sg:Content/>
</wsrf-sg:Entry>
<wsrf-sg:Entry xmlns:wsrf-sg="http://docs.oasis-open.org/wsrf/sg-2">
<wsrf-sg:ServiceGroupEntryEPR><wsa:Address>http://test.ibm.com:8080/websphere-management/services/service-group-entry</wsa:Address>
<wsa:ReferenceParameters><muse-wsa:ResourceId xmlns:mus-wsa="http://ws.apache.org/muse/addressing"<MuseResource-97</muse-wsa:
ResourceId></wsa:ReferenceParameters>
</wsrf-sg:ServiceGroupEntryEPR>
<wsrf-sg:MemberServiceEPR>
<wsa:Address>http://test.ibm.com:8080/websphere-management/services/datasource</wsa:Address>
<wsa:ReferenceParameters>
<was-wsdm:WAS_Resource_ManagedNodeID xmlns:was-wsdm="http://ibm.com/2006/v1.3"/>
<was-wsdm:WAS_Resource_Type xmlns:was-wsdm="http://ibm.com/2006/v1.3">datasource</was-wsdm:WAS_Resource_Type>
<was-wsdm:WAS_Resource_MbeanIdentifier xmlns:was-wsdm="http://ibm.com/2006/v1.3">WebSphere:name=Default Datasource,process=
server1,platform=dynamicproxy,node=Node01,JDBCProvider=Derby JDBC Provider,diagnosticProvider=true,j2eeType=JDBCDataSource,J2EEServer=
server1,Server=server1,version=7.0.0.0,type=DataSource,mbeanIdentifier=cells/Cell01/nodes/Node01/servers/server1/resources.xml#DataSource_1,
JDBCResource=Derby JDBC Provider,cell=Cell01,spec=1.0</was-wsdm:WAS_Resource_MbeanIdentifier>
<was-wsdm:WAS_Resource_MRID xmlns:was-wsdm="http://ibm.com/2006/v1.3">datasource:WebSphere:name=Default Datasource,process=
server1,platform=dynamicproxy,node=Node01,JDBCProvider=Derby JDBC Provider,diagnosticProvider=true,j2eeType=JDBCDataSource,J2EEServer=
server1,Server=server1,version=7.0.0.0,type=DataSource,mbeanIdentifier=cells/Cell01/nodes/Node01/servers/server1/resources.xml#DataSource_1,
JDBCResource=Derby JDBC Provider,cell=Cell01,spec=1.0</was-wsdm:WAS_Resource_MRID>
</wsa:ReferenceParameters>
</wsrf-sg:MemberServiceEPR>
<wsrf-sg:Content/>
</wsrf-sg:Entry>
</wsrf-rp:GetResourcePropertyResponse>
</env:Body>
</env:Envelope>
Cet exemple montre comment demander une mesure de requêtes simultanées à partir d'une ressource de servlet. La ressource en question est indiquée sous forme de paramètres de référence dans l'en-tête SOAP. Ces paramètres apparaissent en caractères gras.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://test.ibm.com:8080/websphere-management/services/servlet</wsa:To>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/
GetResourcePropertyRequest</wsa:Action>
<wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:2737b4e1-31af-5b0d-cb6e-17e2c812ffbb</wsa:MessageID>
<wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Address>http://www.w3.org/2005/08/addressing/role/anonymous</wsa:Address>
</wsa:From>
<wsa-wsdm:WAS_Resource_ManagedNodeID xmlns:wsa="http://www.w3.org/2005/08/addressing" wsa:IsReferenceParameter=
"true" xmlns:was-wsdm="http://ibm.com/2006/v1.3">
<was-wsdm:WAS_Resource_Type xmlns:wsa="http://www.w3.org/2005/08/addressing" wsa:IsReferenceParameter="true" xmlns:was-wsdm=
"http://ibm.com/2006/v1.3">
servlet</was-wsdm:WAS_Resource_Type>
<was-wsdm:WAS_Resource_MbeanIdentifier xmlns:wsa="http://www.w3.org/2005/08/addressing" wsa:IsReferenceParameter="true"
xmlns:was-wsdm="http://ibm.com/2006/v1.3">WebSphere:WebModule=WSDMUtil.war,name=ejb,process=server1,Application=
wsdm-util,platform=dynamicproxy,J2EEApplication=wsdm-util,node=Node01,J2EEName=wsdm-util#WSDMUtil.war#ejb,j2eeType=
Servlet,J2EEServer=server1,Server=server1,version=7.0.0.0,type=Servlet,mbeanIdentifier=wsdm-util#WSDMUtil.war#ejb,cell=
Cell01,spec=1.0</was-wsdm:WAS_Resource_MbeanIdentifier>
<was-wsdm:WAS_Resource_MRID xmlns:wsa="http://www.w3.org/2005/08/addressing" wsa:IsReferenceParameter="true" xmlns:was-wsdm=
"http://ibm.com/2006/v1.3">servlet:WebSphere:WebModule=WSDMUtil.war,name=ejb,process=server1,Application=wsdm-util,platform=
dynamicproxy,J2EEApplication=wsdm-util,node=Node01,J2EEName=wsdm-util#WSDMUtil.war#ejb,j2eeType=Servlet,J2EEServer=server1,Server=
server1,version=7.0.0.0,type=Servlet,mbeanIdentifier=wsdm-util#WSDMUtil.war#ejb,cell=Cell01,spec=1.0</was-wsdm:WAS_Resource_MRID>
<soap:Body>
<wsrf-rp:GetResourceProperty xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2" xmlns:servlet=
"http://www.ibm.com/xmlns/prod/websphere/management/j2ee/servlet">servlet:ConcurrentRequests</wsrf-rp:GetResourceProperty>
</soap:Body>
</soap:Envelope>
Cet exemple est la réponse du serveur. La ressource exacte est identifiée dans l'en-tête SOAP et la mesure est disponible dans le corps SOAP.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:xsd="http://www.w3.org/20001/XMLSchema-instance">
<env:Header>
<wsa:To>http://www.w3.org/2005/08/addressing/role/anonymous</wsa:To>
<wsa:Action>http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse</wsa:Action>
<wsa:MessageID>uuid:91400c29-8c50-9f62-7df2-1bb0212083f1</wsa:MessageID>
<wsa:RelatesTo RelationshipType="wsa:Reply">uuid:2737b4e1-31af-5b0d-cb6e-17e2c812ffbb</wsa:RelatesTo>
<wsa:From>
<wsa:Address>http://test.ibm.com:8080/websphere-management/services/servlet</wsa:Address>
<wsa:ReferenceParameters>
<was-wsdm:WAS_Resource_ManagedNodID xmlns:was-wsdm="http://ibm.com/2006/v1.3" IsReferenceParameter="true"
<was-wsdm:WAS_Resource_Type xmlns:was-wsdm="http://ibm.com/2006/v1.3" IsReferenceParameter="true">servlet</was-wsdm:WAS_Resource_Type>
<was-wsdm:WAS_Resource_MbeanIdentifier xmlns:was-wsdm="http://ibm.com/2006/v1.3" IsReferenceParameter="true">
WebSphere:WebModule=WSDMUtil.war,name=ejb,process=server1,Application=wsdm-util,platform=dynamicproxy,J2EEApplication=wsdm-util,node=
Node01,J2EEName=wsdm-util#WSDMUtil.war#ejb,j2eeType=Servlet,J2EEServer=server1,Server=server1,version=7.0.0.0,type=
Servlet,mbeanIdentifier=wsdm-util#WSDMUtil.war#ejb,cell=Cell01,spec=1.0</was-wsdm:WAS_Resource_MbeanIdentifier>
<was-wsdm:WAS_Resource_MRID xmlns:was-wsdm="http://ibm.com/2006/v1.3" IsReferenceParameter="true">servlet:WebSphere:WebModule=
WSDMUtil.war,name=ejb,process=server1,Application=wsdm-util,platform=dynamicproxy,J2EEApplication=wsdm-util,node=Node01,J2EEName=
wsdm-util#WSDMUtil.war#ejb,j2eeType=Servlet,J2EEServer=server1,Server=server1,version=7.0.0.0,type=Servlet,mbeanIdentifier=
wsdm-util#WSDMUtil.war#ejb,cell=Cell01,spec=1.0</was-wsdm:WAS_Resource_MRID>
</wsa:ReferenceParameters>
</wsa:From>
<wsa:RelatesTo>uuid:2737b4e1-31af-5b0d-cb6e-17e2c812ffbb</wsa:RelatesTo>
</env:Header>
<env:Body>
<wsrf-rp:GetResourcePropertyResponse xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
<servlet:ConcurrentRequests
xmlns:servlet="http://www.ibm.com/xmlns/prod/websphere/management/j2ee/servlet>11</servlet:ConcurrentRequests>
</wsrf-rp:GetResourcePropertyResponse>
</env:Body>
</env:Envelope>