package test.jmx;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class HelloAgent {
private MBeanServer mbs = null;
public HelloAgent() {
//create a MBeanServer
mbs = MBeanServerFactory.createMBeanServer("HelloAgent");
//create an adapter
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
//create a MBean
HelloWorld hw = new HelloWorld("hello boys!");
ObjectName adapterName = null;
ObjectName helloWorldName = null;
try {
adapterName = new ObjectName(
"HelloAgentW:name=htmladaffpter,port=9092");
//regisetr the adapter to the MBeanServer
mbs.registerMBean(adapter, adapterName);
//declare the port which the adapter user
adapter.setPort(9092);
//start the adapter
adapter.start();
helloWorldName = new ObjectName("HelloAgentW:name=hffelloWorld1");
mbs.registerMBean(hw, helloWorldName);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
//declare the agent and start the adapter
HelloAgent agent = new HelloAgent();
}
}
package test.jmx;
public class HelloWorld implements HelloWorldMBean {
public String hello;
public HelloWorld() {
this.hello = "Hello World! I am a Standard MBean";
}
public HelloWorld(String hello) {
this.hello = hello;
}
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
public void sayHello() {
System.out.println(hello);
}
}
package test.jmx;
public interface HelloWorldMBean {
public void sayHello();
public void setHello(String hello);
public String getHello();
}
package test.jmx;
import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import com.sun.jdmk.comm.RmiConnectorServer;
public class RMIAgent {
public static void main(String[] args) {
MBeanServer mbs = MBeanServerFactory.createMBeanServer("HelloAgent");
RmiConnectorServer connector = new RmiConnectorServer();
ObjectName connectorName = null;
try {
connectorName = new ObjectName("HelloAgent:name=RMIConnector");
mbs.registerMBean(connector, connectorName);
HelloWorld hw = new HelloWorld("hello boys!");
ObjectName helloWorldName = new ObjectName(
"HelloAgent:name=helloWorld1");
mbs.registerMBean(hw, helloWorldName);
connector.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package test.jmx;
import javax.management.Attribute;
import javax.management.ObjectName;
import com.sun.jdmk.comm.RmiConnectorAddress;
import com.sun.jdmk.comm.RmiConnectorClient;
public class RMIManager {
public static void main(String[] args) {
RmiConnectorClient client = new RmiConnectorClient();
RmiConnectorAddress address = new RmiConnectorAddress();
try {
client.connect(address);
ObjectName helloWorldName = ObjectName
.getInstance("HelloAgent:name=helloWorld1");
client.invoke(helloWorldName, "sayHello", null, null);
client.setAttribute(helloWorldName, new Attribute("Hello",
new String("hello girls!")));
client.invoke(helloWorldName, "sayHello", null, null);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
分享到:
相关推荐
《JMX技术介绍》一书显然是为了深入探讨这一技术而编写的,配套源代码则提供了实践示例,帮助读者更好地理解和应用JMX。 1. JMX架构: JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端...
在JDK 1.3和1.4版本中,JMX实现需要单独下载,而在JDK 5.0及更高版本中,JMX已经被内嵌,可以直接使用。对于JDK 1.3和1.4,你需要从Sun官方网站下载jmx-1_2_1-ri.zip和jmx_remote-1_0_1_03-ri.zip,将对应的JAR文件...
这种配置虽然能够实现 JMX 监控和管理功能,但存在安全漏洞。默认情况下,这个 JMX Agent 的 RMI 端口是不加密的,并且没有进行身份验证,这意味着任何人都可以连接到该端口并对应用程序进行操作。 Java JMX Agent...
在本实例中,我们将探讨`jmxdemo`项目,这是一个展示JMX如何工作的示例代码。 在`jmxdemo`这个压缩包中,包含了用于演示JMX功能的源代码。通过分析和运行这些源代码,我们可以深入理解JMX的工作原理及其在实际开发...
3. `jmxri.jar`和`jmxtools.jar`:这两个JAR文件是JMX RMI实现的核心库,分别包含了RMI服务器和客户端的实现,使得远程JMX交互成为可能。 4. `jmxri.properties`和`jmxtools.properties`:这些配置文件可能包含了...
"Download"表明这是一个可以下载的资源,可能包含了实现JMX HelloWorld的源代码。 **描述解析:** 描述部分为空,但根据标题推测,这可能是一个简单的教程,通过“Hello World”这个经典的编程范例,介绍如何使用...
5. **编写客户端代码**:在远程客户端,使用JMX连接器API建立到MBeanServer的连接,并进行管理操作。 JMX可以与其他Java技术结合使用,如Spring框架中的Spring JMX,它提供了更方便的集成方式。此外,许多开源工具...
通过深入研究jmxdemo的源代码,你将能更好地掌握JMX的用法,了解如何在实际项目中运用这一强大工具来管理和监控Java应用。同时,VisualVM的使用也能提升你对Java应用性能分析的能力,帮助你及时发现和解决潜在问题。
在标签"源码"中,博主可能分享了如何阅读和理解JMX相关的源代码,包括MBean接口、实现类以及MBeanServer和JMX连接器的使用。这有助于深入理解JMX的工作原理和交互方式。 "工具"标签暗示了博主可能讨论了使用JMX的...
"plugins"目录下则是实际的Eclipse插件代码,它们是可执行的Java模块,实现了Eclipse插件生命周期和扩展点。对于"JMX 连接工具"插件,可能包含以下组件: 1. `org.eclipse.ui.plugin`: 提供基础的Eclipse插件结构,...
通过以上讲解,我们可以看到JMX与Spring的结合极大地增强了Java应用的管理能力,使得开发者可以在不修改业务代码的情况下,轻松地监控和调整应用的行为。这种灵活性对于大型复杂系统的运维和调优至关重要。
### 网络管理之JMX开发实战 #### JMX技术概述 JMX(Java Management Extensions)是一...此外,还介绍了几种不同的JMX实现以及如何使用Timer MBean。这些知识对于理解JMX的工作原理及其在网络管理中的应用至关重要。
这里提到的三个ZIP文件包含了不同版本的JMX实现和规范,分别是: 1. **jmx-1_2_1-ri.zip**:这个文件提供了JMX 1.2.1版本的运行时实现(Runtime Implementation,RI)。RI是JMX规范的具体实现,允许开发者在Java...
- **JMX客户端**:可以是任何实现了JMX API的程序,用于查询和管理MBeans。 #### JMX在Java EE环境下的应用 在Java EE环境下,JMX的用途更为广泛,不仅可以管理容器级别的资源,还可以深入到应用程序内部,提供...
此外,“src”目录可能包含了示例代码,帮助读者理解如何在实践中实现JMX功能。这些代码可能展示了如何定义MBeans、注册它们到MBean服务器,以及如何通过JMX API执行管理操作。 学习JMX有助于开发者在遇到性能问题...
Java Management Extensions(JMX)是Java平台上的一个标准...通过理解MBean、MBean Server和连接器的工作原理,以及如何编写和使用JMX代码,我们可以更好地控制和优化我们的应用程序,提升系统的可维护性和稳定性。
这通常通过在Java代码中添加MBean(Managed Bean)来实现,MBean是JMX中的管理对象,代表了要管理的资源或服务。你可以自定义MBean,定义其属性、操作和通知。然后,通过实现`javax.management.MBeanServer`接口来...
通过使用JMX,开发者能够创建设备层的Java代码,同时代理层的灵活性也支持对Java代理的管理。部署层则整合了管理和监控系统的解决方案,允许开发者利用JMX规范来增强或替代现存的管理策略。JMX还可以与现有的管理和...
4. **客户端代码**:可能包含用于连接到JMX服务器并操作MBeans的代码,这可以是另一个Java程序或使用图形工具如JConsole。 5. **测试脚本**:如果`jmxtest`包含了测试用例,那么它可能包含了JUnit或其他测试框架的...
这个压缩包"JMX Html适配器jar"很可能包含了实现HTML适配器功能的Java类库,可能包括了服务器端的适配器组件以及相关的配置示例。使用时,你需要将其解压并添加到你的项目类路径中,然后按照上述步骤进行配置和使用...