@Override
public MBeanInfo getMBeanInfo() {
try {
ModelMBeanAttributeInfo[] attributes = new ModelMBeanAttributeInfo[0];
ModelMBeanConstructorInfo[] constructors = new ModelMBeanConstructorInfo[] {
new ModelMBeanConstructorInfo("-", this.getClass().getConstructor())
};
ModelMBeanOperationInfo[] operations = new ModelMBeanOperationInfo[] {
new ModelMBeanOperationInfo("info", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.INFO),
new ModelMBeanOperationInfo("action", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.ACTION),
new ModelMBeanOperationInfo("actionInfo", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.ACTION_INFO),
new ModelMBeanOperationInfo("unknown", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.UNKNOWN)
};
ModelMBeanNotificationInfo[] notifications = new ModelMBeanNotificationInfo[0];
return new ModelMBeanInfoSupport(this.getClass().getName(), "-", attributes, constructors, operations, notifications);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
java类javax.management.modelmbean.ModelMBeanInfoSupport的实例源码
TestModelMBean.java 文件源码
项目:wildfly-core
阅读 28
收藏 0
点赞 0
评论 0
InvocationTest.java 文件源码
项目:freeVM
阅读 28
收藏 0
点赞 0
评论 0
/**
* Verify that returned value of invoked method never retrieves value from
* cache if currencyTimeLimit is not defended in descriptor of
* ModelMBeanOperationInfo.
* <p>
* Instructions are the same as in testNegative.
*/
public Result testNotPresent() throws Exception {
Method method = class1.getDeclaredMethod("simpleMethod", null);
ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
"description", method);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", null, null,
new ModelMBeanOperationInfo[] { operationInfo1 }, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(this, "ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
Object value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertTrue(isInvokedMethod());
ModelMBeanOperationInfo operationInfo2 = (ModelMBeanOperationInfo)server
.getMBeanInfo(objectName).getOperations()[0];
assertTrue(operationInfo1 == operationInfo2);
value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertTrue(isInvokedMethod());
return result();
}
MBeanExporterOperationsTests.java 文件源码
项目:spring4-understanding
阅读 18
收藏 0
点赞 0
评论 0
@Test
public void testRegisterExistingMBeanWithUserSuppliedObjectName() throws Exception {
ObjectName objectName = ObjectNameManager.getInstance("spring:name=Foo");
ModelMBeanInfo info = new ModelMBeanInfoSupport("myClass", "myDescription", null, null, null, null);
RequiredModelMBean bean = new RequiredModelMBean(info);
MBeanExporter exporter = new MBeanExporter();
exporter.setServer(getServer());
exporter.registerManagedResource(bean, objectName);
MBeanInfo infoFromServer = getServer().getMBeanInfo(objectName);
assertEquals(info, infoFromServer);
}
MBeanExporterOperationsTests.java 文件源码
项目:class-guard
阅读 17
收藏 0
点赞 0
评论 0
@Test
public void testRegisterExistingMBeanWithUserSuppliedObjectName() throws Exception {
ObjectName objectName = ObjectNameManager.getInstance("spring:name=Foo");
ModelMBeanInfo info = new ModelMBeanInfoSupport("myClass", "myDescription", null, null, null, null);
RequiredModelMBean bean = new RequiredModelMBean(info);
MBeanExporter exporter = new MBeanExporter();
exporter.setServer(getServer());
exporter.registerManagedResource(bean, objectName);
MBeanInfo infoFromServer = getServer().getMBeanInfo(objectName);
assertEquals(info, infoFromServer);
}
UserDefinedDescriptorTest.java 文件源码
项目:freeVM
阅读 27
收藏 0
点赞 0
评论 0
public Result test01() throws Exception {
ModelMBeanInfoSupport beanInfoSupport = constractModelMBeanInfoSupport();
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(new UserDefinedDescriptorTest(),
"ObjectReference");
ObjectName objectName = new ObjectName("modelmbean:type=Operation");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
verifyModelMBeanInfo((ModelMBeanInfoSupport)server
.getMBeanInfo(objectName));
return passed();
}
UserDefinedDescriptorTest.java 文件源码
项目:freeVM
阅读 21
收藏 0
点赞 0
评论 0
/**
* Do 11-15 steps.
*/
private void verifyModelMBeanInfo(ModelMBeanInfoSupport modelMBeanInfo)
throws Exception {
Descriptor descriptor = modelMBeanInfo.getMBeanDescriptor();
Descriptor descriptor2 = (Descriptor)map.get(modelMBeanInfo.getClass()
.getName());
assertTrue(DefaultDescriptorTest.compareDescriptors(descriptor,
descriptor2));
verifyDescriptor(modelMBeanInfo.getAttribute("name"));
verifyDescriptor(modelMBeanInfo.getAttributes());
verifyDescriptor(modelMBeanInfo.getConstructors());
verifyDescriptor(modelMBeanInfo.getNotification("name"));
verifyDescriptor(modelMBeanInfo.getNotifications());
verifyDescriptor(modelMBeanInfo.getOperations());
}
UserDefinedDescriptorTest.java 文件源码
项目:freeVM
阅读 22
收藏 0
点赞 0
评论 0
/**
* Do 1-6 steps.
*/
private ModelMBeanInfoSupport constractModelMBeanInfoSupport()
throws Exception {
ModelMBeanOperationInfo operationInfo = new ModelMBeanOperationInfo(
"description", class1.getMethod("simpleOperartion", null));
setDescriptor(operationInfo);
ModelMBeanConstructorInfo constructorInfo = new ModelMBeanConstructorInfo(
"description", class1.getConstructor(null));
setDescriptor(constructorInfo);
ModelMBeanAttributeInfo attributeInfo = new ModelMBeanAttributeInfo(
"name", "description", class1.getMethod("getH", null), class1
.getMethod("setH", new Class[] { int.class }));
setDescriptor(attributeInfo);
ModelMBeanNotificationInfo notificationInfo = new ModelMBeanNotificationInfo(
new String[] { "specific notification tepes" }, "name",
"description");
setDescriptor(notificationInfo);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description",
new ModelMBeanAttributeInfo[] { attributeInfo },
new ModelMBeanConstructorInfo[] { constructorInfo },
new ModelMBeanOperationInfo[] { operationInfo },
new ModelMBeanNotificationInfo[] { notificationInfo });
Descriptor descriptor = beanInfoSupport.getMBeanDescriptor();
String[] strings = getSpesific(beanInfoSupport.getClass());
descriptor.setField(strings[0], strings[1]);
map.put(beanInfoSupport.getClass().getName(), descriptor);
beanInfoSupport.setMBeanDescriptor(descriptor);
return beanInfoSupport;
}
NotificationLoggingTest.java 文件源码
项目:freeVM
阅读 18
收藏 0
点赞 0
评论 0
/**
* <ul>
* Verify that logs of new notifications, when sendNotification is invoked,
* write to file. File name is value of descriptor of
* ModelMBeanNotificationInfo.
* <li>Create java class, which is not MBean. MBean has 1 getter and 1
* setter methods.
* <li>Create ModelMBeanNotificationInfo object for my type with descriptor
* with logging.
* <li>Create ModelMBeanInfoSupport object. All ModelMBeanXXXInfo except
* ModelMBeanNotificationInfo are default.
* <li>Create RequiredModelMBean object.
* <li>Instance of java class in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>Send my notification using sendNotification method.
* <li>Verify that logfile was created and size of file > 0.
* </ul>
*/
public Result testLogging() throws Exception {
ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
"g", "descr", class1.getMethod("getG", null), class1.getMethod(
"setG", new Class[] { String.class }));
ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
ModelMBeanNotificationInfo notificationInfo = new ModelMBeanNotificationInfo(
new String[] { SimpleNotification.notificationType },
SimpleNotification.notificationType, "description");
File file = File.createTempFile("log", ".txt");
file.deleteOnExit();
Descriptor descriptor = notificationInfo.getDescriptor();
descriptor.setField("log", "true");
descriptor.setField("logfile", file.getAbsolutePath());
log.info("file name: " + file.getAbsolutePath());
notificationInfo.setDescriptor(descriptor);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", attributeInfos, null, null,
new ModelMBeanNotificationInfo[] { notificationInfo });
beanInfoSupport.getNotification(new SimpleNotification("src", 1)
.getType());
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
beanInfoSupport.getDescriptor(new SimpleNotification("src", 1)
.getType(), "notification");
requiredModelMBean.sendNotification(new SimpleNotification("src", 1));
assertTrue(file.length() > 0);
file.delete();
return result();
}
InvocationTest.java 文件源码
项目:freeVM
阅读 25
收藏 0
点赞 0
评论 0
/**
* Verify that invoke method throws exception if target operation method
* throws exception.
* <ul>
* Step by step:
* <li>Create operation method with one string parameter which always
* throws an exception with message=parameter of this method.
* <li>Create ModelMBeanOperationInfo object for operation method.
* <li>Set value currencyTimeLimit = 0 in descriptor for
* ModelMBeanOperationInfo object.
* <li>Create ModelMBeanInfoSupport object with default descriptor. All
* ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
* <li>Instance of class created in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>Create ObjectName object.
* <li>Register RequiredModelMBean object in MBeanServer with above
* ObjectName.
* <li>Invoke operation methodThrowException method thru invoke method of
* MBeanServer with specific msg.
* <li>Verify that MBeanException was thrown with nested exception which
* has message which specified in previous step.
* </ul>
*/
public Result testException() throws Exception {
Method method = class1.getMethod("methodThrowException",
new Class[] { String.class });
ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
"description", method);
Descriptor descriptor = operationInfo1.getDescriptor();
descriptor.setField("currencyTimeLimit", "0");
operationInfo1.setDescriptor(descriptor);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", null, null,
new ModelMBeanOperationInfo[] { operationInfo1 }, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(this, "ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
try {
server.invoke(objectName, method.getName(),
new Object[] { "message" }, new String[] { String.class
.getName() });
assertTrue(false);
} catch (MBeanException e) {
assertEquals(e.getCause().getMessage(), "message");
}
assertTrue(isInvokedMethod());
return result();
}
InvocationTest.java 文件源码
项目:freeVM
阅读 25
收藏 0
点赞 0
评论 0
/**
* Verify that invoke method never caches returned value of method if
* currencyTimeLimit < 0.
* <ul>
* Step by step:
* <li>Create operation method without parameters which always returns the
* same value.
* <li>Create ModelMBeanOperationInfo object for operation method.
* <li>Set value currencyTimeLimit <0 in descriptor for
* ModelMBeanOperationInfo object.
* <li>Create ModelMBeanInfoSupport object with default descriptor. All
* ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
* <li>Create RequiredModelMBean object.
* <li>Instance of class created in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>Create ObjectName object.
* <li>Register RequiredModelMBean object in MBeanServer with above
* ObjectName.
* <li>Invoke operation method thru invoke method of MBeanServer.
* <li>Verify value which the invoke method returned is the same as value
* which the operation method returned.
* <li>Verify that operation method was invoked.
* <li>Invoke again operation method thru invoke method of MBeanServer.
* <li>Verify value which the invoke method returned is the same as value
* which the operation method returned.
* <li>Verify that operation method was invoked.
* </ul>
*/
public Result testNegative() throws Exception {
Method method = class1.getDeclaredMethod("simpleMethod", null);
ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
"description", method);
Descriptor descriptor = operationInfo1.getDescriptor();
descriptor.setField("currencyTimeLimit", "-1");
operationInfo1.setDescriptor(descriptor);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", null, null,
new ModelMBeanOperationInfo[] { operationInfo1 }, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(this, "ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
Object value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertTrue(isInvokedMethod());
ModelMBeanOperationInfo operationInfo2 = (ModelMBeanOperationInfo)server
.getMBeanInfo(objectName).getOperations()[0];
assertTrue(operationInfo1 == operationInfo2);
value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertTrue(isInvokedMethod());
return result();
}
MBeanInfoAssembler.java 文件源码
项目:flowable-engine
阅读 23
收藏 0
点赞 0
评论 0
public ModelMBeanInfo getMBeanInfo(Object defaultManagedBean, Object customManagedBean, String objectName) throws JMException {
if ((defaultManagedBean == null && customManagedBean == null) || objectName == null)
return null;
// skip proxy classes
if (defaultManagedBean != null && Proxy.isProxyClass(defaultManagedBean.getClass())) {
LOGGER.trace("Skip creating ModelMBeanInfo due proxy class {}", defaultManagedBean.getClass());
return null;
}
// maps and lists to contain information about attributes and operations
Map<String, ManagedAttributeInfo> attributes = new LinkedHashMap<>();
Set<ManagedOperationInfo> operations = new LinkedHashSet<>();
Set<ModelMBeanAttributeInfo> mBeanAttributes = new LinkedHashSet<>();
Set<ModelMBeanOperationInfo> mBeanOperations = new LinkedHashSet<>();
Set<ModelMBeanNotificationInfo> mBeanNotifications = new LinkedHashSet<>();
// extract details from default managed bean
if (defaultManagedBean != null) {
extractAttributesAndOperations(defaultManagedBean.getClass(), attributes, operations);
extractMbeanAttributes(defaultManagedBean, attributes, mBeanAttributes, mBeanOperations);
extractMbeanOperations(defaultManagedBean, operations, mBeanOperations);
extractMbeanNotifications(defaultManagedBean, mBeanNotifications);
}
// extract details from custom managed bean
if (customManagedBean != null) {
extractAttributesAndOperations(customManagedBean.getClass(), attributes, operations);
extractMbeanAttributes(customManagedBean, attributes, mBeanAttributes, mBeanOperations);
extractMbeanOperations(customManagedBean, operations, mBeanOperations);
extractMbeanNotifications(customManagedBean, mBeanNotifications);
}
// create the ModelMBeanInfo
String name = getName(customManagedBean != null ? customManagedBean : defaultManagedBean, objectName);
String description = getDescription(customManagedBean != null ? customManagedBean : defaultManagedBean, objectName);
ModelMBeanAttributeInfo[] arrayAttributes = mBeanAttributes.toArray(new ModelMBeanAttributeInfo[mBeanAttributes.size()]);
ModelMBeanOperationInfo[] arrayOperations = mBeanOperations.toArray(new ModelMBeanOperationInfo[mBeanOperations.size()]);
ModelMBeanNotificationInfo[] arrayNotifications = mBeanNotifications.toArray(new ModelMBeanNotificationInfo[mBeanNotifications.size()]);
ModelMBeanInfo info = new ModelMBeanInfoSupport(name, description, arrayAttributes, null, arrayOperations, arrayNotifications);
LOGGER.trace("Created ModelMBeanInfo {}", info);
return info;
}
MBeanInfoAssembler.java 文件源码
项目:Camel
阅读 24
收藏 0
点赞 0
评论 0
/**
* Gets the {@link ModelMBeanInfo} for the given managed bean
*
* @param defaultManagedBean the default managed bean
* @param customManagedBean an optional custom managed bean
* @param objectName the object name
* @return the model info, or <tt>null</tt> if not possible to create, for example due the managed bean is a proxy class
* @throws JMException is thrown if error creating the model info
*/
public ModelMBeanInfo getMBeanInfo(Object defaultManagedBean, Object customManagedBean, String objectName) throws JMException {
// skip proxy classes
if (defaultManagedBean != null && Proxy.isProxyClass(defaultManagedBean.getClass())) {
LOG.trace("Skip creating ModelMBeanInfo due proxy class {}", defaultManagedBean.getClass());
return null;
}
// maps and lists to contain information about attributes and operations
Map<String, ManagedAttributeInfo> attributes = new LinkedHashMap<String, ManagedAttributeInfo>();
Set<ManagedOperationInfo> operations = new LinkedHashSet<ManagedOperationInfo>();
Set<ModelMBeanAttributeInfo> mBeanAttributes = new LinkedHashSet<ModelMBeanAttributeInfo>();
Set<ModelMBeanOperationInfo> mBeanOperations = new LinkedHashSet<ModelMBeanOperationInfo>();
Set<ModelMBeanNotificationInfo> mBeanNotifications = new LinkedHashSet<ModelMBeanNotificationInfo>();
// extract details from default managed bean
if (defaultManagedBean != null) {
extractAttributesAndOperations(defaultManagedBean.getClass(), attributes, operations);
extractMbeanAttributes(defaultManagedBean, attributes, mBeanAttributes, mBeanOperations);
extractMbeanOperations(defaultManagedBean, operations, mBeanOperations);
extractMbeanNotifications(defaultManagedBean, mBeanNotifications);
}
// extract details from custom managed bean
if (customManagedBean != null) {
extractAttributesAndOperations(customManagedBean.getClass(), attributes, operations);
extractMbeanAttributes(customManagedBean, attributes, mBeanAttributes, mBeanOperations);
extractMbeanOperations(customManagedBean, operations, mBeanOperations);
extractMbeanNotifications(customManagedBean, mBeanNotifications);
}
// create the ModelMBeanInfo
String name = getName(customManagedBean != null ? customManagedBean : defaultManagedBean, objectName);
String description = getDescription(customManagedBean != null ? customManagedBean : defaultManagedBean, objectName);
ModelMBeanAttributeInfo[] arrayAttributes = mBeanAttributes.toArray(new ModelMBeanAttributeInfo[mBeanAttributes.size()]);
ModelMBeanOperationInfo[] arrayOperations = mBeanOperations.toArray(new ModelMBeanOperationInfo[mBeanOperations.size()]);
ModelMBeanNotificationInfo[] arrayNotifications = mBeanNotifications.toArray(new ModelMBeanNotificationInfo[mBeanNotifications.size()]);
ModelMBeanInfo info = new ModelMBeanInfoSupport(name, description, arrayAttributes, null, arrayOperations, arrayNotifications);
LOG.trace("Created ModelMBeanInfo {}", info);
return info;
}
DefaultDescriptorTest.java 文件源码
项目:freeVM
阅读 22
收藏 0
点赞 0
评论 0
/**
* Verify default fields of descriptor from ModelMBeanInfoSupport:
* name=nameofClassUsedInConstructor, descriptorType=mbean,
* displayName=nameofClassUsedInConstructor, persistPolicy=never, log=F,
* visibility=1.
* <ul>
* Step by step:
* <li>Create ModelMBeanInfoSupport object using ModelMBeanInfoSupport.
* <li>Extract a descriptor from created object using getMBeanDescriptor()
* method.
* <li>Verify that all default fields of the descriptor exist using
* getFieldValue(String inFieldName) method.
* <li>There are no other fields.
* <li>Convert the descriptor to xml.
* <li>Create new descriptor from xml using DescriptorSupport(String inStr)
* constructor.
* </ul>
*/
public Result testModelMBeanInfoSupport() throws Exception {
ModelMBeanInfoSupport modelMBeanInfoSupport = new ModelMBeanInfoSupport(
sampleClass.getName(), "description", null, null, null, null);
descriptor = modelMBeanInfoSupport.getMBeanDescriptor();
assertEquals(descriptor.getFieldValue("name"), sampleClass.getName());
assertEquals(descriptor.getFieldValue("descriptorType"), "mbean");
assertEquals(descriptor.getFieldValue("displayName"), sampleClass
.getName());
assertEquals(descriptor.getFieldValue("persistPolicy"), "never");
assertEquals(descriptor.getFieldValue("log"), "F");
assertEquals(descriptor.getFieldValue("visibility"), "1");
assertEquals(descriptor.getFieldValue("export"), "F");
assertEquals(descriptor.getFields().length, 7);
commonCheck();
return result();
}
RequiredModelMBeanTest.java 文件源码
项目:freeVM
阅读 18
收藏 0
点赞 0
评论 0
/**
* Verify that value of attribute return value which return getter method if
* currencyTimeLimit < 0.
* <ul>
* Step by step:
* <li>1.Create java class, which is not MBean. This class has getter and
* setter methods.
* <li>2.Create ModelMBeanAttibuteInfo object for class in 1st step.
* <li>3.Extract descriptor from ModelMBeanAttibuteInfo class and set
* additional fields currencyTimeLimit < 0 and setMethod=nameOfSetterMethod.
* <li>4.Create ModelMBeanInfoSupport object.
* <li>5.Create RequiredModelMBean object.
* <li>6.Create notification listener and register it in RequiredModelMBean
* object for attribute using addAttributeChangeNotificationListener.
* <li>7.Instance of java class in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>8.Create objectName.
* <li>9.Register RequiredModelMBean object in MBeanServer with objectName
* specified in previous step.
* <li>10.Set attribute on MBeanServer using setAttribute method.
* <li>11.Verify that notification listener was notified about change
* attribute.
* <li>12.Verify that setter method was invoked.
* <li>13.Verify that getAttribute of MBeanServer returns correct value of
* attribute and getter method was invoked.
* <li>14. Invoke again getAttribute of MBeanServer method and verify
* returned value. Also verify that getter method was invoked.
* </ul>
*/
public Result testNegative() throws Exception {
Method getter = class1.getMethod("getG", null);
Method setter = class1.getMethod("setG", new Class[] { String.class });
ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
"name", "description", getter, setter);
Descriptor descriptor = attributeInfoForG.getDescriptor();
descriptor.setField("currencyTimeLimit", "-1");
descriptor.setField("setMethod", setter.getName());
descriptor.setField("getMethod", getter.getName());
attributeInfoForG.setDescriptor(descriptor);
ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
ModelMBeanOperationInfo[] operationInfos = new ModelMBeanOperationInfo[] {
new ModelMBeanOperationInfo("description", setter),
new ModelMBeanOperationInfo("description", getter) };
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", attributeInfos, null,
operationInfos, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
ManageResourceAndNotification notificationListener = new ManageResourceAndNotification();
requiredModelMBean.addAttributeChangeNotificationListener(
notificationListener, attributeInfoForG.getName(),
ManageResourceAndNotification.handback);
ManageResourceAndNotification managedResource = new ManageResourceAndNotification();
requiredModelMBean.setManagedResource(managedResource,
"ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
String newValue = "new value";
server.setAttribute(objectName, new Attribute(attributeInfoForG
.getName(), newValue));
assertTrue(notificationListener.isWasHandleNotificationInvoked());
assertEquals(managedResource.getG(), newValue);
managedResource.isGetGWasInvoked();
assertEquals(server.getAttribute(objectName, attributeInfoForG
.getName()), newValue);
assertTrue(managedResource.isGetGWasInvoked());
assertTrue(server.getMBeanInfo(objectName).getAttributes()[0] == attributeInfoForG);
assertNull(attributeInfoForG.getDescriptor().getFieldValue("value"));
return result();
}
RequiredModelMBeanTest.java 文件源码
项目:freeVM
阅读 18
收藏 0
点赞 0
评论 0
/**
* Verify that value of attribute retrieves a value from cache if
* currencyTimeLimit = 0.
* <ul>
* Step by step:
* <li>1.Create java class, which is not MBean. This class has getter and
* setter methods.
* <li>2.Create ModelMBeanAttibuteInfo object for class in 1st step.
* <li>3.Extract descriptor from ModelMBeanAttibuteInfo class and set
* additional fields currencyTimeLimit = 0 and setMethod=nameOfSetterMethod.
* <li>4.Create ModelMBeanInfoSupport object.
* <li>5.Create RequiredModelMBean object.
* <li>6.Create notification listener and register it in RequiredModelMBean
* object for attribute using addAttributeChangeNotificationListener.
* <li>7.Instance of java class in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>8.Create objectName.
* <li>9.Register RequiredModelMBean object in MBeanServer with objectName
* specified in previous step.
* <li>10.Set attribute on MBeanServer using setAttribute method.
* <li>11.Verify that notification listener was notified about change
* attribute.
* <li>12.Verify that setter method was invoked.
* <li>13.Verify that getAttribute returns correct value of attribute and
* getter method was not invoked.
* <li>14.Verify value of field value of descriptor of
* ModelMBeanAttibuteInfo.
*/
public Result testZero() throws Exception {
Method getter = class1.getMethod("getG", null);
Method setter = class1.getMethod("setG", new Class[] { String.class });
ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
"name", "description", getter, setter);
Descriptor descriptor = attributeInfoForG.getDescriptor();
descriptor.setField("currencyTimeLimit", "0");
descriptor.setField("setMethod", setter.getName());
descriptor.setField("getMethod", getter.getName());
attributeInfoForG.setDescriptor(descriptor);
ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
ModelMBeanOperationInfo[] operationInfos = new ModelMBeanOperationInfo[] {
new ModelMBeanOperationInfo("description", setter),
new ModelMBeanOperationInfo("description", getter) };
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", attributeInfos, null,
operationInfos, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
ManageResourceAndNotification notificationListener = new ManageResourceAndNotification();
requiredModelMBean.addAttributeChangeNotificationListener(
notificationListener, attributeInfoForG.getName(),
ManageResourceAndNotification.handback);
ManageResourceAndNotification managedResource = new ManageResourceAndNotification();
requiredModelMBean.setManagedResource(managedResource,
"ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
String newValue = "new value";
server.setAttribute(objectName, new Attribute(attributeInfoForG
.getName(), newValue));
assertTrue(notificationListener.isWasHandleNotificationInvoked());
assertEquals(managedResource.getG(), newValue);
managedResource.isGetGWasInvoked();
assertEquals(server.getAttribute(objectName, attributeInfoForG
.getName()), newValue);
assertFalse(managedResource.isGetGWasInvoked());
assertTrue(server.getMBeanInfo(objectName).getAttributes()[0] == attributeInfoForG);
assertEquals(attributeInfoForG.getDescriptor().getFieldValue("value"),
newValue);
return result();
}
RequiredModelMBeanTest.java 文件源码
项目:freeVM
阅读 21
收藏 0
点赞 0
评论 0
/**
* Verify that value of attribute always retrieves from returned value of
* getter method if currencyTimeLimit is not defined in descriptor.
* <p>
* Instructions are the same as in testNegative.
*/
public Result testNotPresent() throws Exception {
Method getter = class1.getMethod("getG", null);
Method setter = class1.getMethod("setG", new Class[] { String.class });
ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
"name", "description", getter, setter);
Descriptor descriptor = attributeInfoForG.getDescriptor();
descriptor.setField("setMethod", setter.getName());
descriptor.setField("getMethod", getter.getName());
attributeInfoForG.setDescriptor(descriptor);
ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
ModelMBeanOperationInfo[] operationInfos = new ModelMBeanOperationInfo[] {
new ModelMBeanOperationInfo("description", setter),
new ModelMBeanOperationInfo("description", getter) };
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", attributeInfos, null,
operationInfos, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
ManageResourceAndNotification notificationListener = new ManageResourceAndNotification();
requiredModelMBean.addAttributeChangeNotificationListener(
notificationListener, attributeInfoForG.getName(),
ManageResourceAndNotification.handback);
ManageResourceAndNotification managedResource = new ManageResourceAndNotification();
requiredModelMBean.setManagedResource(managedResource,
"ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
String newValue = "new value";
server.setAttribute(objectName, new Attribute(attributeInfoForG
.getName(), newValue));
assertTrue(notificationListener.isWasHandleNotificationInvoked());
assertEquals(managedResource.getG(), newValue);
managedResource.isGetGWasInvoked();
assertEquals(server.getAttribute(objectName, attributeInfoForG
.getName()), newValue);
assertTrue(managedResource.isGetGWasInvoked());
assertTrue(server.getMBeanInfo(objectName).getAttributes()[0] == attributeInfoForG);
assertNull(attributeInfoForG.getDescriptor().getFieldValue("value"));
return result();
}
AbstractMBeanInfoAssembler.java 文件源码
项目:lams
阅读 24
收藏 0
点赞 0
评论 0
/**
* Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
* JMX implementations and populates the metadata through calls to the subclass.
* @param managedBean the bean that will be exposed (might be an AOP proxy)
* @param beanKey the key associated with the managed bean
* @return the populated ModelMBeanInfo instance
* @throws JMException in case of errors
* @see #getDescription(Object, String)
* @see #getAttributeInfo(Object, String)
* @see #getConstructorInfo(Object, String)
* @see #getOperationInfo(Object, String)
* @see #getNotificationInfo(Object, String)
* @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
*/
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
checkManagedBean(managedBean);
ModelMBeanInfo info = new ModelMBeanInfoSupport(
getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
Descriptor desc = info.getMBeanDescriptor();
populateMBeanDescriptor(desc, managedBean, beanKey);
info.setMBeanDescriptor(desc);
return info;
}
AbstractMBeanInfoAssembler.java 文件源码
项目:spring4-understanding
阅读 23
收藏 0
点赞 0
评论 0
/**
* Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
* JMX implementations and populates the metadata through calls to the subclass.
* @param managedBean the bean that will be exposed (might be an AOP proxy)
* @param beanKey the key associated with the managed bean
* @return the populated ModelMBeanInfo instance
* @throws JMException in case of errors
* @see #getDescription(Object, String)
* @see #getAttributeInfo(Object, String)
* @see #getConstructorInfo(Object, String)
* @see #getOperationInfo(Object, String)
* @see #getNotificationInfo(Object, String)
* @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
*/
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
checkManagedBean(managedBean);
ModelMBeanInfo info = new ModelMBeanInfoSupport(
getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
Descriptor desc = info.getMBeanDescriptor();
populateMBeanDescriptor(desc, managedBean, beanKey);
info.setMBeanDescriptor(desc);
return info;
}
AbstractMBeanInfoAssembler.java 文件源码
项目:my-spring-cache-redis
阅读 24
收藏 0
点赞 0
评论 0
/**
* Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
* JMX implementations and populates the metadata through calls to the subclass.
* @param managedBean the bean that will be exposed (might be an AOP proxy)
* @param beanKey the key associated with the managed bean
* @return the populated ModelMBeanInfo instance
* @throws JMException in case of errors
* @see #getDescription(Object, String)
* @see #getAttributeInfo(Object, String)
* @see #getConstructorInfo(Object, String)
* @see #getOperationInfo(Object, String)
* @see #getNotificationInfo(Object, String)
* @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
*/
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
checkManagedBean(managedBean);
ModelMBeanInfo info = new ModelMBeanInfoSupport(
getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
Descriptor desc = info.getMBeanDescriptor();
populateMBeanDescriptor(desc, managedBean, beanKey);
info.setMBeanDescriptor(desc);
return info;
}
AbstractMBeanInfoAssembler.java 文件源码
项目:spring
阅读 21
收藏 0
点赞 0
评论 0
/**
* Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
* JMX implementations and populates the metadata through calls to the subclass.
* @param managedBean the bean that will be exposed (might be an AOP proxy)
* @param beanKey the key associated with the managed bean
* @return the populated ModelMBeanInfo instance
* @throws JMException in case of errors
* @see #getDescription(Object, String)
* @see #getAttributeInfo(Object, String)
* @see #getConstructorInfo(Object, String)
* @see #getOperationInfo(Object, String)
* @see #getNotificationInfo(Object, String)
* @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
*/
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
checkManagedBean(managedBean);
ModelMBeanInfo info = new ModelMBeanInfoSupport(
getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
Descriptor desc = info.getMBeanDescriptor();
populateMBeanDescriptor(desc, managedBean, beanKey);
info.setMBeanDescriptor(desc);
return info;
}
AbstractMBeanInfoAssembler.java 文件源码
项目:class-guard
阅读 27
收藏 0
点赞 0
评论 0
/**
* Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
* JMX implementations and populates the metadata through calls to the subclass.
* @param managedBean the bean that will be exposed (might be an AOP proxy)
* @param beanKey the key associated with the managed bean
* @return the populated ModelMBeanInfo instance
* @throws JMException in case of errors
* @see #getDescription(Object, String)
* @see #getAttributeInfo(Object, String)
* @see #getConstructorInfo(Object, String)
* @see #getOperationInfo(Object, String)
* @see #getNotificationInfo(Object, String)
* @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
*/
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
checkManagedBean(managedBean);
ModelMBeanInfo info = new ModelMBeanInfoSupport(
getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
Descriptor desc = info.getMBeanDescriptor();
populateMBeanDescriptor(desc, managedBean, beanKey);
info.setMBeanDescriptor(desc);
return info;
}
InvocationTest.java 文件源码
项目:freeVM
阅读 21
收藏 0
点赞 0
评论 0
/**
* Verify that invoke method retrieves returned value of method from cache
* or invoke operation depends on currencyTimeLimit > 0 and
* lastUpdatedTimeStamp.
* <ul>
* Step by step:
* <li>Create operation method without parameters which always returns
* value.
* <li>Create ModelMBeanOperationInfo object for operation method.
* <li>Set value currencyTimeLimit = > 0 in descriptor for
* ModelMBeanOperationInfo object.
* <li>Create ModelMBeanInfoSupport object with default descriptor. All
* ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
* <li>Instance of class created in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>Create ObjectName object.
* <li>Register RequiredModelMBean object in MBeanServer with above
* ObjectName.
* <li>Invoke operation method thru invoke method of MBeanServer.
* <li>Verify value which the invoke method returned is the same as value
* which the operation method returned.
* <li>Verify that operation method was invoked.
* <li>Verify value of field `value` in descriptor for
* ModelMBeanOperationInfo object.
* <li>Invoke again operation method thru invoke method of MBeanServer.
* <li>Verify returned value is not changed.
* <li>Verify that operation method wasn't invoked.
* <li>Verify value of field `value` in descriptor for
* ModelMBeanOperationInfo object is not changed.
* <li>Change returned value of operation method.
* <li> Wait currencyTimeLimit seconds.
* <li>Invoke again operation method thru invoke method of MBeanServer.
* <li>Verify value which the invoke method returned is the same as value
* which the operation method returned.
* <li>Verify that operation method was invoked.
* <li>Verify value of field `value` in descriptor for
* ModelMBeanOperationInfo object is changed and verify this value.
* </ul>
*/
public Result testPositive() throws Exception {
Method method = class1.getMethod("simpleMethod", null);
ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
"description", method);
Descriptor descriptor = operationInfo1.getDescriptor();
int currencyTimeLimit = 5;
descriptor.setField("currencyTimeLimit", currencyTimeLimit + "");
operationInfo1.setDescriptor(descriptor);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", null, null,
new ModelMBeanOperationInfo[] { operationInfo1 }, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(this, "ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
Object value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertTrue(isInvokedMethod());
printValue(server.getMBeanInfo(objectName));
value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertFalse(isInvokedMethod());
printValue(server.getMBeanInfo(objectName));
returnedObject = new Integer(10);
Thread.sleep(1000 * currencyTimeLimit + latancy);
value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
printValue(server.getMBeanInfo(objectName));
assertTrue(isInvokedMethod());
return result();
}
InvocationTest.java 文件源码
项目:freeVM
阅读 27
收藏 0
点赞 0
评论 0
/**
* Verify that invoke method invokes correctly method with parameter and
* without it.
* <ul>
* Step by step:
* <li>Create operation method without parameters which always returns the
* same value.
* <li>Create operation method with name as in 1 step with parameter which
* always returns the parameter.
* <li>Create 2 ModelMBeanOperationInfo object for both operation method.
* <li>Create ModelMBeanInfoSupport object with default descriptor. All
* ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
* <li>Create RequiredModelMBean object.
* <li>Instance of class created in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>Create ObjectName object.
* <li>Register RequiredModelMBean object in MBeanServer with above
* ObjectName.
* <li>Invoke 1st operation method thru invoke method of MBeanServer:
* server.invoke(objectName, methodName, null, null).
* <li>Verify value which the invoke method returned is the same as value
* which the 1st operation method returned.
* <li>Invoke 2nd operation method thru invoke method of MBeanServer:
* server.invoke(objectName, methodName, argument, signature).
* <li>Verify value which the invoke method returned is the same as
* argument.
* </ul>
*/
public Result testMethodWithParameter() throws Exception {
Method method1 = class1.getDeclaredMethod("simpleMethod",
new Class[] { int.class });
ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
"description", method1);
Method method2 = class1.getMethod("simpleMethod", null);
ModelMBeanOperationInfo operationInfo2 = new ModelMBeanOperationInfo(
"description", method2);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", null, null,
new ModelMBeanOperationInfo[] { operationInfo1, operationInfo2 },
null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(this, "ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
Object value = server.invoke(objectName, method2.getName(), null, null);
assertEquals(value, returnedObject);
int integer = 8;
value = server.invoke(objectName, method1.getName(),
new Object[] { new Integer(integer) }, new String[] { method1
.getParameterTypes()[0].getName() });
assertEquals(value, new Integer(integer));
return result();
}