如果我有一个类,它也是一个mbean,并且我在我的代码中仅在一个线程中使用该类的函数,并且还通过jmx调用一个函数,我应该同步该代码吗?谢谢 最佳答案 代码应该是线程安全的,是的。如果您选择使用synchronized使其成为线程安全的,那由您决定。通过JMX调用的MBean将由容器调用,使用它自己的线程,与您自己的代码的线程分开。 关于java-jmxmbean线程安全,我们在StackOverflow上找到一个类似的问题: https://stackove
我正在使用Spring4.0.3.RELEASE和EHcache2.8.1。在JBoss7.1.1上通过applicationContext.xml中的以下配置,我的缓存运行良好。现在我想用MBean添加监控功能。我更改了applicationContext.xml中的配置,如下所示-添加了2个新bean“managementService”和“mbeanServer”,没有其他更改。这是当前配置。使用此配置,我在应用程序服务器启动时收到以下错误。14:05:32,208ERROR[org.springframework.web.context.ContextLoader](MSCse
我在Java1.6中使用平台MBean服务器,在OSGi容器中运行。主要将MBean用于统计计数器和事件。它们的实现在一个包中,但它们在其他几个包中实例化。每个MBean都会自动向平台MBean服务器注册自己。问题是,当我通过JMX附加并查询MBean时,我只获得当前已注册的那些,并且它们在实例化之前不会被注册(要么是因为静态类在第一次访问之前不存在,或者因为bundle还没有开始,或者计数器在某些逻辑中很深,直到第一次使用才会存在)我需要某种方式来订阅MBeans服务器中的“注册”事件。或者其他一些确定何时有新的MBean添加到服务器的方法。检测已删除的MBean会是一个额外的好
我已经开始使用MBean来公开有关应用程序的一些信息。几乎全部的HOWTO/教程/博客文章/在线示例都在教您如何实现MBean并将其注册到MBean服务器,但从未提及(或只是粗略地)从服务器注销MBean。我担心一个MBean需要引用一个相当重量级的对象才能提供有关该对象的状态信息。PlatformMBeanServer是否维护对MBean的弱引用或其他类似技巧,以确保在您的应用程序不再持有对它的任何引用时它最终得到GC?通常不需要取消注册,从而解释为什么没有人在JMX教程中谈论它? 最佳答案 您不能“弱”地向服务器注册一个MBea
我正在尝试构建一个应该在每次启动服务器时自动启动的JBoss服务。我的服务有以下类结构:publicinterfaceCumbiaXPMServiceMBeanextendsorg.jboss.system.ServiceMBeanpublicclassCumbiaXPMServiceextendsorg.jboss.system.ServiceMBeanSupportimplementsCumbiaXPMServiceMBean我还有以下配置文件--jboss-service.xml--用于我的服务:jcumbia:service=cumbiaConsoleXPMEngine我的问题
例如启动Elasticsearch5.5时:主要错误无法注册mbeanjava.security.AccessControlException:访问被拒绝(“javax.management.MBeanTrustPermission”“register”) 最佳答案 OracleJava1.8.0_131的解决方法是打开文件/lib/security/java.policy并将此行添加到grant部分(即大括号之间):permissionjavax.management.MBeanTrustPermission"register";
根据Spring文档以及互联网上一些论坛的各种示例配置,我的应用程序上下文文件如下所示:0我在没有任何容器的情况下在纯JVM上运行它。我可以通过JConsole连接到我的进程,但是MBean没有出现。但是,以编程方式注册bean会成功公开它。MBeanServermbeanServer=ManagementFactory.getPlatformMBeanServer();DHdh=newDH(0);mbeanServer.registerMBean(dh,newObjectName("bean:name=dH1"));我试过使用Spring配置,但没有成功。我认为该bean没有注册到可
有什么区别:标准MBean动态MBean它们各自的优缺点是什么?我们什么时候应该选择这两个组件中的任何一个来管理资源? 最佳答案 标准mbean具有固定的元数据,在MBean的生命周期内不会更改。动态MBean动态定义它们的元数据,并且可以修改和重新发布它们的元数据。想想这个与Java的[糟糕]设计类比:假设您编写了一个列出目录中文件数量的类。标准的类方法可能如下所示:publicintgetFileCount(StringdirectoryName)另一方面,此类的DynamicMBean版本在启动时没有任何方法,但是当它启动时,
设计JMXMBean的一些最佳实践是什么?有哪些您认为特别有用的例子吗? 最佳答案 返回绝对计数而不是比率。例如返回数据库提交的总数,而不是得出速率。通过这样做,您的客户可以在他们需要的任何时间段内自行监控和得出利率。也许更重要的是,这可以保护客户在不经常连接的情况下不会错过速率激增的情况。如果您主要通过HTML界面使用JMXbean,那么我可以遵循几种做法。下面通常意味着你的JMXbean应该包装一个现有的bean(而不是仅仅JMX暴露现有的方法):输出代表返回对象的格式正确的字符串。获取默认的toString()输出几乎毫无用处
我试图让一个类实现一个MBean接口(interface),这样我就可以在运行时查询属性。我要查询的类如下publicclassProfileCacheimplementsProfileCacheInterfaceMBean{privateLoggerlogger=Logger.getLogger(ProfileCache.class);privateConcurrentMapcache;publicProfileCache(ConcurrentMapcache){this.cache=cache;}/***Updatethecacheentryforagivenuserid*@par