public void TestMBeanServer() { IMBeanServer mbeanServer = mbeanServerExtension.MBeanServer; var name = new ObjectName("MBeanServer:component=ValidMBean"); MBeanInfo info = mbeanServer.GetMBeanInfo(name); Assert.AreEqual("MBean", info.Description); Assert.AreEqual("CrimsonLogic.Common.Library.Tests.ValidInstanceMBean, CrimsonLogic.Common.Library.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5fb9aab394206ec1", info.ClassName); foreach (MBeanAttributeInfo attributeInfo in info.Attributes) { string attribute = string.Format("Attribute {0} ({1}) [{2}{3}]: {4}", attributeInfo.Name, attributeInfo.Description, attributeInfo.Readable ? "r" : "", attributeInfo.Writable ? "w" : "", attributeInfo.Type); Assert.AreEqual("Attribute Counter (Counter value) [rw]: System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", attribute); } int index = 0; foreach (MBeanOperationInfo operationInfo in info.Operations) { string operation = string.Format("Operation {0} ({1}) [{2}]", operationInfo.Name, operationInfo.Description, operationInfo.Impact); Assert.AreEqual( index == 0 ? "Operation AddAmount (Adds specified value to value of the counter) [Unknown]" : "Operation ResetCounter (Sets counter value to 0) [Unknown]", operation); index++; } object counter = mbeanServer.GetAttribute(name, "Counter"); Assert.AreEqual(0, counter); mbeanServer.SetAttribute(name, "Counter", 5); counter = mbeanServer.GetAttribute(name, "Counter"); Assert.AreEqual(5, counter); mbeanServer.Invoke(name, "AddAmount", new object[] { 5 }); counter = mbeanServer.GetAttribute(name, "Counter"); Assert.AreEqual(10, counter); mbeanServer.Invoke(name, "ResetCounter", new object[] { }); counter = mbeanServer.GetAttribute(name, "Counter"); Assert.AreEqual(0, counter); Logger.Debug("Completed testing the MBeanServer!"); }
static void Main(string[] args) { IMBeanServer server = MBeanServerFactory.CreateMBeanServer(); Counter o = new Counter(); ObjectName name = new ObjectName("QuickStart:type=counter"); server.RegisterMBean(o, name); Console.WriteLine("******"); MBeanInfo info = server.GetMBeanInfo(name); Console.WriteLine("MBean description: {0}", info.Description); Console.WriteLine("MBean class name: {0}", info.ClassName); foreach (MBeanAttributeInfo attributeInfo in info.Attributes) { Console.WriteLine("Attribute {0} ({1}) [{2}{3}]: {4}", attributeInfo.Name, attributeInfo.Description, attributeInfo.Readable ? "r" : "", attributeInfo.Writable ? "w" : "", attributeInfo.Type); } foreach (MBeanOperationInfo operationInfo in info.Operations) { Console.WriteLine("Operation {0} ({1}) [{2}]", operationInfo.Name, operationInfo.Description, operationInfo.Impact); } Console.WriteLine("******"); server.AddNotificationListener(name, CounterChanged, null, null); object counter = server.GetAttribute(name, "Value"); Console.WriteLine("Counter value is {0}", counter); server.SetAttribute(name, "Value", 5); counter = server.GetAttribute(name, "Value"); Console.WriteLine("Now, counter value is {0}", counter); counter = server.Invoke(name, "Add", new object[] { 5 }); counter = server.GetAttribute(name, "Value"); Console.WriteLine("Now, counter value is {0}", counter); counter = server.Invoke(name, "Reset", new object[] { }); counter = server.GetAttribute(name, "Value"); Console.WriteLine("Now, counter value is {0}", counter); server.RemoveNotificationListener(name, CounterChanged, null, null); Console.ReadKey(); }
public OutgoingMessage Invoke(IncomingMessage requestMessage) { CheckResourceUri(requestMessage, Schema.DynamicMBeanResourceUri); var request = requestMessage.GetPayload <InvokeMessage>(); var selectorSet = requestMessage.GetHeader <SelectorSetHeader>(); var objectName = selectorSet.ExtractObjectName(); var arguments = request.ManagedResourceOperation.Input.Select(x => x.Deserialize()).ToArray(); var result = _server.Invoke(objectName, request.ManagedResourceOperation.name, arguments); var response = new InvokeResponseMessage(new GenericValueType(result)); return(new OutgoingMessage() .AddHeader(new ActionHeader(Schema.InvokeResponseAction), true) .SetBody(new SerializerBodyWriter(response))); }