GemFireCache gemFireCache;
ManagementService managementService = ManagementService.getManagementService((Cache) gemFireCache);
log.info("getDistributedSystemMXBean:: {}",managementService.getDistributedSystemMXBean());
// Returning null
CommandService commandService = CommandService.createLocalCommandService((Cache) gemFireCache);
Result regionListResult = commandService.processCommand("list clients");
System.out.println("---------Print csresult start----------");
System.out.println(csresult.toString());
//Error while processing command <list clients> Reason : null
2021-05-25 12:18:11.515 INFO 1880 --- [ main] o.s.data.gemfire.CacheFactoryBean : Created new VMware Tanzu GemFire version [9.10.6] Cache [SpringBasedCacheServerApplication]
2021-05-25 12:18:12.127 INFO 1880 --- [ main] o.a.g.m.i.cli.remote.CommandExecutor : Executing command: list clients
2021-05-25 12:18:12.140 ERROR 1880 --- [ main] o.a.g.m.i.cli.remote.CommandExecutor : Could not execute "list clients".
java.lang.NullPointerException: null
at org.apache.geode.management.internal.cli.commands.ListClientCommand.listClient(ListClientCommand.java:51) ~[geode-gfsh-9.10.6.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_211]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_211]
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282) ~[spring-core-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.apache.geode.management.internal.cli.remote.CommandExecutor.callInvokeMethod(CommandExecutor.java:138) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.CommandExecutor.invokeCommand(CommandExecutor.java:148) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.CommandExecutor.execute(CommandExecutor.java:76) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.CommandExecutor.execute(CommandExecutor.java:61) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.OnlineCommandProcessor.executeCommand(OnlineCommandProcessor.java:132) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.OnlineCommandProcessor.executeCommandReturningJson(OnlineCommandProcessor.java:138) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.MemberCommandService.processCommand(MemberCommandService.java:56) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.management.internal.cli.remote.MemberCommandService.processCommand(MemberCommandService.java:50) [geode-gfsh-9.10.6.jar:na]
at org.apache.geode.examples.MBeanRetrieve.MBeanRetrieveApplication.getMetrics(MBeanRetrieveApplication.java:44) [classes/:na]
at org.apache.geode.examples.MBeanRetrieve.MBeanRetrieveApplication$$EnhancerBySpringCGLIB$$f65714c1.CGLIB$getMetrics$0(<generated>) [classes/:na]
at org.apache.geode.examples.MBeanRetrieve.MBeanRetrieveApplication$$EnhancerBySpringCGLIB$$f65714c1$$FastClassBySpringCGLIB$$b8ebb8dd.invoke(<generated>) [classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) [spring-core-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) [spring-context-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.apache.geode.examples.MBeanRetrieve.MBeanRetrieveApplication$$EnhancerBySpringCGLIB$$f65714c1.getMetrics(<generated>) [classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_211]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_211]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:652) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:637) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1341) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1181) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) ~[spring-context-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) ~[spring-context-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:755) ~[spring-boot-2.3.11.RELEASE.jar:2.3.11.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.3.11.RELEASE.jar:2.3.11.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:402) ~[spring-boot-2.3.11.RELEASE.jar:2.3.11.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) ~[spring-boot-2.3.11.RELEASE.jar:2.3.11.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1247) ~[spring-boot-2.3.11.RELEASE.jar:2.3.11.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1236) ~[spring-boot-2.3.11.RELEASE.jar:2.3.11.RELEASE]
at org.apache.geode.examples.MBeanRetrieve.MBeanRetrieveApplication.main(MBeanRetrieveApplication.java:35) [classes/:na]
---------Print csresult start----------
org.apache.geode.management.internal.cli.result.CommandResult@33bb3f86
Error while processing command <list clients> Reason : null
import java.io.IOException;
import java.util.Set;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeData;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class DumpCacheClients {
private String jmxManagerHost;
private int jmxManagerPort;
private JMXConnector jmxConnector;
private MBeanServerConnection mbs;
private ObjectName distributedSystem;
private static final String CACHE_SERVER_MBEAN_NAME_PATTERN = "GemFire:service=CacheServer,*";
private static final String DISTRIBUTED_SYSTEM_MBEAN_NAME = "GemFire:service=System,type=Distributed";
public static void main(String[] args) throws Exception {
String jmxManagerHost = "localhost";
int jmxManagerPort = 1099;
DumpCacheClients dumper = new DumpCacheClients(jmxManagerHost, jmxManagerPort);
// Connect to JMX manager
dumper.connectToManager();
// Dump the cache client statistics
dumper.dumpCacheClientStatistics();
// Disconnect from JMX manager
dumper.disconnectFromManager();
}
private DumpCacheClients(String jmxManagerHost, int jmxManagerPort) {
this.jmxManagerHost = jmxManagerHost;
this.jmxManagerPort = jmxManagerPort;
}
private void connectToManager() throws Exception {
// Create the JMXServiceURL
StringBuilder builder = new StringBuilder();
builder
.append("service:jmx:rmi://")
.append(this.jmxManagerHost)
.append("/jndi/rmi://")
.append(this.jmxManagerHost)
.append(":")
.append(this.jmxManagerPort)
.append("/jmxrmi");
String urlString = builder.toString();
JMXServiceURL url = new JMXServiceURL(urlString);
System.out.println("Connecting to " + urlString);
// Create the JMXConnector
this.jmxConnector = JMXConnectorFactory.connect(url);
System.out.println("Connected to " + this.jmxConnector);
// Get the MBeanServerConnection
this.mbs = this.jmxConnector.getMBeanServerConnection();
// Get the DistributedSystem
this.distributedSystem = new ObjectName(DISTRIBUTED_SYSTEM_MBEAN_NAME);
}
private void dumpCacheClientStatistics() throws Exception {
ObjectName patternName = ObjectName.getInstance(CACHE_SERVER_MBEAN_NAME_PATTERN);
Set<ObjectName> objectNames = this.mbs.queryNames(patternName, null);
StringBuilder builder = new StringBuilder();
builder.append("Dumping client statistics for ").append(objectNames.size()).append(" servers:\n");
for (ObjectName objectName : objectNames) {
builder.append("=======================================================\n");
builder.append(objectName).append("\n");
builder.append("=======================================================\n");
CompositeData[] allClientStats = (CompositeData[]) invokeAction(objectName, "showAllClientStats");
for (CompositeData clientStats : allClientStats) {
builder.append("\nClient ").append(clientStats.get("clientId")).append("\n");
}
}
System.out.println(builder.toString());
}
private void disconnectFromManager() throws IOException {
if(this.jmxConnector != null) {
this.jmxConnector.close();
}
}
private Object invokeAction(ObjectName objectName, String operationName) throws Exception {
return invokeAction(objectName, operationName, new Object[0], new String[0]);
}
private Object invokeAction(ObjectName objectName, String operationName, Object[] params, String[] signature) throws Exception {
return this.mbs.invoke(objectName, operationName, params, signature);
}
}
String lineStr;
try {
Process procVar = Runtime.getRuntime().exec("/Users/user1/Downloads/vsc_work/ListClients_Script.sh");
BufferedReader brStr = new BufferedReader(new InputStreamReader(procVar.getInputStream()));
while ((lineStr = brStr.readLine()) != null)
System.out.println(lineStr);
procVar.waitFor();
procVar.destroy();
} catch (Exception e) {}
#!/bin/sh export GEMFIRE=/Users/user1/Downloads/products/pivotal-gemfire-9.10.6 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$GEMFIRE/bin:$PATH export CLASSPATH=$GEMFIRE/lib/geode-dependencies.jar:$GEMFIRE/lib/gfsh-dependencies.jar gfsh -e "connect --locator=localhost[10334]" -e "list clients"