In questa sezione viene descritto come registrarsi alle statistiche PMI dell'utilità di partizione (WPF). Per ulteriori informazioni su come abilitare questa infrastruttura, fare riferimento alla sezione di gestione. Per includere reportTransactionComplete(…) nell'applicazione, fare riferimento alla sezione di programmazione PSSB (partitioned stateless session bean).
package com.ibm.websphere.wpf.jmx; import java.util.Properties; import java.util.Set; import javax.management.InstanceNotFoundException; import javax.management.MBeanException; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.ReflectionException; import com.ibm.websphere.management.AdminClient; import com.ibm.websphere.management.AdminClientFactory; import com.ibm.websphere.management.exception.ConnectorException; /** * Crea una voce resource.xml, nell'ambito di un nodo, per un'origine dati DB2 XA. * L'origine dati creata è per un uso CMP. * * I seguenti file sono necessari per eseguire la classpath * $WAS_HOME\lib\admin.jar; * $WAS_HOME\lib\wasjmx.jar; * $WAS_HOME\lib\wasx.jar */ public class PMIJMXSample { /** * Metodo principale. * arg[0] è il tipo di connessione, come SOAP. * arg[1] è l'host di connessione, come localhost. * arg[2] è la porta delle connessioni, come 8879 * arg[3] è il processo facoltativo. Il processo predefinito è Deployment Manager */ public static void main(String[] args) throws MalformedObjectNameException, ConnectorException, MBeanException, ReflectionException, InstanceNotFoundException { System.out.println("Sample starts"); // Inizializzare AdminClient. String connectorType = args[0]; String connectorHost = args[1]; String connectorPort = args[2]; String jmxServer = "Deployment Manager"; if (args.length >= 4) { jmxServer = args[3]; } Properties adminProps = new Properties(); adminProps.setProperty(AdminClient.CONNECTOR_TYPE, connectorType); adminProps.setProperty(AdminClient.CONNECTOR_HOST, connectorHost); adminProps.setProperty(AdminClient.CONNECTOR_PORT, connectorPort); AdminClient adminClient = AdminClientFactory.createAdminClient(adminProps); ObjectName queryName = new ObjectName("WebSphere:type=WPF,process=" + jmxServer + ",*"); ObjectName wpfJMX = null; Set s = adminClient.queryNames(queryName, null); if (!s.isEmpty()) { wpfJMX = (ObjectName) s.iterator().next(); } else { System.out.println("WPF JMX MBean was not found"); System.exit (0); } String subscribeWPFPMIName = "subscribeWPFPMI"; String[] subscribeSignatures = new String[] { "java.lang.String", "java.lang.String", "java.lang.Integer", "java.lang.Integer", "java.lang.Integer", "java.lang.Integer" }; Object[] subscribeParams = new Object[] { "WPFKeyBasedPartitionSample", "WPFKeyBasedPartition", new Integer(0), new Integer(1), new Integer(5), new Integer(60000)}; // richiamare il metodo subscribeWPFPMI Long id = (Long) adminClient.invoke(wpfJMX, subscribeWPFPMIName, subscribeParams, subscribeSignatures); System.out.println("Subscription ID is " + id); String unsubscribeWPFPMIName = "unsubscribeWPFPMI"; String[] unsubscribeSignatures = new String[] { "java.lang.Long" }; Object[] unsubscribeParams = new Object[] { id }; // richiamare il metodo unsubscribeWPFPMI adminClient.invoke(wpfJMX, unsubscribeWPFPMIName, unsubscribeParams, unsubscribeSignatures); } }
# Script Jacl che mostra come registrare e annullare la registrazione a PMI WPF # get WPF Mbean set wpf [lindex [$AdminControl queryNames "type=WPF,process=Deployment Manager,*"] 0]puts $wpf # registra la PMI WPF set id [$AdminControl invoke $wpf subscribeWPFPMI "WPFKeyBasedPartitionSample WPFKeyBasedPartition 0 1 5 60000"] puts $id # annulla la registrazione a PMI WPF $AdminControl invoke $wpf unsubscribeWPFPMI $id
# Script Jython che mostra come registrare e annullare la registrazione a PMI WPF # get WPF Mbean strObjectName=AdminControl.queryNames("type=WPF,process=Deployment Manager,*") objectName = AdminControl.makeObjectName(strObjectName) wpf = TypedProxy.makeProxy(AdminControl, objectName, "com.ibm.websphere.wpf.jmx.WPFJMX") # registra la PMI WPF id = wpf.subscribeWPFPMI("WPFKeyBasedPartitionSample", "WPFKeyBasedPartition", 0, 1, 5, 60000) print id # annulla la registrazione a PMI WPF wpf.unsubscribeWPFPMI(id)
Related concepts
Programmazione per l'utilità di partizione