Criando um Monitor para WebSphere Application Server para Recursos WSDM (descontinuado)

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).

Antes de Iniciar

Recurso Reprovado Recurso Reprovado: O Web Services Distributed Management (WSDM) é um recurso reprovado no produto. Este tópico da tarefa e os links relacionados para tópicos do WSDM não serão atualizados além da Versão 7.0. Em vez de usar WSDM, é possível administrar os seus aplicativos de serviços da Web com o console administrativo ou script.depfeat
boas práticas: IBM® WebSphere Application Server suporta o modelo de programação Java™ API for XML-Based Web Services (JAX-WS) e o modelo de programação Java API for XML-based RPC (JAX-RPC). O JAX-WS é o modelo de programação de serviços da Web da próxima geração, estendendo a base fornecida pelo modelo de programação JAX-RPC. Ao usar o modelo de programação JAX-WS estratégico, o desenvolvimento de serviços da Web e clientes é simplificado por meio do suporte de um modelo de anotações baseado em padrões. Embora o modelo de programação JAX-RPC e seus aplicativos ainda sejam suportados, aproveite o modelo de programação JAX-WS de fácil implementação para desenvolver novos aplicativos de serviços da web e clientes.

Sobre Esta Tarefa

Conclua as etapas a seguir para criar um monitor WSDM:

Procedimento

  1. 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
  2. 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.
  3. 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;
    	}
    }	 
  4. 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);	 
  5. 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();
  6. 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
  7. 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>
  8. 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>

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_wsdmresmonitor
Nome do arquivo: twbs_wsdmresmonitor.html