`
boyfuxin
  • 浏览: 14160 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

转来的JMX练习内容

阅读更多
   JMX,是SUN公司提出来的一个管理体系结构,规定了规范、设计模式与接口等,它可以对网络、应用程序、服务及系统资源等进行监控与管理。JMX体系结构主要分为三层:装配层、代理层和分布式服务层。其它基础及介绍性文字在这里就不多介绍,可以在GOOGLE到很详细的资料。现在主要是讨论一下jmx-in-action RMI连接子的用不了的问题(第三章)。
   在学习jmx-in-action的第三章时,你会发现按书本那样做你是无法编译通过的,主要原因就是它里面提供的类RmiConnectonServer及RmiConnectorClient等类已经不被现在的API支持了,所以要换其它的类或是接口来实现。先来看一下RMIClientFactory类:
package jmxbook.ch3;

import javax.management.*;
import com.sun.jdmk.comm.*;
//红色部分是加进来的
import javax.management.remote.JMXServiceURL;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.MBeanServerConnection;
import java.rmi.*;
public class RMIClientFactory
{

  public static MBeanServerConnection getClient()
  {
    /**这块代码就不要了
    RmiConnectorClient client = new RmiConnectorClient();
    RmiConnectorAddress address = new RmiConnectorAddress();
    address.setPort( 2099 );
    System.out.println("\t\tTYPE\t= " + address.getConnectorType ());
    System.out.println("\t\tPORT\t= " + address.getPort());
    System.out.println("\t\tHOST\t= " + address.getHost());
    System.out.println("\t\tSERVER\t= " + address.getName());
     **/
   //这是加进来的代码
   MBeanServerConnection mbsc = null;
   
    try
    {
    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");  //JMX连接子服务端的地址
    JMXConnector jmxc = JMXConnectorFactory.connect(url, null); //创建到服务端的连接
     mbsc = jmxc.getMBeanServerConnection();  获得代表远程MBean server的一个MBeanServerConnection 对象
//client.connect( address );
    }
    catch( Exception e )
    {
      ExceptionUtil.printException( e );
    }

    return mbsc;
  }

}

在JMXBookAgent类中也加入
import javax.management.remote.JMXServiceURL;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.MBeanServerConnection;
然后修改startRMIConnector()方法为:

  protected void startRMIConnector()
  {
    //MBeanServerConnection connector = new MBeanServerConnection();
   // ObjectName connectorName = null;

    try
    {
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url,null,server);//根据给出的地址创建一个服务端,但并不马启动服务,得调用START方法来启动它。
cs.start();
/*************  这是书本给出的代码,现在已经不支持了   
connector.setPort( 2099 );
      connectorName = new ObjectName( "JMXBookAgent:name=RMIConnector" );
      server.registerMBean( connector, connectorName );
      connector.start();
*****/
    }
    catch(Exception e)
    {
      ExceptionUtil.printException( e );
    }

  }


HelloWorldSetup类也要修改一下

public HelloWorldSetup()
  {

    try
    {
MBeanServerConnection client = RMIClientFactory.getClient();
ObjectName hwName = new ObjectName("JMXBookAgent:name=helloWorld");
client.createMBean("jmxbook.ch2.HelloWorld",hwName);
client.invoke(hwName,"printGreeting",null,null);  //调用hellowaord MBean里的pirntGreating方法
client.unregisterMBean(hwName);     
/***RmiConnectorClient client = RMIClientFactory.getClient();
      ObjectName hwName = new ObjectName( "JMXBookAgent:name=helloWorld");
      client.createMBean( "jmxbook.ch2.HelloWorld", hwName );
      client.invoke( hwName, "printGreeting", null, null );
****/   
}

最后,编译和运行时注意加入远程API的类库,即jmxremote.jar和jmxri.jar,最后运行就可以看一到以下字样了:(在运行前要运行rmiregistry 2099打开端口服务)
CREATE the agent...
        CREATE the MBeanServer.
Agent is Ready for Service...
运行客服端后:
CREATE the agent...
        CREATE the MBeanServer.
Agent is Ready for Service...
Hello World! I am a Standard MBean.



分享到:
评论

相关推荐

    逻辑控制器练习.jmx

    逻辑控制器练习.jmx

    线程组test.jmx

    jmeter 入门练习

    jmetrjmx:jmx文件

    这通常通过设置JMX连接的安全策略和认证机制来实现。 2. 性能影响:频繁的JMX操作可能会对应用程序性能造成一定影响,因此在生产环境中应谨慎使用,避免过度依赖JMX进行实时监控。 3. MBean设计:良好的MBean设计...

    WebService练习代码

    9. **日志与监控**:为了跟踪服务的运行情况,通常会集成日志框架(如Log4j或Logback)以及监控工具(如JMX),以便于排查问题和优化性能。 通过这个练习,开发者不仅可以掌握CXF和Spring的集成使用,还能加深对...

    zookeeper入门练习demo

    这个"Zookeeper入门练习Demo"旨在帮助初学者快速掌握Zookeeper的基本操作和概念,通过实际操作来加深理解。 **一、搭建Zookeeper集群服务器** 1. **系统需求**:首先确保你有一组运行Java的服务器,Zookeeper要求...

    jdmkrt-jar包

    【描述】"jmx练习用的jar包,要不然需要去oracle官网去注册一个"揭示了这个jar包的用途,即用于JMX的学习和实践。通常,对于某些特定的Java技术,如JMX,开发者可能需要从官方获取相应的库或工具。在这个情况下,...

    秒杀系统练习

    以下将详细讲解与"秒杀系统练习"相关的Java技术。 1. **并发处理**:秒杀活动通常会面临大量的并发请求,因此Java中的多线程技术至关重要。可以使用`Thread`类、`ExecutorService`、`Callable`和`Future`接口来管理...

    WebLogic Server 10.3集群管理中文培训ppt+练习材料

    WebLogic Server 10.3集群管理是Oracle公司提供的企业级Java应用服务器的重要特性,它允许用户通过在多个服务器上分布应用和资源来提高服务的可用性和可伸缩性。这个中文培训PPT和练习材料旨在帮助学习者深入理解...

    jmeter 参数脚本演示

    在JMeter中,我们通常使用CSV Data Set Config元件来实现参数化。这个元件可以从CSV文件中读取数据,并将其传递给测试计划中的各个采样器或其他元素。例如,如果你正在测试一个登录功能,CSV文件可以包含用户名和...

    Java SE实践教程 源代码 下载

    内容简介:此书结合具体实例讲解,通俗易懂,又不乏深度。我觉得这本书写的确实不错,堪称经典,市面上这样的书实在太少了,所以在这里发布下,供大家共享。本书从编程技术、项目实践以及软件工程的角度出发,如果...

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    内容简介:此书结合具体实例讲解,通俗易懂,又不乏深度。我觉得这本书写的确实不错,堪称经典,市面上这样的书实在太少了,所以在这里发布下,供大家共享。本书从编程技术、项目实践以及软件工程的角度出发,如果...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    内容简介:此书结合具体实例讲解,通俗易懂,又不乏深度。我觉得这本书写的确实不错,堪称经典,市面上这样的书实在太少了,所以在这里发布下,供大家共享。本书从编程技术、项目实践以及软件工程的角度出发,如果...

    高级java2大学教程 源代码

    本书是一本高级Java 2编程方面的优秀教材,全面介绍了Java 2平台的多种...全书内容丰富、结构严谨、条理清晰,写作方法别具一格,并且给出了大量的实例和练习,是一本难得的高级Java书籍。这里是该书的源代码文件

    JmeterPractice

    此存储库包含我练习Jmeter时创建的所有JMX文件。这是一个令人愉悦的学习工具,我期待将来找到其他使用它的方法。 Bing要求我们提出的第一个要求,是检索小狗的所有bing影像结果。 BlazeDemo-负载测试-Spike测试-...

    solr-succinctly:Solr Succinctly 电子书的练习

    这可能涉及到监控Solr的日志文件,使用JMX(Java Management Extensions)工具,以及使用JavaScript或其他工具来分析性能指标。 最后,你将学习如何利用Solr的复制和分布式搜索功能来构建高可用性和可扩展的系统。...

    Verteilte-Systeme:部分分布式系统练习的解决方案

    由于标签为"Java",我们可以预期这些练习可能涉及使用Java编程语言来实现分布式系统相关的概念和技术。 分布式系统的核心概念包括: 1. **分布式计算**:系统中的计算分布在多台机器上进行,而非集中在一个单一的...

    pprog:并行编程练习

    Java提供了多种工具和框架来支持并行编程,如: - **线程**:Java的`java.lang.Thread`类和`Runnable`接口是实现并行计算的基础,允许开发者创建并管理执行线程。 - **并发库**:Java的并发库(`java.util....

    好东西 这是J2EE我一个学期的作业题答案

    10. **分布式计算**:理解RMI(Remote Method Invocation)和JMX(Java Management Extensions)对于构建分布式J2EE系统至关重要。 通过这份共享的作业答案,学习者可以检查自己的理解和解题方法,对比不同思路,...

    java 三级考试1

    通常,这类资料会包含详细的理论讲解、实例代码、练习题和解题策略,帮助学习者系统地掌握Java的高级概念。 "ch1"这个文件名可能代表压缩包中的第一章内容,通常这会是基础知识的引入或者预备知识,例如Java语法...

    VisualVM入门

    - 监控本地Java应用:VisualVM可以监控自身,作为熟悉工具的练习。通过VisualVM可以查看内存使用、线程状态、JVM启动参数、CPU消耗和垃圾回收等信息。 - 监控远程Java应用:监控远程Java应用需要使用JMX技术。JMX是...

Global site tag (gtag.js) - Google Analytics