之前看hadoop的rmi配置,发现针对每个进程都配置了单独的项,除开启动的问题不说,那么jmx的MBean如果使用的是getPlatformMBeanServer来注册,在多个java进程下会共享吗,写了个简单的测试程序来验证
public static void main(String[] args) throws Throwable {
MBeanServer ms = ManagementFactory.getPlatformMBeanServer();
System.out.println(ManagementFactory.getRuntimeMXBean().getName());
Hello object = new Hello();
ObjectName name = new ObjectName("abc","kk","vv");
ms.registerMBean(object, name);
LocateRegistry.createRegistry(9998);
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9998/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, ms);
cs.start();
}
这段代码中为了验证是不同的进程,还特意调用
ManagementFactory.getRuntimeMXBean().getName()
这个返回的是 processId + "@" + userName 的形式,例如 12737@dikar,然后为了验证这个进程id,我们可以使用jps查看下,jps显示的内容是 processId + 进程程序名。
利用jconsole连接上去,发现第一个进程注册的mbean在第2个进程上根本看不到,也就是mbean注册并不是共享的方式,也就说明了为什么hadoop中多个java进程的配置是单独开的了。
分享到:
相关推荐
本资料包"基于Java的进程通信.zip"可能包含了关于Java进程通信的示例代码、教程文档和其他相关资源,以帮助理解这一主题。 首先,我们需要了解什么是进程。在操作系统中,进程是程序的一次执行实例,每个进程都有...
在Java编程环境中,监控任务管理器中的特定进程是一项常见的需求,尤其在系统管理和性能优化时。这个任务可以通过Java的多种工具和库来实现,其中包括Java的`Runtime`类、`ProcessBuilder`类以及第三方库如JMX(Java...
RMI是Java提供的一种机制,它允许一个对象调用另一个在网络另一端的对象的方法,就像它们在同一个进程中一样。RMI的关键概念包括远程接口、远程对象和 stubs(存根)。远程接口定义了可供远程调用的方法,远程对象...
- **启动类加载器(Bootstrap ClassLoader)**:加载 Java 核心库(如 java.lang.* 包下的类),不可被应用程序直接引用。 - **扩展类加载器(Extension ClassLoader)**:加载扩展目录中的类库或被指定为扩展类库的 JAR...
- **系统CPU和Java进程CPU**:通过`top`或`jstat`命令监控CPU使用率,过高可能表示存在性能瓶颈或资源争抢,需要进一步定位问题。 - **方法级CPU消耗**:通过剖析工具如JProfiler,可以细化到具体方法的CPU消耗,...
这个函数会加载`Java`类,并初始化连接到`Erlang`的`MBean`服务器。 3. **建立连接**:`Jinterface`使用`Erlang`的分布式节点概念来与`Java`建立连接。你需要在`Java`端创建一个`Erlang`节点对象,然后在`Erlang`端...
Java中的多线程技术是并发编程的基础,它允许程序同时执行多个任务。Java线程架构主要包括线程的创建、启动、同步和通信等方面。通过使用线程池、同步锁、条件变量等高级特性,可以有效地管理和控制线程的行为,提高...
它可以通过JMX(Java Management Extensions)接口连接到本地或远程的Java进程,提供内存、线程、类加载、MBean服务器和Garbage Collector等信息的实时监控。 2. **VisualVM**: VisualVM也是JDK自带的一款强大工具...
JMX API提供了一套标准化的方法来暴露管理信息和操作,包括但不限于计数器、监视器和进程状态等。通过JMX API,可以轻松调用管理任务和批量作业,并与管理组件进行交互。此外,它还支持远程访问管理组件以及通知管理...
6. **Java Management API (JMAPI)**:这是一个标准的API,允许开发者创建和注册管理 beans 来获取系统级别的信息,如网络连接、磁盘空间、进程信息等。 7. **Java诊断工具**:如JDK自带的`jinfo`、`jmap`、`jstack...
7. **远程监控**:除了本地应用,VisualVM还能连接到远程Java进程进行监控。这需要开启RMI服务,并配置相应的安全策略和端口。 对于远程监控JBoss服务,需要修改JDK的JMX配置文件,打开JMX远程访问,并在JBoss启动...
1. **JVM内置工具**:Java虚拟机(JVM)提供了多种内置的诊断工具,如`jps`(Java进程状态工具)、`jstat`(Java统计监视工具)、`jinfo`(配置信息工具)、`jmap`(映射工具)、`jhat`(堆分析工具)和`jstack`...
JMX Agent是一个包含MBeanServer和附加服务的Java进程。这些服务同样通过MBean的形式发布。Agent通过各种Adapter和Connector与外部(JVM之外)进行通信,适应不同的协议如HTTP、SNMP等。Adapter主要处理特定协议的...
例如,jcmd可以发送诊断命令请求到JVM,jhat用来分析堆转储文件,jinfo用于查看和调整Java进程的JVM参数等。 6. **线程分析(Thread Analysis)**:Java线程是性能调优的另一个关键点。开发者可以通过jstack命令来...
JMX Agent是包含MBean Server及其管理的MBean集合的Java进程。此外,它还可能包含一组MBean Service,这些服务也以MBean的形式对外提供。Agent通过各种适配器和连接器与外部环境通信,支持不同协议下的远程管理请求...
- 使用JConsole工具的MBean管理页面观察FMserver模块中各主要线程的消息发送情况,发现消息积压在统一预处理队列处。 - 通过MAT分析堆栈信息,发现Young Generation内存释放正常,但Old Generation堆栈释放不彻底...
`jps`命令是Java的一个实用工具,类似于Linux的`ps`命令,用于查看当前系统中运行的Java进程。它会显示进程ID以及对应的主类名称。例如,`jps`会显示所有由Java虚拟机启动的进程。 2. **jinfo(Java Configuration...
**JMX Agent** 是一个Java进程,包含MBeanServer以及附加的MBean服务。这些服务也以MBean的形式发布,允许外部系统通过特定的适配器和连接器与JMX Agent交互。 **Protocol Adapters and Connectors** 用于JMX Agent...
`ModelAgent.java`和`Car.java`展示了如何创建一个Model MBean。Model MBean通过`javax.management.modelmbean.ModelMBean`接口和一个描述符文件(如`car-mbean-descriptor.xml`)定义其行为。 描述符文件(如`car-...
JConsole是Java开发工具包(JDK)自带的一个图形界面工具,可以直接连接到运行中的Java进程,查看和操作MBeans。 总结起来,JMX规范提供了一套标准的接口和协议,使得开发者能够轻松地在Java应用中集成管理功能。...