Ejemplo n.º 1
0
 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)
     {
     }
 }
Ejemplo n.º 2
0
 /// <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();
 }
Ejemplo n.º 3
0
//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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 /// <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));
 }
Ejemplo n.º 6
0
 /// <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));
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        protected internal override string GetDescription(MBeanInfo info)
        {
            Description description = DescribeClass();

            if (description != null)
            {
                return(description.value());
            }
            return(base.GetDescription(info));
        }
Ejemplo n.º 14
0
 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();
 }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
 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 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!");
        }
Ejemplo n.º 18
0
        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();
        }
Ejemplo n.º 19
0
        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);
            }
        }
Ejemplo n.º 20
0
        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 });
        }
Ejemplo n.º 21
0
 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);
 }
Ejemplo n.º 22
0
        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();
            }
        }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        /// <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());
                }
            }
        }
Ejemplo n.º 25
0
        /// <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());
                    }
                }
            }
        }
Ejemplo n.º 26
0
        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();
            }
        }
Ejemplo n.º 27
0
        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!");
            }
        }
Ejemplo n.º 29
0
        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();
                }
            }
        }
Ejemplo n.º 30
0
        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);
        }
Ejemplo n.º 31
0
 /// <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()));
 }
Ejemplo n.º 32
0
        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);
        }
Ejemplo n.º 33
0
        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();
                }
            }
        }
Ejemplo n.º 34
0
        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;
        }
Ejemplo n.º 35
0
 private void UpdateInfoCache()
 {
     Log.Debug("Updating info cache...");
     infoCache = infoBuilder.Reset(lastRecs).Get();
     Log.Debug("Done");
 }