package JMXTest; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import com.sun.caps.management.api.bpel.BPELManagementService; import com.sun.caps.management.api.bpel.BPELManagementService.SortColumn; import com.sun.caps.management.api.bpel.BPELManagementService.SortOrder; import com.sun.caps.management.impl.bpel.BPELManagementServiceImpl; import com.sun.em.common.GenericConstants; import com.sun.em.connectors.GlassFishRemoteServerConnector; import com.sun.esb.management.api.administration.AdministrationService; import com.sun.esb.management.api.configuration.ConfigurationService; import com.sun.esb.management.client.ManagementClient; import com.sun.esb.management.client.ManagementClientFactory; import com.sun.esb.management.common.ManagementRemoteException; /** * @author graj * */ public class TestCustomExtensionMBeans { public static final String ADMINISTRATION_KEY = "Administration"; public static final String CONFIGURATION_KEY = "Configuration"; public static final String STATISTICS_KEY = "Statistics"; private static String targetName = "cluster1"; /** DAS info **/ private static String hostName = "localhost"; //int port = 8687; private static int port = 8686; private static String userName = "admin"; private static String password = "adminadmin"; /** * */ public TestCustomExtensionMBeans() { // TODO Auto-generated constructor stub } /** * Invoke Custom MBean extension operations * @param configService * @param componentName * @param extensionName * @param targetName * @param targetInstanceName */ @SuppressWarnings("unchecked") public static void invokeExtensionMBeanOperations(ConfigurationService configService, String componentName, String extensionName, String targetName, String targetInstanceName) { Boolean result = Boolean.FALSE; Object[] params = null; String[] signatures = null; try { result = (Boolean)configService.invokeExtensionMBeanOperation(componentName, extensionName, "isMonitoringEnabled", params, signatures, targetName, targetInstanceName); } catch (ManagementRemoteException e) { // The various ways of error display System.out.println(e.getMessage()); } System.out.println("Monitoring is "+result.booleanValue()); try { result = (Boolean)configService.invokeExtensionMBeanOperation(componentName, extensionName, "isPersistenceEnabled", params, signatures, targetName, targetInstanceName); } catch (ManagementRemoteException e) { // The various ways of error display System.out.println(e.getMessage()); } System.out.println("Persistence is "+result.booleanValue()); if(result == true) { List listOfProcesses = new ArrayList(); params = new Object[1]; params[0] = null; signatures = new String[1]; signatures[0] = "java.lang.String"; try { listOfProcesses = (List) configService.invokeExtensionMBeanOperation(componentName, extensionName, "getBPELProcesses", params, signatures, targetName, targetInstanceName); for(String processId : listOfProcesses) { System.out.println(processId); } } catch (ManagementRemoteException e) { // The various ways of error display String[] causes = e.getCauseMessageTrace(); int index = 0; System.out.println("Received Exception - Cause Message Trace:"); for(String cause : causes) { System.out.println("Cause #"+(++index)+": "+cause); } } } } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { ManagementClient client = null; AdministrationService administrationService = null; try { client = ManagementClientFactory.getInstance(hostName, port, userName, password); } catch (ManagementRemoteException e) { // The various ways of error display e.printStackTrace(); } Map targetNameToInstancesMap = null; try { administrationService = client.getAdministrationService(); targetNameToInstancesMap = administrationService.listTargetNames(); if(targetNameToInstancesMap != null) { for(String key : targetNameToInstancesMap.keySet()) { String[] values = targetNameToInstancesMap.get(key); if(values == null) { System.out.println("Target "+key+" is not a cluster. "); System.out.println("Target "+key+" is "+(administrationService.isTargetUp(key)?"UP." : "DOWN.")); } else { System.out.println("Cluster Target "+key+" is "+(administrationService.isTargetUp(key)?"UP." : "DOWN.")); for(String value : values) { System.out.println(" - Cluster Target Instance: "+value); } } } } } catch (ManagementRemoteException e) { // The various ways of error display String[] causes = e.getCauseMessageTrace(); int index = 0; System.out.println("Received Exception - Cause Message Trace:"); for(String cause : causes) { System.out.println("Cause #"+(++index)+": "+cause); } e.printStackTrace(); } ConfigurationService configurationService = null; String componentName = "sun-bpel-engine"; String customControlKeyName = ADMINISTRATION_KEY; Map instanceToObjectNameMap = null; try { configurationService = client.getConfigurationService(); System.out.println("targetName :" + targetName); instanceToObjectNameMap = configurationService.getComponentExtensionMBeanObjectNames(componentName, customControlKeyName, targetName); if(instanceToObjectNameMap != null) { for(String key : instanceToObjectNameMap.keySet()) { ObjectName[] values = instanceToObjectNameMap.get(key); System.out.println("For Instance Name: "+key); for(ObjectName name : values) { System.out.println(" "+name.getCanonicalName()); } } } } catch (ManagementRemoteException e) { // The various ways of error display System.out.println(e.getMessage()); } boolean isUp = false; if(targetNameToInstancesMap != null) { for(String key : targetNameToInstancesMap.keySet()) { String[] values = targetNameToInstancesMap.get(key); if(values == null) { try { isUp = administrationService.isTargetUp(key); if(isUp == true) { System.out.println("Executing operations on Target "+key+":"); invokeExtensionMBeanOperations(configurationService, componentName, ADMINISTRATION_KEY, key, null); System.out.println("====================="); } } catch (ManagementRemoteException e) { e.printStackTrace(); } } else { try { isUp = administrationService.isTargetUp(key); if(isUp == true) { System.out.println("Cluster Target "+key+":"); System.out.println("---------------------"); for(String value : values) { System.out.println(" - Executing operations on Cluster Target Instance: "+value); invokeExtensionMBeanOperations(configurationService, componentName, ADMINISTRATION_KEY, key, value); System.out.println("====================="); } } } catch (ManagementRemoteException e) { e.printStackTrace(); } } } } SortColumn SORTCOLUMN = BPELManagementService.SortColumn.STARTTIME; SortOrder SORTORDER = BPELManagementService.SortOrder.DESC; MBeanServerConnection connection = getMbeanServerConnection ("localhost", 8686, "admin", "adminadmin"); BPELManagementService mbeanService = new BPELManagementServiceImpl(connection, true); BPELManagementService.BPInstanceQueryResult result = null; try { result = mbeanService.getBPELInstances(null, null/*BPELManagementService.BPStatus.RUNNING*/ , null, 1000, SORTCOLUMN, SORTORDER, targetName); } catch (com.sun.caps.management.common.ManagementRemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Get bpel instances : " + result.total); } public static MBeanServerConnection getMbeanServerConnection(String hostName, int portNumber, String userName, String password) throws Exception { MBeanServerConnection connection = null; try { GlassFishRemoteServerConnector remoteConnector = new GlassFishRemoteServerConnector(GenericConstants.SJSAS_SERVER_TYPE, "server1",hostName, portNumber+"", "8080", userName, password); connection = remoteConnector.getConnection(); // connection = RMIConnectionFactory.getInstance(hostName, portNumber, userName, password); return connection; } catch (Exception e) { throw e; } } } /* * Result of Execution on my setup is: */ /* Target instance1 is UP. Cluster Target CAS-cluster1 is UP. - Cluster Target Instance: CAS-cluster1-inst1 Target sync is UP. Target server is UP. For Instance Name: instance1 com.sun.jbi:ComponentName=sun-bpel-engine,ComponentType=Installed,ControlType=Custom,CustomControlName=Administration,InstalledType=Engine,JbiName=instance1 For Instance Name: CAS-cluster1-inst1 com.sun.jbi:ComponentName=sun-bpel-engine,ComponentType=Installed,ControlType=Custom,CustomControlName=Administration,InstalledType=Engine,JbiName=CAS-cluster1-inst1 For Instance Name: sync com.sun.jbi:ComponentName=sun-bpel-engine,ComponentType=Installed,ControlType=Custom,CustomControlName=Administration,InstalledType=Engine,JbiName=sync For Instance Name: server com.sun.jbi:ComponentName=sun-bpel-engine,ComponentType=Installed,ControlType=Custom,CustomControlName=Administration,InstalledType=Engine,JbiName=server Executing operations on Target instance1: Monitoring is false Persistence is false ===================== Cluster Target CAS-cluster1: --------------------- - Executing operations on Cluster Target Instance: CAS-cluster1-inst1 Monitoring is false Persistence is false ===================== Executing operations on Target sync: Monitoring is false Persistence is false ===================== Executing operations on Target server: Monitoring is false Persistence is false ===================== */