<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
    主站蜘蛛池模板: 成年女人喷潮毛片免费播放| 免费人成动漫在线播放r18| 精品国产麻豆免费人成网站| 亚洲 无码 在线 专区| 国产亚洲漂亮白嫩美女在线| 国产一级高清免费观看| 国产精品亚洲精品日韩电影| 国产成人免费高清在线观看| 国产亚洲精品2021自在线| 国产一区在线观看免费| 日韩在线视频线视频免费网站| 国产在线观看免费不卡| 日日躁狠狠躁狠狠爱免费视频| 亚洲av日韩av欧v在线天堂| 一级做a爰片久久免费| 国产亚洲精品拍拍拍拍拍| 伊人免费在线观看| 亚洲狠狠久久综合一区77777| 18禁男女爽爽爽午夜网站免费| 亚洲人成高清在线播放| 在线播放免费播放av片| 夜夜爽妓女8888视频免费观看| 亚洲精品午夜无码电影网| 久久久久国色av免费看| 亚洲a级成人片在线观看| 精品久久洲久久久久护士免费 | 国产午夜无码精品免费看动漫| 亚洲2022国产成人精品无码区| av无码久久久久不卡免费网站| 亚洲精品国产第一综合99久久 | 亚洲国产精品成人精品无码区 | 国产h肉在线视频免费观看| 亚洲性色AV日韩在线观看| 国产一区在线观看免费| 成人性生交大片免费看中文| 亚洲欧洲日产国产最新| 亚洲片国产一区一级在线观看| 黄网站免费在线观看| 亚洲最大天堂无码精品区| 国内精品99亚洲免费高清| 18禁成人网站免费观看|