public override void Run() { try { MBeanServer mbs = ManagementFactory.GetPlatformMBeanServer(); // Metrics that belong to "FSNamesystem", these are metrics that // come from hadoop metrics framework for the class FSNamesystem. ObjectName mxbeanNamefsn = new ObjectName("Hadoop:service=NameNode,name=FSNamesystem" ); // Metrics that belong to "FSNamesystemState". // These are metrics that FSNamesystem registers directly with MBeanServer. ObjectName mxbeanNameFsns = new ObjectName("Hadoop:service=NameNode,name=FSNamesystemState" ); // Metrics that belong to "NameNodeInfo". // These are metrics that FSNamesystem registers directly with MBeanServer. ObjectName mxbeanNameNni = new ObjectName("Hadoop:service=NameNode,name=NameNodeInfo" ); ICollection <ObjectName> mbeans = new HashSet <ObjectName>(); mbeans.AddItem(mxbeanNamefsn); mbeans.AddItem(mxbeanNameFsns); mbeans.AddItem(mxbeanNameNni); foreach (ObjectName mbean in mbeans) { MBeanInfo attributes = mbs.GetMBeanInfo(mbean); foreach (MBeanAttributeInfo attributeInfo in attributes.GetAttributes()) { mbs.GetAttribute(mbean, attributeInfo.GetName()); } } succeeded = true; } catch (Exception) { } }
/// <summary> /// Creates new open MBean info wrapper. /// </summary> /// <param name="wrappedInfo"></param> public OpenMBeanInfoSupport(MBeanInfo wrappedInfo) { _wrappedInfo = wrappedInfo; _wrappedAttributes = _wrappedInfo.Attributes.Select <MBeanAttributeInfo, IOpenMBeanAttributeInfo>(x => new OpenMBeanAttributeInfoSupport(x)).ToList().AsReadOnly(); _wrappedOperations = _wrappedInfo.Operations.Select <MBeanOperationInfo, IOpenMBeanOperationInfo>(x => new OpenMBeanOperationInfoSupport(x)).ToList().AsReadOnly(); _wrappedConstructors = _wrappedInfo.Constructors.Select <MBeanConstructorInfo, IOpenMBeanConstructorInfo>(x => new OpenMBeanConstructorInfoSupport(x)).ToList().AsReadOnly(); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public org.neo4j.collection.RawIterator<Object[], org.neo4j.internal.kernel.api.exceptions.ProcedureException> apply(org.neo4j.kernel.api.proc.Context ctx, Object[] input, org.neo4j.kernel.api.ResourceTracker resourceTracker) throws org.neo4j.internal.kernel.api.exceptions.ProcedureException public override RawIterator <object[], ProcedureException> Apply(Context ctx, object[] input, ResourceTracker resourceTracker) { string query = input[0].ToString(); try { // Find all beans that match the query name pattern IEnumerator <ObjectName> names = _jmxServer.queryNames(new ObjectName(query), null).GetEnumerator(); // Then convert them to a Neo4j type system representation return(RawIterator.from(() => { if (!names.hasNext()) { return null; } ObjectName name = names.next(); try { MBeanInfo beanInfo = _jmxServer.getMBeanInfo(name); return new object[] { name.CanonicalName, beanInfo.Description, ToNeo4jValue(name, beanInfo.Attributes) }; } catch (JMException e) { throw new ProcedureException(Status.General.UnknownError, e, "JMX error while accessing `%s`, please report this. Message was: %s", name, e.Message); } })); } catch (MalformedObjectNameException) { throw new ProcedureException(Org.Neo4j.Kernel.Api.Exceptions.Status_Procedure.ProcedureCallFailed, "'%s' is an invalid JMX name pattern. Valid queries should use" + "the syntax outlined in the javax.management.ObjectName API documentation." + "For instance, try 'org.neo4j:*' to find all JMX beans of the 'org.neo4j' " + "domain, or '*:*' to find every JMX bean.", query); } }
public virtual void TestPurgeOldMetrics() { // create test source with a single metric counter of value 1 TestMetricsSourceAdapter.PurgableSource source = new TestMetricsSourceAdapter.PurgableSource (this); MetricsSourceBuilder sb = MetricsAnnotations.NewSourceBuilder(source); MetricsSource s = sb.Build(); IList <MetricsTag> injectedTags = new AList <MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter("tst", "tst", "testdesc", s, injectedTags , null, null, 1, false); MBeanInfo info = sa.GetMBeanInfo(); bool sawIt = false; foreach (MBeanAttributeInfo mBeanAttributeInfo in info.GetAttributes()) { sawIt |= mBeanAttributeInfo.GetName().Equals(source.lastKeyName); } Assert.True("The last generated metric is not exported to jmx", sawIt); Thread.Sleep(1000); // skip JMX cache TTL info = sa.GetMBeanInfo(); sawIt = false; foreach (MBeanAttributeInfo mBeanAttributeInfo_1 in info.GetAttributes()) { sawIt |= mBeanAttributeInfo_1.GetName().Equals(source.lastKeyName); } Assert.True("The last generated metric is not exported to jmx", sawIt); }
/// <summary> /// If provided MBean metadata is of open MBean, returns this metadata in form of <see cref="IOpenMBeanInfo"/>. Otherwise /// returns null. /// </summary> /// <param name="info">Possibly open MBean metadata.</param> /// <returns></returns> public static IOpenMBeanInfo TryAsOpen(this MBeanInfo info) { if (!IsOpen(info)) { return(null); } return(new OpenMBeanInfoSupport(info)); }
/// <summary> /// Casts provided MBean metadata to open MBean metadata object. Throws if proviede metadata is not of open MBean. /// </summary> /// <param name="info">Open MBean metadata.</param> /// <returns></returns> public static IOpenMBeanInfo AsOpen(this MBeanInfo info) { if (!IsOpen(info)) { throw new InvalidOperationException("This is not an open MBean info."); } return(new OpenMBeanInfoSupport(info)); }
public void TestGetMBeanInfo() { MBeanInfo info = _remoteServer.GetMBeanInfo("Tests:key=value"); MBeanInfo referenceInfo = _server.GetMBeanInfo("Tests:key=value"); Assert.IsTrue(info.IsOpen()); Assert.AreEqual(referenceInfo, info); }
public StandardMBean(object impl, Type intfType) { _internalInfo = MBeanInternalInfo.GetCached(intfType); _info = _internalInfo.MBeanInfo;//CreateMBeanInfo(impl, intfType); _impl = impl; _registration = impl as IMBeanRegistration; _notifListener = impl as INotificationListener; _notifEmitter = impl as INotificationEmitter; }
public bool IsInstanceOf(ObjectName name, string className) { name = GetNameWithDomain(name); IDynamicMBean bean = GetMBean(name); MBeanInfo info = bean.GetMBeanInfo(); TestPermissions(info.ClassName, null, name, MBeanPermissionAction.IsInstanceOf); return(info.ClassName == className); }
public MBeanInfo GetMBeanInfo(ObjectName name) { name = GetNameWithDomain(name); IDynamicMBean bean = GetMBean(name); MBeanInfo info = bean.GetMBeanInfo(); TestPermissions(info.ClassName, null, name, MBeanPermissionAction.GetMBeanInfo); return(info); }
protected internal override string GetClassName(MBeanInfo info) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Class iface = this.getMBeanInterface(); Type iface = this.MBeanInterface; //JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method: return(iface == null?base.GetClassName(info) : iface.FullName); }
protected internal override string GetDescription(MBeanInfo info) { Description description = DescribeClass(); if (description != null) { return(description.value()); } return(base.GetDescription(info)); }
public ResourceMetaDataType(MBeanInfo beanInfo) : base(beanInfo.Descriptor) { Description = new Description { Value = beanInfo.Description }; DynamicMBeanResourceClass = beanInfo.ClassName; FactoryType = beanInfo.Constructors.Select(x => new FactoryModelInfoType(x)).ToArray(); NotificationType = beanInfo.Notifications.Select(x => new NotificationModelInfoType(x)).ToArray(); OperationType = beanInfo.Operations.Select(x => new OperationModelInfoType(x)).ToArray(); PropertyType = beanInfo.Attributes.Select(x => new PropertyModelInfoType(x)).ToArray(); }
public MBeanInfo GetMBeanInfo() { if (_beanInfoDirty) { string description; if (_perfInstanceName != null) { description = string.Format(CultureInfo.CurrentCulture, "Performance counter MBean for {0} of {1}.", _perfObjectName, _perfInstanceName); } else { description = string.Format(CultureInfo.CurrentCulture, "Performance counter MBean for {0}.", _perfObjectName); } List <object> legalCountersToCreate = new List <object>(); List <object> legalCountersToRemove = new List <object>(); foreach (PerformanceCounter counter in _category.GetCounters(_perfInstanceName)) { if (_counters.ContainsKey(counter.CounterName)) { legalCountersToRemove.Add(counter.CounterName); } else { legalCountersToCreate.Add(counter.CounterName); } } MBeanOperationInfo addOperation = MBean.MutatorOperation("AddPerformanceCounter", "Adds new performance counter") .WithParameters( MBean.Parameter("counterName", "Name of new counter") .WithLimitedValues(legalCountersToCreate) .TypedAs(SimpleType.String) ) .Returning(SimpleType.Boolean)(); MBeanOperationInfo removeOperation = MBean.MutatorOperation("RemovePerformanceCounter", "Removes existing performance counter") .WithParameters( MBean.Parameter("counterName", "Name of new counter") .WithLimitedValues(legalCountersToRemove) .TypedAs(SimpleType.String) ) .Returning(SimpleType.Boolean)(); _beanInfo = MBean.Info(typeof(PerfCounterMBean).AssemblyQualifiedName, description) .WithAttributes(GetCurrentAttributes) .WithOperations(addOperation, removeOperation) .AndNothingElse()(); _beanInfoDirty = false; } return(_beanInfo); }
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(); }
private void MapBean(ObjectName originalBeanName) { Dictionary <string, string> props = new Dictionary <string, string>(originalBeanName.KeyPropertyList); props.Add(_proxyIndicatorProperty, "true"); ObjectName proxyName = new ObjectName(originalBeanName.Domain, props); MBeanInfo originalInfo = _server.GetMBeanInfo(originalBeanName); if (!(originalInfo is NetMX.OpenMBean.IOpenMBeanInfo)) { ProxyBean proxyBean = new ProxyBean(originalInfo, originalBeanName, _typeCache); _server.RegisterMBean(proxyBean, proxyName); } }
static void Main(string[] args) { ChannelFactory <IMBeanServerContract> factory = new ChannelFactory <IMBeanServerContract>( new BasicHttpBinding(), "http://localhost:1010/MBeanServer"); IMBeanServerContract proxy = factory.CreateChannel(); MBeanInfo info = proxy.GetMBeanInfo("Sample:name=SampleComponent"); IOpenMBeanInfo openInfo = (IOpenMBeanInfo)proxy.GetMBeanInfo("Sample:name=SampleComponent,OpenMBeanProxy=true"); proxy.Invoke("Sample:name=SampleComponent", "Start", new object[] { }); proxy.Invoke("Sample:name=SampleComponent", "IntOperation", new object[] { 7 }); proxy.Invoke("Sample:name=SampleComponent", "StringAndIntOperation", new object[] { "Ala", 7 }); }
private static bool CheckRoleClassNames(RoleInfo roleInfo, IEnumerable <ObjectName> objectNames, IMBeanServerConnection serverConnection) { foreach (ObjectName name in objectNames) { if (!serverConnection.IsRegistered(name)) { return(false); } MBeanInfo beanInfo = serverConnection.GetMBeanInfo(name); if (beanInfo.ClassName != roleInfo.RefMBeanClassName) { return(false); } } return(true); }
static void Main(string[] args) { AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); using (INetMXConnector connector = NetMXConnectorFactory.Connect(new Uri("http://localhost:9998/jmxws"), null)) { IMBeanServerConnection remoteServer = connector.MBeanServerConnection; ObjectName name = ":type=Sample2"; Console.WriteLine("******"); MBeanInfo info = remoteServer.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("******"); object counter = remoteServer.GetAttribute(name, "Value"); Console.WriteLine("Counter value is {0}", counter); remoteServer.SetAttribute(name, "Value", 5); counter = remoteServer.GetAttribute(name, "Value"); Console.WriteLine("Now, counter value is {0}", counter); counter = remoteServer.Invoke(name, "Add", new object[] { 5 }); counter = remoteServer.GetAttribute(name, "Value"); Console.WriteLine("Now, counter value is {0}", counter); counter = remoteServer.Invoke(name, "Reset", new object[] { }); counter = remoteServer.GetAttribute(name, "Value"); Console.WriteLine("Now, counter value is {0}", counter); Console.ReadKey(); } }
public void UnregisterMBean(ObjectName name) { name = GetNameWithDomain(name); IDynamicMBean bean = GetMBean(name); MBeanInfo info = bean.GetMBeanInfo(); TestPermissions(info.ClassName, null, name, MBeanPermissionAction.UnregisterMBean); IMBeanRegistration registration = new MBeanRegistrationHelper(bean as IMBeanRegistration); registration.PreDeregister(); _beans.Remove(name); registration.PostDeregister(); _delegate.SendNotification(new MBeanServerNotification(MBeanServerNotification.UnregistrationNotification, null, -1, name)); _domainSet.Remove(name.Domain); }
/// <summary>print all attributes' values</summary> /// <exception cref="System.Exception"/> public virtual void PrintAllValues() { Err("List of all the available keys:"); object val = null; foreach (ObjectName oname in hadoopObjectNames) { Err(">>>>>>>>jmx name: " + oname.GetCanonicalKeyPropertyListString()); MBeanInfo mbinfo = mbsc.GetMBeanInfo(oname); MBeanAttributeInfo[] mbinfos = mbinfo.GetAttributes(); foreach (MBeanAttributeInfo mb in mbinfos) { val = mbsc.GetAttribute(oname, mb.GetName()); System.Console.Out.Format(format, mb.GetName(), (val == null) ? string.Empty : val .ToString()); } } }
/// <exception cref="System.Exception"/> public virtual void PrintAllMatchedAttributes(string attrRegExp) { Err("List of the keys matching " + attrRegExp + " :"); object val = null; Sharpen.Pattern p = Sharpen.Pattern.Compile(attrRegExp); foreach (ObjectName oname in hadoopObjectNames) { Err(">>>>>>>>jmx name: " + oname.GetCanonicalKeyPropertyListString()); MBeanInfo mbinfo = mbsc.GetMBeanInfo(oname); MBeanAttributeInfo[] mbinfos = mbinfo.GetAttributes(); foreach (MBeanAttributeInfo mb in mbinfos) { if (p.Matcher(mb.GetName()).LookingAt()) { val = mbsc.GetAttribute(oname, mb.GetName()); System.Console.Out.Format(format, mb.GetName(), (val == null) ? string.Empty : val .ToString()); } } } }
static void Main(string[] args) { IApplicationContext ctx = ContextRegistry.GetContext(); using (INetMXConnector connector = NetMXConnectorFactory.Connect(new Uri("http://localhost:1010/MBeanServer"), null)) { IMBeanServerConnection remoteServer = connector.MBeanServerConnection; ObjectName name = "Sample:name=SampleComponent"; Console.WriteLine("******"); MBeanInfo info = remoteServer.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("******"); object counter = remoteServer.GetAttribute(name, "Count"); Console.WriteLine("Count value is {0}", counter); Console.WriteLine("Invoking StringAndIntOperation..."); remoteServer.Invoke(name, "StringAndIntOperation", new object[] { "a", 5 }); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } }
private MBeanInternalInfo(Type intfType) { List<MBeanOperationInfo> operations = new List<MBeanOperationInfo>(); List<MBeanConstructorInfo> constructors = new List<MBeanConstructorInfo>(); List<MBeanAttributeInfo> attributes = new List<MBeanAttributeInfo>(); List<MBeanNotificationInfo> notifications = new List<MBeanNotificationInfo>(); Dictionary<string, MBeanInternalOperationInfo> internalOperations = new Dictionary<string, MBeanInternalOperationInfo>(); Dictionary<string, MBeanInternalConstructorInfo> internalConstructors = new Dictionary<string, MBeanInternalConstructorInfo>(); Dictionary<string, MBeanInternalAttributeInfo> internalAttributes = new Dictionary<string, MBeanInternalAttributeInfo>(); List<MBeanInternalNotificationInfo> internalNotifications = new List<MBeanInternalNotificationInfo>(); List<Type> types = new List<Type>(); types.Add(intfType); types.AddRange(intfType.GetInterfaces()); IMBeanInfoFactory factory; if (intfType.IsDefined(typeof(OpenMBeanAttribute), true)) { factory = new OpenMBeanBeanInfoFactory(); } else { factory = new StandardBeanInfoFactory(); } foreach (Type t in types) { foreach (PropertyInfo propInfo in t.GetProperties()) { MBeanInternalAttributeInfo attrInfo = new MBeanInternalAttributeInfo(propInfo, factory); attributes.Add(attrInfo.AttributeInfo); internalAttributes.Add(attrInfo.AttributeInfo.Name, attrInfo); } foreach (EventInfo eventInfo in t.GetEvents()) { if (eventInfo.IsDefined(typeof(MBeanNotificationAttribute), true)) { MBeanInternalNotificationInfo notifInfo = new MBeanInternalNotificationInfo(eventInfo, factory); notifications.Add(notifInfo.NotificationInfo); internalNotifications.Add(notifInfo); } } foreach (ConstructorInfo methInfo in t.GetConstructors()) { MBeanInternalConstructorInfo constructorInfo = new MBeanInternalConstructorInfo(methInfo, factory); constructors.Add(constructorInfo.ConstructorInfo); internalConstructors.Add(constructorInfo.ConstructorInfo.Name, constructorInfo); } foreach (MethodInfo methInfo in t.GetMethods()) { if (!methInfo.IsSpecialName) { MBeanInternalOperationInfo operationInfo = new MBeanInternalOperationInfo(methInfo, factory); operations.Add(operationInfo.OperationInfo); internalOperations.Add(operationInfo.OperationInfo.Name, operationInfo); } } } _info = factory.CreateMBeanInfo(intfType, attributes, constructors, operations, notifications); _attributes = internalAttributes; _constructors = internalConstructors; _operations = internalOperations; _notifications = internalNotifications; }
public void TestJsr262Connector() { var jsr262ConnectorProvider = new Jsr262ConnectorProvider(); INetMXConnector connector = null; string uri = string.Format("http://{0}:8888/MBeanServer", GetLocalAddress()); Logger.DebugFormat("URI used to connect to the MBeanServer: {0}", uri); try { var url = new Uri(uri); connector = jsr262ConnectorProvider.NewNetMXConnector(url); } catch (Exception) { string msg = string.Format("Unable to create a client connection to the MBeanServer: URI-{0}", uri); Logger.Error(msg); Assert.Fail(msg); } connector.Connect(null); using (connector) { Logger.Debug("Starting the connection..."); IMBeanServerConnection remoteServer = connector.MBeanServerConnection; var name = new ObjectName("MBeanServer:component=ValidMBean"); MBeanInfo info = remoteServer.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) [Action]" : "Operation ResetCounter (Sets counter value to 0) [Action]", operation); index++; } object counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(0, counter); remoteServer.SetAttribute(name, "Counter", 5); counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(5, counter); remoteServer.Invoke(name, "AddAmount", new object[] { 5 }); counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(10, counter); remoteServer.Invoke(name, "ResetCounter", new object[] { }); counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(0, counter); Logger.Debug("Completed the JSR262 server-side tests!"); } }
static void Main(string[] args) { var connectorServerFactory = new Jsr262ConnectorServerFactory(); var connectorFactory = new Jsr262ConnectorFactory(); IMBeanServer server = MBeanServerFactory.CreateMBeanServer(); Sample o = new Sample(); ObjectName name = new ObjectName("Sample:a=b"); server.RegisterMBean(o, name); Uri serviceUrl = new Uri("http://localhost:12345/MBeanServer"); using (INetMXConnectorServer connectorServer = connectorServerFactory.NewNetMXConnectorServer(serviceUrl, server)) { connectorServer.Start(); using (INetMXConnector connector = connectorFactory.Connect(new Uri("http://localhost:12345/MBeanServer"), null)) { IMBeanServerConnection remoteServer = connector.MBeanServerConnection; string defaultDomain = remoteServer.GetDefaultDomain(); Console.WriteLine("Default domain is {0}", defaultDomain); IEnumerable <string> domains = remoteServer.GetDomains(); Console.WriteLine("Following domains are registereds:"); foreach (string domain in domains) { Console.WriteLine(" * {0}", domain); } IEnumerable <ObjectName> names = remoteServer.QueryNames(null, new EqualExp(new AttributeExp("Counter"), new ConstantExp <Number>(0))); Console.WriteLine("Following MBeans have attribute counter with value 0:"); foreach (ObjectName objectName in names) { Console.WriteLine(" * {0}", objectName); } //remoteServer.AddNotificationListener(name, CounterChanged, null, null); Console.WriteLine("******"); MBeanInfo info = remoteServer.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("******"); object counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Counter value is {0}", counter); remoteServer.SetAttribute(name, "Counter", 5); counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Now, counter value is {0}", counter); counter = remoteServer.Invoke(name, "AddAmount", new object[] { 5 }); counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Now, counter value is {0}. Press <enter>", counter); Console.ReadLine(); counter = remoteServer.Invoke(name, "ResetCounter", new object[] { }); counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Now, counter value is {0}", counter); Console.WriteLine("Press <enter> to exit."); Console.ReadLine(); } } }
public ProxyBean(MBeanInfo originalBeanInfo, ObjectName originalName, OpenTypeCache typeCache) { _originalName = originalName; _typeCache = typeCache; List <MBeanAttributeInfo> attributes = new List <MBeanAttributeInfo>(); List <MBeanOperationInfo> operations = new List <MBeanOperationInfo>(); List <MBeanConstructorInfo> constructors = new List <MBeanConstructorInfo>(); foreach (MBeanAttributeInfo attributeInfo in originalBeanInfo.Attributes) { if (attributeInfo.Readable) { Type attributeType = Type.GetType(attributeInfo.Type, true); OpenType mappedType = _typeCache.MapType(attributeType); if (mappedType != null) { Descriptor descriptor = new Descriptor(); //TODO: Copty fields descriptor.SetField(OpenTypeDescriptor.Field, mappedType); MBeanAttributeInfo openInfo = new MBeanAttributeInfo( attributeInfo.Name, attributeInfo.Description, mappedType.Representation.AssemblyQualifiedName, attributeInfo.Readable, false, descriptor); attributes.Add(openInfo); _attributeTypes[attributeInfo.Name] = new OpenAndClrType(attributeType, mappedType); } } } foreach (MBeanOperationInfo operationInfo in originalBeanInfo.Operations) { Type returnType = Type.GetType(operationInfo.ReturnType, true); OpenType mappedReturnType = _typeCache.MapType(returnType); if (mappedReturnType == null) { continue; } Descriptor descriptor = new Descriptor(); descriptor.SetField(OpenTypeDescriptor.Field, mappedReturnType); bool success = true; List <MBeanParameterInfo> openParameters = new List <MBeanParameterInfo>(); foreach (MBeanParameterInfo parameterInfo in operationInfo.Signature) { OpenType mappedParamType = _typeCache.MapType(Type.GetType(parameterInfo.Type, true)); if (mappedParamType == null || mappedParamType.Kind != OpenTypeKind.SimpleType) { success = false; break; } Descriptor paramDescriptor = new Descriptor(); //TODO: Copy fields paramDescriptor.SetField(OpenTypeDescriptor.Field, mappedParamType); openParameters.Add(new MBeanParameterInfo(parameterInfo.Name, parameterInfo.Description, mappedParamType.Representation.AssemblyQualifiedName, paramDescriptor)); } if (!success) { continue; } MBeanOperationInfo openInfo = new MBeanOperationInfo(operationInfo.Name, operationInfo.Description, mappedReturnType.Representation.AssemblyQualifiedName, openParameters, operationInfo.Impact, descriptor); operations.Add(openInfo); _operationReturnTypes[operationInfo.Name] = new OpenAndClrType(returnType, mappedReturnType); } _info = new MBeanInfo(originalBeanInfo.ClassName, originalBeanInfo.Description, attributes, constructors, operations, originalBeanInfo.Notifications); }
/// <summary> /// Checks whether provided MBean info is of open MBean. /// </summary> /// <param name="info">MBean metadata.</param> /// <returns></returns> public static bool IsOpen(this MBeanInfo info) { return(info.Attributes.All(x => x.IsOpen()) && info.Operations.All(x => x.IsOpen()) && info.Constructors.All(x => x.IsOpen())); }
public ProxyBean(MBeanInfo originalBeanInfo, ObjectName originalName, OpenTypeCache typeCache) { _originalName = originalName; _typeCache = typeCache; List<MBeanAttributeInfo> attributes = new List<MBeanAttributeInfo>(); List<MBeanOperationInfo> operations = new List<MBeanOperationInfo>(); List<MBeanConstructorInfo> constructors = new List<MBeanConstructorInfo>(); foreach (MBeanAttributeInfo attributeInfo in originalBeanInfo.Attributes) { if (attributeInfo.Readable) { Type attributeType = Type.GetType(attributeInfo.Type, true); OpenType mappedType = _typeCache.MapType(attributeType); if (mappedType != null) { Descriptor descriptor = new Descriptor(); //TODO: Copty fields descriptor.SetField(OpenTypeDescriptor.Field, mappedType); MBeanAttributeInfo openInfo = new MBeanAttributeInfo( attributeInfo.Name, attributeInfo.Description, mappedType.Representation.AssemblyQualifiedName, attributeInfo.Readable, false, descriptor); attributes.Add(openInfo); _attributeTypes[attributeInfo.Name] = new OpenAndClrType(attributeType, mappedType); } } } foreach (MBeanOperationInfo operationInfo in originalBeanInfo.Operations) { Type returnType = Type.GetType(operationInfo.ReturnType, true); OpenType mappedReturnType = _typeCache.MapType(returnType); if (mappedReturnType == null) { continue; } Descriptor descriptor = new Descriptor(); descriptor.SetField(OpenTypeDescriptor.Field, mappedReturnType); bool success = true; List<MBeanParameterInfo> openParameters = new List<MBeanParameterInfo>(); foreach (MBeanParameterInfo parameterInfo in operationInfo.Signature) { OpenType mappedParamType = _typeCache.MapType(Type.GetType(parameterInfo.Type, true)); if (mappedParamType == null || mappedParamType.Kind != OpenTypeKind.SimpleType) { success = false; break; } Descriptor paramDescriptor = new Descriptor(); //TODO: Copy fields paramDescriptor.SetField(OpenTypeDescriptor.Field, mappedParamType); openParameters.Add(new MBeanParameterInfo(parameterInfo.Name, parameterInfo.Description, mappedParamType.Representation.AssemblyQualifiedName, paramDescriptor)); } if (!success) { continue; } MBeanOperationInfo openInfo = new MBeanOperationInfo(operationInfo.Name, operationInfo.Description, mappedReturnType.Representation.AssemblyQualifiedName, openParameters, operationInfo.Impact, descriptor); operations.Add(openInfo); _operationReturnTypes[operationInfo.Name] = new OpenAndClrType(returnType, mappedReturnType); } _info = new MBeanInfo(originalBeanInfo.ClassName, originalBeanInfo.Description, attributes, constructors, operations, originalBeanInfo.Notifications); }
static void Main(string[] args) { var connectorServerFactory = new RemotingConnectorServerFactory(100, new NullSecurityProvider()); var connectorFactory = new RemotingConnectorFactory(new NotificationFetcherConfig(true, TimeSpan.FromSeconds(1))); IMBeanServer server = MBeanServerFactory.CreateMBeanServer(); Sample o = new Sample(); ObjectName name = new ObjectName("Sample:a=b"); server.RegisterMBean(o, name); Uri serviceUrl = new Uri("tcp://localhost:1234/MBeanServer.tcp"); using (INetMXConnectorServer connectorServer = connectorServerFactory.NewNetMXConnectorServer(serviceUrl, server)) { connectorServer.Start(); using (INetMXConnector connector = connectorFactory.Connect(serviceUrl, null)) { IMBeanServerConnection remoteServer = connector.MBeanServerConnection; remoteServer.AddNotificationListener(name, CounterChanged, null, null); Console.WriteLine("******"); MBeanInfo info = remoteServer.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("******"); object counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Counter value is {0}", counter); remoteServer.SetAttribute(name, "Counter", 5); counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Now, counter value is {0}", counter); counter = remoteServer.Invoke(name, "AddAmount", new object[] { 5 }); counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Now, counter value is {0}", counter); counter = remoteServer.Invoke(name, "ResetCounter", new object[] { }); counter = remoteServer.GetAttribute(name, "Counter"); Console.WriteLine("Now, counter value is {0}", counter); Console.ReadKey(); } } }
public MBeanInfo GetMBeanInfo() { if (_beanInfoDirty) { string description; if (_perfInstanceName != null) { description = string.Format(CultureInfo.CurrentCulture, "Performance counter MBean for {0} of {1}.", _perfObjectName, _perfInstanceName); } else { description = string.Format(CultureInfo.CurrentCulture, "Performance counter MBean for {0}.", _perfObjectName); } List<object> legalCountersToCreate = new List<object>(); List<object> legalCountersToRemove = new List<object>(); foreach (PerformanceCounter counter in _category.GetCounters(_perfInstanceName)) { if (_counters.ContainsKey(counter.CounterName)) { legalCountersToRemove.Add(counter.CounterName); } else { legalCountersToCreate.Add(counter.CounterName); } } MBeanOperationInfo addOperation = MBean.MutatorOperation("AddPerformanceCounter", "Adds new performance counter") .WithParameters( MBean.Parameter("counterName", "Name of new counter") .WithLimitedValues(legalCountersToCreate) .TypedAs(SimpleType.String) ) .Returning(SimpleType.Boolean)(); MBeanOperationInfo removeOperation = MBean.MutatorOperation("RemovePerformanceCounter", "Removes existing performance counter") .WithParameters( MBean.Parameter("counterName", "Name of new counter") .WithLimitedValues(legalCountersToRemove) .TypedAs(SimpleType.String) ) .Returning(SimpleType.Boolean)(); _beanInfo = MBean.Info(typeof(PerfCounterMBean).AssemblyQualifiedName, description) .WithAttributes(GetCurrentAttributes) .WithOperations(addOperation, removeOperation) .AndNothingElse()(); _beanInfoDirty = false; } return _beanInfo; }
private void UpdateInfoCache() { Log.Debug("Updating info cache..."); infoCache = infoBuilder.Reset(lastRecs).Get(); Log.Debug("Done"); }