Skip to content

Commit

Permalink
feat(diagnostic): add interface method for invoking MBean operations
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewazores committed Sep 10, 2024
1 parent d0f1ca0 commit 6b0bbfa
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
import javax.management.MBeanException;
import javax.management.MalformedObjectNameException;
import javax.management.ReflectionException;
import javax.management.remote.JMXServiceURL;

Expand Down Expand Up @@ -56,6 +58,17 @@ public default String getJvmId() throws IDException, IOException {

public JvmIdentifier getJvmIdentifier() throws IDException, IOException;

public default <T> T invokeMBeanOperation(
String beanName,
String operation,
Object[] params,
String[] signature,
Class<T> returnType)
throws MalformedObjectNameException, InstanceNotFoundException, MBeanException,
ReflectionException, IOException, ConnectionException {
throw new ConnectionException("Unimplemented");
}

public MBeanMetrics getMBeanMetrics()
throws ConnectionException, IOException, InstanceNotFoundException,
IntrospectionException, ReflectionException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import javax.management.IntrospectionException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanException;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.management.openmbean.CompositeData;
Expand Down Expand Up @@ -206,6 +207,24 @@ public synchronized JvmIdentifier getJvmIdentifier() throws IDException, IOExcep
}
}

@Override
public <T> T invokeMBeanOperation(
String beanName,
String operation,
Object[] params,
String[] signature,
Class<T> returnType)
throws MalformedObjectNameException, InstanceNotFoundException, MBeanException,
ReflectionException, IOException, ConnectionException {
if (!isConnected()) {
connect();
}
return (T)
this.rjmxConnection
.getMBeanServer()
.invoke(ObjectName.getInstance(beanName), operation, params, signature);
}

private Map<String, Object> parseCompositeData(CompositeData compositeData) {
Map<String, Object> map = new HashMap<>();
for (String key : compositeData.getCompositeType().keySet()) {
Expand Down

0 comments on commit 6b0bbfa

Please sign in to comment.