O suporte de monitoramento do WSDM (Web Services Distributed Management)
fornecido no Feature Pack for Web Services Versão 6.1 utiliza um software de
gerenciamento externo. Porém, isso é mais útil para construir um monitor WebSphere Application Server customizado para WSDM. Utilize essa tarefa para criar um monitor WSDM com base
no modelo de programação JAX-WS (Java API for XML Web Services).
Sobre Esta Tarefa
Conclua as etapas a seguir para criar um monitor WSDM:
- Recupere as URLs relativas. A tabela a seguir contém uma lista de URLs que pode ser usada para recuperar arquivos Web Services Description Language (WSDL) para cada recurso suportado que esteja no produto.
Tabela 1. URLs Relativas para Arquivos WSDM WSDL. Utilize esta lista de URLs para recuperar os arquivos Web Services Description Language (WSDL) para cada recurso suportado que está no produto. Resource |
URL |
Grupo de serviço |
/websphere-management/services/service-group?wsdl |
Aplicativo |
/websphere-management/services/application?wsdl |
Servidor de Aplicativos |
/websphere-management/services/applicationserver?wsdl |
Origem de Dados |
/websphere-management/services/datasource?wsdl |
Enterprise JavaBeans |
/websphere-management/services/ejb?wsdl |
JVM (Java Virtual Machine) |
/websphere-management/services/jvm?wsdl |
servlet |
/websphere-management/services/servlet?wsdl |
Cluster do WebSphere |
/websphere-management/services/webspherecluster?wsdl |
Domínio do WebSphere |
/websphere-management/services/webspheredomain?wsdl |
serviço da Web |
/websphere-management/services/webservices?wsdl |
- Crie um código skeleton para os arquivos service endpoint interface
(SEI) para o cliente dos serviços da Web. Depois de recuperar as URLs relativas,
crie um código skeleton para os arquivos SEI executando o conjunto de ferramentas WSDL
para Java nos arquivos WSDM WSDL. É possível usar o
IBM Rational Application Developer ou o utilitário de comando wsimport
para esta tarefa. Execute o
utilitário wsimport no arquivo WSDL recuperado.
Importante: No mínimo, os
arquivos WSDL para o recurso de grupo de serviços e o recurso que você deseja devem ser
compilados.
Ao concluir esta etapa, você terá criado o código do cliente que é
utilizado para comunicar-se com o provedor de serviços, que é o terminal de serviço WSDM.
- Grave o código para o cliente JAX-WS WSDM. Reveja o seguinte
código de amostra do cliente JAX-WS WSDM antes de iniciar a gravação do código do
cliente.
O código do cliente de amostra demonstra uma implementação completa
de um cliente apropriada para estatísticas de sondagem para um recurso. Ele é usado
para delegar a configuração de referências de recursos WS-Addressing,
do processamento de pedido e de resposta.
Cliente JAX-WS do WSDM de Amostra
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;
}
/**
* Obtenha uma lista de recursos disponíveis do aplicativo WSDM
*/
public List<EntryType> getResources() throws Exception {
// Crie o serviço e obtenha a referência de recurso
ServiceGroupService sgs = new ServiceGroupService();
ServiceGroupPortType sgp = sgs.getServiceGroupPort();
// Crie wsa:Action
URI actionUri = new URI(
"http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest");
AttributedURI wsaAction = WSAddressingFactory
.createAttributedURI(actionUri);
// Crie wsa:To e preencha os parâmetros de referência
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");
// Populate 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);
// Recupere uma lista de recursos disponíveis
QName entryQName = new QName("http://docs.oasis-open.org/wsrf/sg-2",
"Entry");
GetResourcePropertyResponse grpr = sgp.getResourceProperty(entryQName);
// O list<object> retornado deve ser convertido em um tipo mais significativo
List<Object> inputList = grpr.getAny();
List<EntryType> outputList = new ArrayList<EntryType>(inputList.size());
// Conclua a conversão elemento por elemento
for (Object obj : inputList) {
JAXBElement jbe = (JAXBElement) obj;
EntryType entry = (EntryType) jbe.getValue();
outputList.add(entry);
}
return outputList;
}
/**
* Leia uma propriedade de entrada especificada
*/
public Object getResourceProperty(EntryType entry, QName property)
throws Exception {
// Crie o serviço e obtenha a referência de recurso
ServletService rs = new ServletService();
ServletPortType rp = rs.getServletPort();
// Crie wsa:Action
URI actionUri = new URI(
"http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest");
AttributedURI wsaAction = WSAddressingFactory
.createAttributedURI(actionUri);
// Crie wsa:To e preencha os parâmetros de recurso
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));
// Populate 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);
// Recupere uma lista de recursos disponíveis
GetResourcePropertyResponse response = null;
response = rp.getResourceProperty(property);
// Retorne a propriedade
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);
}
/**
* Extrair endereço ERPs
*/
public String getResourceAddress(EntryType entry) {
if (entry == null)
return null;
else
return entry.getMemberServiceEPR().getAddress().getValue();
}
/**
* EPRs não podem ser consultados por seus QName. Esse método faz uma procura linear
* do EPR para localizar um determinado parâmetro de referência
*/
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;
}
}
- Crie o monitor WSDM. O exemplo a seguir é usado
para sondagem de um servlet para obter o número de pedidos aos quais
o servlet está respondendo.
Monitor do WSDM
// Instanciar o cliente e instruí-lo a sondar
// o servidor em localhost:9080
WsdmJaxWsClient wjc = new WsdmJaxWsClient(“localhost:9080”);
// Obter uma lista de todos os recursos disponíveis
List<EntryType> entries = wjc.getResources();
// Iterar através dos recursos disponíveis até encontrar
// um recurso de servlet
EntryType servlet = 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;
}
}
// Solicitar estatísticas de PMI de Pedidos Simultâneos desse servlet
Object servletConcurrentRequests =
wjc.getResourceProperty(servlet, J2EEConstants.CONCURRENT_REQUESTS_QNAME);
System.out.println(servletConcurrentRequests);
- Obtenha uma lista dos recursos disponíveis. O cliente JAX-WS WSDM
de amostra fornecido no exemplo de código 1 mostra uma lista dos recursos disponíveis.
A lista é filtrada para obter alguns recursos e estatísticas desses objetos de recursos. Nesta
etapa, o cliente é inicializado para um servidor de aplicativos que está instalado em uma
máquina local e atendendo pedidos HTTP na porta 9080.
Inicializar o cliente do WSDM
// Instanciar o cliente e instruí-lo a sondar
// o servidor em localhost:9080
WsdmJaxWsClient wjc = new WsdmJaxWsClient(“localhost:9080”);
// Obter uma lista de todos os recursos disponíveis
List<EntryType> entries = wjc.getResources();
- Filtre os recursos disponíveis. A lista de recursos retornados
pela chamada getResources é extensa. Essa chamada retorna uma lista de todos os recursos
que estão disponíveis atualmente, não necessariamente o tipo de recurso específico no
qual você possa estar interessado.
Recursos do filtro
// Iterar através dos recursos disponíveis até encontrar um recurso de servlet
EntryType servlet = 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;
}
}
Convém expandir esse exemplo para localizar um recurso específico, em vez de
localizar o primeiro servlet disponível. Para concluir essa ação, é preciso filtrar ainda
mais com base em getResourceMBeanID. A cadeia que representa o recurso é semelhante ao
seguinte exemplo de código:
Sequência do identificador MBean do recurso de amostra
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
- Sonde os recursos para obter estatísticas. Finalmente, agora você
pode solicitar a propriedade de recurso. Uma lista de URLs disponíveis para um
determinado recurso pode ser obtida do arquivo WSDL na Tabela 1. O exemplo a seguir é uma
lista de propriedades para um servlet:
Propriedades disponíveis para um recurso de servlet
<xsd:element name="ServletResourceProperties">
xsd:complexType>
xsd:sequence>
!-- WSDM MUWS Part 1 - Identity -->
<xsd:element ref="muws1:ResourceId"></xsd:element>
!-- WSDM MUWS Part 1 - ManageabilityCharacteristics -->
<xsd:element ref="muws1:ManageabilityCapability" minOccurs="0" maxOccurs="unbounded"></xsd:element>
!-- WSDM MUWS Part 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 Part 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>
- Obtenha estatísticas. Você pode usar o seguinte exemplo de
código para sondar a propriedade de pedidos simultâneos. Em seguida, você poderá resolver
a propriedade para um QName e transmiti-la ao cliente.
Obter estatísticas
// Solicitar estatísticas de PMI de Pedidos Simultâneos desse servlet
Object servletConcurrentRequests =
wjc.getResourceProperty(servlet, new QName(“http://www.ibm.com/xmlns/prod/websphere/management/j2ee/servlet”, “ConcurrentRequests”));
System.out.println(servletConcurrentRequests);
Resultados
Você criou um monitor WSDM customizado que pode usar para gerenciar e
controlar recursos.
Utilize os exemplos de código para ajudar a criar o monitor
customizado, incluindo o exemplo de código de conversação SOAP.
Além desses
exemplos de código, há uma amostra de código integrado no produto que pode ser utilizada
para recuperar as estatísticas de um recurso de servlet. Para executar essa amostra, execute java -classpath
wsdm-demo.jar;<your_JAX-WS_thin_client_install_directory>/com.ibm.jaxws.thinclient_8.5.0.jar
samples.wsdm.servlet.WsdmDemo.
Exemplo de Conversa SOAP
O exemplo de código a seguir demonstra como solicitar todos os
recursos disponíveis.
<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>
Esse exemplo é uma resposta que tem
dois recursos disponíveis representados como elementos XML wsrf-sg:Entry.
<?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>
Esse exemplo mostra como solicitar métricas
concurrentRequests de um recurso de servlet. O recurso que interessa aqui é especificado
como parâmetros de referência no cabeçalho SOAP. Esses parâmetros aparecem em negrito.
<?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>
Esse exemplo é a
resposta do servidor. O recurso exato é identificado no cabeçalho SOAP e a métrica está
disponível no corpo 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>