<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    hengheng123456789

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

    眾所周知Jboss依賴于JMX來裝載MBean服務(wù),而這些MBean服務(wù)組成了具體服務(wù)器實(shí)例的差異性。標(biāo)準(zhǔn)JBoss發(fā)布版本提供的所有功能都是基于MBean的。所以,如果要為JBoss服務(wù)器添加新的服務(wù),最好的方法是開發(fā)自己的JMX MBean服務(wù)。
    MBean服務(wù)的生命周期是由如下三個(gè)JBoss MBean負(fù)責(zé)的:SARDeployer、ServiceConfigurator、ServiceController。

    如自定義MBean服務(wù)依賴于其他MBean服務(wù),可以通過如下方法實(shí)現(xiàn):
    1、在自定義MBean接口中添加Service中任何方法。
    ???這種方式避免了對(duì)JBoss具體接口的依賴。
    2、為自定義MBean接口擴(kuò)展org.jboss.system.Service接口。

    3、為自定義MBean接口擴(kuò)展org.jboss.system.ServiceMBean接口。
    ???最簡單的辦法是將自定義MBean接口繼承于ServiceMBean接口,將MBean實(shí)現(xiàn)類繼承ServiceMBeanSupport類。ServiceMBeanSupport已經(jīng)實(shí)現(xiàn)了ServiceMBean接口,ServiceMBeanSupport還集成了日志、JBoss服務(wù)狀態(tài)管理跟蹤功能,這些方法需要我們具體實(shí)現(xiàn)createService、startService、stopService和destroyService中的部分方法。

    下面介紹基于ServiceMBean接口和ServiceMBeanSupport類的JNDIMapMBean接口及其JNDIMap實(shí)現(xiàn)類。

    package org.joss.chap2.ex2;

    import javax.naming.NamingException;

    import org.jboss.system.ServiceMBean;

    public interface JNDIMapMBean extends ServiceMBean
    {
    ?public String getJndiName();
    ?public void setJndiName(String jndiName) throws NamingException;
    }

    package org.joss.chap2.ex2;

    import java.util.HashMap;

    import javax.management.MBeanServer;
    import javax.management.ObjectName;
    import javax.naming.InitialContext;
    import javax.naming.Name;
    import javax.naming.NamingException;

    import org.jboss.naming.NonSerializableFactory;
    import org.jboss.system.ServiceMBeanSupport;

    public class JNDIMap extends ServiceMBeanSupport implements JNDIMapMBean
    {
    ?private String jndiName;
    ?private HashMap contextMap = new HashMap();

    ?public JNDIMap()
    ?{
    ??super();
    ??// TODO Auto-generated constructor stub
    ?}

    ?public String getJndiName()
    ?{
    ??
    ??return jndiName;
    ?}

    ?public void setJndiName(String jndiName) throws NamingException
    ?{
    ??String oldName = this.jndiName;
    ??this.jndiName = jndiName;
    ??if(super.getState()==STARTED)
    ??{
    ???unbind(oldName);
    ???try
    ???{
    ????rebind();
    ???}
    ???catch(Exception e)
    ???{
    ????NamingException ne = new NamingException("Failed to update jndiName");
    ????ne.setRootCause(e);
    ????throw ne;
    ???}
    ??}

    ?}
    ?
    ?public void startService()throws Exception
    ?{
    ??rebind();
    ?}
    ?
    ?
    ?public void stopService()
    ?{
    ??unbind(jndiName);
    ?}
    ?
    ?private void rebind() throws NamingException
    ?{
    ??InitialContext rootCtx = new InitialContext();
    ??Name fullName = rootCtx.getNameParser("").parse(jndiName);
    ??NonSerializableFactory.rebind(fullName,contextMap,true);
    ?}
    ?
    ?private void unbind(String jndiName)
    ?{
    ??try
    ??{
    ???InitialContext rootCtx = new InitialContext();
    ???rootCtx.unbind(jndiName);
    ???NonSerializableFactory.unbind(jndiName);
    ??}
    ??catch(NamingException e)
    ??{
    ???System.out.println(e);
    ??}
    ?}

    ?public String getName()
    ?{
    ??// TODO Auto-generated method stub
    ??return null;
    ?}

    ?public int getState()
    ?{
    ??// TODO Auto-generated method stub
    ??return 0;
    ?}

    ?public String getStateString()
    ?{
    ??// TODO Auto-generated method stub
    ??return null;
    ?}

    ?public void jbossInternalLifecycle(String arg0) throws Exception
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public void create() throws Exception
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public void start() throws Exception
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public void stop()
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public void destroy()
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public ObjectName preRegister(MBeanServer arg0, ObjectName arg1)
    ???throws Exception
    ?{
    ??// TODO Auto-generated method stub
    ??return null;
    ?}

    ?public void postRegister(Boolean arg0)
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public void preDeregister() throws Exception
    ?{
    ??// TODO Auto-generated method stub

    ?}

    ?public void postDeregister()
    ?{
    ??// TODO Auto-generated method stub

    ?}

    }

    <?xml version="1.0" encoding="UTF-8"?>

    <server>

    ?<mbean code="org.joss.chap2.ex2.JNDIMap"
    ??name="chap2.ex2:service=JNDIMap">

    ??<attribute name="JndiName">inmemory/map/MapTest</attribute>
    ??<depends>jboss:service=Naming</depends>

    ?</mbean>

    </server>



    ?

    posted on 2006-12-14 18:03 哼哼 閱讀(3925) 評(píng)論(0)  編輯  收藏 所屬分類: JMXJBOSS
    主站蜘蛛池模板: 扒开双腿猛进入爽爽免费视频| 久久精品亚洲中文字幕无码麻豆 | 亚洲最大成人网色香蕉| a毛片免费播放全部完整| 全亚洲最新黄色特级网站| 亚洲人成小说网站色| 久久久免费精品re6| 亚洲尤码不卡AV麻豆| 添bbb免费观看高清视频| 国产精品成人免费视频网站京东| 亚洲精品免费在线观看| 成人无码视频97免费| 亚洲AV中文无码乱人伦| 国产精品亚洲av色欲三区| 中文字幕影片免费在线观看| 精品亚洲国产成AV人片传媒| 免费在线中文日本| 亚洲热线99精品视频| 国产免费人成视频尤勿视频| 免费一级毛片一级毛片aa| 亚洲成a人片在线不卡一二三区| 国产免费毛不卡片| 亚洲人成网网址在线看| 国产成人精品免费午夜app| 久久精品亚洲中文字幕无码麻豆| 久久久久国色av免费看| 亚洲精品免费视频| 91麻豆国产免费观看| 久久久久亚洲AV无码专区体验| A片在线免费观看| 久久夜色精品国产亚洲| 中文字幕无码毛片免费看| 亚洲午夜国产精品无码老牛影视 | 精品国产污污免费网站入口| 国产黄色一级毛片亚洲黄片大全| 黄网站色成年片大免费高清| 午夜亚洲av永久无码精品| 一级毛片人与动免费观看| 最新国产AV无码专区亚洲| 久久免费香蕉视频| 亚洲AV无码久久|