4.3 guice与jmx
guice官方提供一个jmx的插件guice-jmx-2.0.jar。在这个插件中我们可以很方便的将凯发k8网页登录的服务发不成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(this, new objectname("xylz guice demo:type=helloworld"));
11 } catch (exception e) {
12 e.printstacktrace();
13 }
14 }
15 }
16
这里比较关键的是我们要将凯发k8网页登录的服务注入到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服务。
在这里我们就可以看到我们的jmxdemo的进程了。然后选择连接。
下面的图显示了我们执行sayhello方法的结果。
当然了我们可以自己写一个client的程序来处理凯发k8网页登录的服务。
1 public class jmxclientdemo {
2
3 public static void main(string[] args) throws exception{
4 jmxserviceurl url = new jmxservice;
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.class, true);
11 string msg=helloworld.sayhello();
12 system.out.println(msg);
13 }
14
15 }
16
上一篇:(1)
下一篇:待续
©2009-2014 imxylz
|求贤若渴