`
wbj0110
  • 浏览: 1609546 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Google Guice 入门教程08 - 整合第三方组件(2)

阅读更多

4.3 Guice与JMX

Guice官方提供一个JMX的插件guice-jmx-2.0.jar。在这个插件中我们可以很方便的将我们的服务发不成JMX可管理的MBean。本教程中我们继续探讨这个话题。

老套了,我们的HelloWorld服务,注意这个服务为了满足JMX的规范,接口名称以MBean结尾,而实现类必须不带MBean。

1 public interface HelloWorldMBean {
2     String sayHello();
3 

 

然后是实现类HelloWorld。

 

 1 public class HelloWorld implements HelloWorldMBean {
 2 
 3     @Override
 4     public String sayHello() {
 5         return "Hello, guice";
 6     }
 7     @Inject
 8     public void register(MBeanServer server) {
 9         try {
10             server.registerMBean(thisnew ObjectName("xylz guice demo:type=HelloWorld"));
11         } catch (Exception e) {
12             e.printStackTrace();
13         }
14     }
15 }
16 

这里比较关键的是我们要将我们的服务注入到JMX服务器中。

然后写一个JMX的服务端例子。

 

 1 public class JMXDemo {
 2 
 3     public static void main(String[] args) throws Exception{
 4        Injector inj= Guice.createInjector(new Module() {
 5             @Override
 6             public void configure(Binder binder) {
 7                 binder.bind(MBeanServer.class).toInstance(ManagementFactory.getPlatformMBeanServer());
 8                 binder.bind(HelloWorldMBean.class).to(HelloWorld.class);
 9             }
10         });
11        //
12        Manager.manage("guice-jmx-demo", inj);
13        //
14        Thread.sleep(10000*600);//sleep for ten minute
15     }
16 
17 }
18 

在这个例子中我们绑定MBeanServer到Guice中,然后通过Guice的JMX插件将我们的HelloWorldMBean服务到JMX中。最后暂停10分钟阻止我们的程序立即退出,当然你可以写一个while的死循环。

特别注意,在eclipse中需要设置JVM的参数才能正确启动我们的JMX服务。见下面。

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=4321 
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

然后使用我们的jconsole来查看我们的JMX服务。

image

在这里我们就可以看到我们的JMXDemo的进程了。然后选择连接。

下面的图显示了我们执行sayHello方法的结果。

image

当然了我们可以自己写一个client的程序来处理我们的服务。

 

 1 public class JMXClientDemo {
 2 
 3     public static void main(String[] args) throws Exception{
 4         JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:4321/jmxrmi");
 5         JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
 6         MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
 7         //
 8         ObjectName mbeanName = new ObjectName("xylz guice demo:type=HelloWorld");
 9         //
10         HelloWorldMBean helloWorld = JMX.newMBeanProxy(mbsc, mbeanName, HelloWorldMBean.classtrue);
11         String msg=helloWorld.sayHello();
12         System.out.println(msg);
13     }
14 
15 }
16 
分享到:
评论

相关推荐

    guice-4.0-API文档-中文版.zip

    赠送jar包:guice-4.0.jar; 赠送原API文档:guice-4.0-javadoc.jar; 赠送源代码:guice-4.0-sources.jar; 赠送Maven依赖信息文件:guice-4.0.pom; 包含翻译后的API文档:guice-4.0-javadoc-API文档-中文(简体)版...

    guice-assistedinject-3.0-API文档-中英对照版.zip

    赠送jar包:guice-assistedinject-3.0.jar; 赠送原API文档:guice-assistedinject-3.0-javadoc.jar; 赠送源代码:guice-assistedinject-3.0-sources.jar; 赠送Maven依赖信息文件:guice-assistedinject-3.0.pom;...

    guice-multibindings-3.0-API文档-中英对照版.zip

    赠送jar包:guice-multibindings-3.0.jar; 赠送原API文档:guice-multibindings-3.0-javadoc.jar; 赠送源代码:guice-multibindings-3.0-sources.jar; 赠送Maven依赖信息文件:guice-multibindings-3.0.pom; ...

    guice-assistedinject-3.0-API文档-中文版.zip

    赠送jar包:guice-assistedinject-3.0.jar; 赠送原API文档:guice-assistedinject-3.0-javadoc.jar; 赠送源代码:guice-assistedinject-3.0-sources.jar; 赠送Maven依赖信息文件:guice-assistedinject-3.0.pom;...

    guice-multibindings-3.0-API文档-中文版.zip

    赠送jar包:guice-multibindings-3.0.jar; 赠送原API文档:guice-multibindings-3.0-javadoc.jar; 赠送源代码:guice-multibindings-3.0-sources.jar; 赠送Maven依赖信息文件:guice-multibindings-3.0.pom; ...

    sisu-guice-2.1.7-noaop.jar

    sisu-guice-2.1.7-noaop.jar

    guice-servlet-4.0-API文档-中文版.zip

    赠送jar包:guice-servlet-4.0.jar; 赠送原API文档:guice-servlet-4.0-javadoc.jar; 赠送源代码:guice-servlet-4.0-sources.jar; 赠送Maven依赖信息文件:guice-servlet-4.0.pom; 包含翻译后的API文档:guice-...

    guice-struts2-plugin-1.0.1.jar

    google-guice struts2-plugin

    guice-servlet-4.0-API文档-中英对照版.zip

    赠送jar包:guice-servlet-4.0.jar; 赠送原API文档:guice-servlet-4.0-javadoc.jar; 赠送源代码:guice-servlet-4.0-sources.jar; 赠送Maven依赖信息文件:guice-servlet-4.0.pom; 包含翻译后的API文档:guice-...

    guice-4.0-API文档-中英对照版.zip

    赠送jar包:guice-4.0.jar; 赠送原API文档:guice-4.0-javadoc.jar; 赠送源代码:guice-4.0-sources.jar; 赠送Maven依赖信息文件:guice-4.0.pom; 包含翻译后的API文档:guice-4.0-javadoc-API文档-中文(简体)-...

    guice-3.0-API文档-中文版.zip

    赠送jar包:guice-3.0.jar; 赠送原API文档:guice-3.0-javadoc.jar; 赠送源代码:guice-3.0-sources.jar; 赠送Maven依赖信息文件:guice-3.0.pom; 包含翻译后的API文档:guice-3.0-javadoc-API文档-中文(简体)版...

    guice-3.0-API文档-中英对照版.zip

    赠送jar包:guice-3.0.jar; 赠送原API文档:guice-3.0-javadoc.jar; 赠送源代码:guice-3.0-sources.jar; 赠送Maven依赖信息文件:guice-3.0.pom; 包含翻译后的API文档:guice-3.0-javadoc-API文档-中文(简体)-...

    guice-spring-1.0.jar

    guice-spring-1.0.jar

    guice入门教程helloworld篇

    在"Guice入门教程HelloWorld篇"中,我们将学习如何使用Guice来构建简单的Java应用程序。首先,我们需要理解Guice的核心概念——模块(Module)和绑定(Binding)。模块是Guice配置的核心,它定义了哪些类应该被实例...

    guice-3.0.rar

    Guice是Google开发的一款轻量级的Inversion of Control(IoC)容器,它通过依赖注入(Dependency Injection,DI)来管理对象的生命周期和装配。Guice-3.0是Guice的一个版本,包含了核心库guice-3.0.jar,以及与...

    guice-servlet-3.0.jar

    guice-servlet-3.0.jar

    guice-struts2-plugin-3.0.jar

    java 开发插件jar包,与guice相关

    sisu-guice-3.1.3-no_aop.jar

    sisu-guice-3.1.3-no_aop.jar

    guice-servlet-1.0.jar

    guice-servlet-1.0.jar

Global site tag (gtag.js) - Google Analytics