您现在的位置是:首页 >

三大写 基于JBoss来写MBean

火烧 2023-04-03 19:25:40 1073
基于JBo 来写MBea   用JDK自带的JMX实现来写的MBea JMX的实现不独SUN一家 JBo 也有自己的JMX实现 如果你使用JBo 来做WEB服务器 那么基于JBo 的实现来写MBea

基于JBoss来写MBean  

  用JDK自带的JMX实现来写的MBean JMX的实现不独SUN一家 JBoss也有自己的JMX实现 如果你使用JBoss来做WEB服务器 那么基于JBoss的实现来写MBean 是一个不错的选择 象我们公司就是用JBoss的 因此所有MBean都是基于JBoss来写的 基于JBoss的MBean和基于SUN的MBean有什么不同吗?有一些不同之外 但绝大部份都一样

  一   HelloWorld实例

   准备工作    JBOSS实现了JMX规范 这个实例是基于JBoss来实现的 请先去下载一个JBoss 我是JBoss 这个实例需要JBoss的两个JAR包的支持 jboss system jar jboss jmx jar 如果你和我一样用Eclipse来开发(推荐) 那么把这个两个包加入到项目的库引用中(加入到库引用的方法参考前面两章)

   程序代码    假设我们有一个叫message的属性要需要经常进行改动配置的 那么我们就把它写成一个MBean

   ) HelloWorldServiceMBean接口在写MBean之前 我们先需要写一个MBean接口 接口里的方法都是属性的set/get方法 这个接口必须继承接口ServiceMBean java 代码

 import jboss system ServiceMBean; public interface HelloWorldServiceMBean extends ServiceMBean {     String getMessage();     void setMessage(String message); }

   ) HelloWorldService实现类    然后写出HelloWorldServiceMBean接口的实现类HelloWorldService 这个实现类还必须继承ServiceMBeanSupport类 这种类再简单不过了 就是属性和相应的set/get方法 EJB中叫实体类 Hibernate中叫POJO java 代码

  

  import jboss system ServiceMBeanSupport;  public class HelloWorldService extends ServiceMBeanSupportimplements HelloWorldServiceMBean {

  private String message;      public String getMessage() {          System out println( getMessage()= + message);          return message;      }

         public void setMessage(String message) {         System out println( setMessage( + message + ) );         ssage = message;    } }

   ) 配置文件jboss service xml

  

  xml version= encoding= UTF ?> <server>     <mbean code= example mbean HelloWorldService name= :service=HelloWorld >

  <attribute name= Message >Hello Worldattribute>     mbean> server>

  说明     ◆code项指向MBean的实现类HelloWorldService    ◆name项是一个名称 格式一般是 [说明性文字]:service=[类名]    ◆attribute是为属性设置初始值 这样当JBOSS一加载HelloWorldService类时 message属性就有了一个初始值    Hello World 注意Message的第一个字母必须是大写

  二 将实例部署到JBOSS

  在jboss serverdefaultdeploy目录下创建一个hello sar目录 然后创建如下目录文件结构

   hello sar| example|            | mbean|                    | HelloWorldService class (注意 是* class 不是* java)|                    | HelloWorldServiceMBean class| META INF| jboss service xml

  其他说明     ◆也可以将hello sar目录用zip格式压缩成一个同名的hello sar文件 放到jboss serverdefaultdeploy目录下     ◆JBOSS支持热部署 也就是说你在布置这个目录时并不需要重启JBOSS

  三 MBean的效果

  后单击 service=HelloWorld 项打开详细页面

三大写 基于JBoss来写MBean

  将 HelloWorld 改成 Hello World ChenGang 再单击 Apply Changes 应用修改

  四 其他类如何使用Messag属性

  现在我们可以通过一个自动提供的WEB页面来设置Message属性了 接下来的问题是 在其他类中应该如何得到Message的属性值 MBean在JBoss是只保留一个MBean的实例(单例模式?) 也就是说问题转成我们如何去取得这个唯一实例 例程如下

   创建一个使用到Message属性的类

     import jboss mx util MBeanProxyExt; import jboss mx util ObjectNameFactory; public class Client {     public void go() {         HelloWorldServiceMBean mbean = (HelloWorldServiceMBean)  MBeanProxyExt create(HelloWorldServiceMBean class ObjectNameFactory create(:service=HelloWorld));         String msg = mbean getMessage();         System out println( Client go()= + msg);     } }    注意 go方法里是三句 第一句比较长 它是根据jboss service xml文件中设置的MBean名称 来取得此MBean在JBOSS中的实例

   在Mbean中加一个相应的调用Client go的方法在HelloWorldServiceMBean接口中加入一句

void callGo();ublic void callGo() {      new Client() go(); }

   更新布署将三个类的class文件 Clien class HelloWorldServiceMBean class HelloWorldService class 更新到JBOSS的hello sarexamplembean目录下 然后重启JBOSS

   查看效果打开JBOSS提供的MBean设置页面 发现多了一个callGo 单击callGo项后的invoke按钮 得到DOS输出

lishixinzhi/Article/program/Java/ky/201311/28796  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码