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

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

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

    Let's go inside

    this blog is deprecated as a result of laziness.
    posts - 59, comments - 2, trackbacks - 0, articles - 0

    TrailBlazer第6天--JMX

    Posted on 2006-07-27 13:10 Earth 閱讀(256) 評論(0)  編輯  收藏 所屬分類: JavaEE5/EJB3

    Different from EJB services, which are provided by a pool of managed objects, a JMX MBean service is provided by a singleton object in the server JVM. This service object is stateful and has an application-wide scope.
    JMX MBean服務以單例的形式存在于JVM中,它是有狀態并且存在于application范圍內。

    1,定義JMX服務接口

    public ? interface ?Calculator?{

    ??
    // ?Attribute
    ?? public ? void ?setGrowthrate?( double ?g);
    ??
    public ? double ?getGrowthrate?();

    ??
    // ?The?management?method
    ?? public ? double ?calculate?( int ?start,? int ?end,? double ?saving);

    ??
    // ?Life?cycle?method
    ?? public ? void ?create?()? throws ?Exception;
    ??
    public ? void ?destroy?()? throws ?Exception;
    }

    你可以實現下面任意的JMX生命周期方法:
    create() --
    start() --
    stop() --
    destroy() --

    2,定義JMX服務實現

    @Service?(objectName = " trail:service=calculator " )
    @Management(Calculator.
    class )
    public ? class ?CalculatorMBean? implements ?Calculator?{

    ??
    double ?growthrate;

    ??
    public ? void ?setGrowthrate?( double ?growthrate)?{
    ????
    this .growthrate? = ?growthrate;
    ??}

    ??
    public ? double ?getGrowthrate?()?{
    ????
    return ?growthrate;
    ??}

    ??
    public ? double ?calculate?( int ?start,? int ?end,? double ?saving)?{
    ????
    double ?tmp? =
    ????????Math.pow(
    1 .? + ?growthrate? / ? 12 .,? 12 .? * ?(end? - ?start)? + ? 1 );
    ????
    return ?saving? * ? 12 .? * ?(tmp? - ? 1 )? / ?growthrate;
    ??}

    ??
    // ?Lifecycle?methods
    ?? public ? void ?create()? throws ?Exception?{
    ????growthrate?
    = ? 0.08 ;
    ????System.out.println(
    " Calculator?-?Creating " );
    ??}

    ??
    public ? void ?destroy()?{
    ????System.out.println(
    " Calculator?-?Destroying " );
    ??}
    }

    MBean的實現必須使用@Service標注,它用來告訴JBoss需要以objectName為命名將其注冊為一個MBean Service,@Management表示服務接口,可以有多個, 你可以在JMX控制臺(http://localhost:8080/jmx-console/) 通過trail:service=calculator找到這個服務

    3,使用JMX MBean服務
    calculator.jsp???

    <% @?page? import = " trail.jmx.*,?org.jboss.mx.util.*,
    ??????????????????java.text. * ,?javax.management. * " %>
    ?
    <%!

    ??
    private ?Calculator?cal? = ? null ;
    ??
    public ? void ?jspInit?()?{
    ????
    try ?{
    ????????MBeanServer?server?
    = ?MBeanServerLocator.locate();

    ????????cal?
    = ?(Calculator)?MBeanProxyExt.create(
    ????????????Calculator.
    class ,
    ????????????
    " trail:service=calculator " ,
    ????????????server);
    ????}?
    catch ?(Exception?e)?{
    ????????e.printStackTrace?();
    ????}
    ??}
    %>
    ?
    ?
    <%
    ???String?result;
    ???
    int ?start? = ? 25 ;
    ???
    int ?end? = ? 65 ;
    ???
    double ?saving? = ? 300.0 ;
    ???
    try ?{
    ?????start?
    = ?Integer.parseInt(request.getParameter?( " start " ));
    ?????end?
    = ?Integer.parseInt(request.getParameter?( " end " ));
    ?????saving?
    = ?Double.parseDouble(request.getParameter?( " saving " ));
    ?
    ?????NumberFormat?nf?
    = ?NumberFormat.getInstance();
    ?????nf.setMaximumFractionDigits(
    2 );
    ?????result?
    = ?nf.format(cal.calculate(start,?end,?saving));
    ???}?
    catch ?(Exception?e)?{
    ?????e.printStackTrace?();
    ?????result?
    = ? " Not?valid " ;
    ???}
    ?
    %>


    二、定義MBeans之間的依賴關系,
    如同Ant中的任務一樣,用@Depends標注就可以了

    @Service?(objectName = " trail:service=investmentAdvisor " )
    @Depends?({
    " trail:service=calculator " ,
    ???????????
    " trail:service=riskAnalysis " })
    public ? class ?InvestmentAdvisorMBean? implements ?InvestmentAdvisor?{
    ????
    // ??
    }

    還有一種方法,使用依賴注入

    @Service?(objectName = " trail:service=investmentAdvisor " )
    public ? class ?InvestmentAdvisorMBean? implements ?InvestmentAdvisor?{

    ????@Depends?(
    " trail:service=calculator " )
    ????
    public ? void ?setCalculator?(Calculator?calculator)?{
    ??????
    this .calculator? = ?calculator;
    ????}

    ????
    // ??
    }

    ?

    主站蜘蛛池模板: 国产亚洲情侣一区二区无| 久久久久久亚洲精品不卡| 亚洲电影免费在线观看| 在线观看免费黄网站| 中文字幕精品亚洲无线码一区| 91精品全国免费观看含羞草| 亚洲精品无码永久在线观看你懂的 | 国产亚洲美女精品久久久| 一级毛片正片免费视频手机看 | 亚洲自偷自拍另类图片二区| 久久青草精品38国产免费| 91在线亚洲精品专区| 亚洲成人免费网站| 亚洲日韩国产精品乱-久| 亚欧国产一级在线免费| 国产亚洲美女精品久久久2020| 国产免费内射又粗又爽密桃视频 | 国内永久免费crm系统z在线| 亚洲av无码专区在线播放 | 一区二区视频在线免费观看| 久久精品国产亚洲Aⅴ香蕉 | 久久99精品免费一区二区| 亚洲精品无码午夜福利中文字幕| 无码精品人妻一区二区三区免费看 | 99久久免费国产精品热| 日本久久久久亚洲中字幕| 国产在线观看片a免费观看 | 久久久久久av无码免费看大片| 亚洲ⅴ国产v天堂a无码二区| 色se01短视频永久免费| 国产精品亚洲一区二区在线观看| 2048亚洲精品国产| 57pao一国产成永久免费| 亚洲欧美综合精品成人导航| 亚洲一区视频在线播放| 13一14周岁毛片免费| 欧洲乱码伦视频免费国产 | 免费看片在线观看| 羞羞漫画页面免费入口欢迎你| 亚洲AV无码成人专区片在线观看| 成年人免费视频观看|