﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xmatthew-随笔分类-Spy2Servers</title><link>http://www.blogjava.net/xmatthew/category/35672.html</link><description>孤独键盘手</description><language>zh-cn</language><lastBuildDate>Sun, 17 May 2009 06:33:06 GMT</lastBuildDate><pubDate>Sun, 17 May 2009 06:33:06 GMT</pubDate><ttl>60</ttl><item><title>Spy2Servers 1.2.0发布</title><link>http://www.blogjava.net/xmatthew/archive/2009/05/01/268552.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Fri, 01 May 2009 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2009/05/01/268552.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/268552.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2009/05/01/268552.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/268552.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/268552.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 终于盼到了五一节，先祝大家节日快乐！<br>  有一阵子没有整理该项目，盼到了五一节，本人也花了些时间，继续改进了该项目的一些功能。此次发布版本为1.2.0。<br>  此次发布包含以下内容:<br>    * Spring-Integration支持。目前支持最新的版本 1.2.0。对Spring-Integration的支持，可以更大的利用Spring-Integration提供的扩展组件。如JMS, FTP, WebService, RMI, HTTP, Stream等。<br>    * 全新的项目的主页，方便大家的交流。<br>    * 重新整理了更详细的 用户文档和平台开发者文档(包括与Spring-Integration集成开发文档)。&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2009/05/01/268552.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/268552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2009-05-01 22:15 <a href="http://www.blogjava.net/xmatthew/archive/2009/05/01/268552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spy2servers组件化的监控平台-放出完善参考文档祝元旦</title><link>http://www.blogjava.net/xmatthew/archive/2009/01/03/249630.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Sat, 03 Jan 2009 09:37:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2009/01/03/249630.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/249630.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2009/01/03/249630.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/249630.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/249630.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spy2server项目发布至今，也有大半年了，很高兴有很多的朋友在使用该项目并给本人也提供很多建议，在此表示感谢。虽然发布至今有这么长时间，但自己真得检讨，一直没有时间对文档进行整理，加上最近项目比较忙所以一直就拖到了现在。在元旦之际终于有时间进行整理，现在共享大家，希望大家多提些建议。当然Spy2servers项目我还会扩展下去，下一部会对Spring-integration集成，达到更好的功能扩展。&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2009/01/03/249630.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/249630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2009-01-03 17:37 <a href="http://www.blogjava.net/xmatthew/archive/2009/01/03/249630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spy2servers组件化的监控平台使用帮助手册</title><link>http://www.blogjava.net/xmatthew/archive/2008/10/28/195745.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Tue, 28 Oct 2008 04:54:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/10/28/195745.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/195745.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/10/28/195745.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/195745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/195745.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: spy2servers已经发布有一段时间了，部分的使用手法都发布在不同的文章中：<br>http://www.blogjava.net/xmatthew/archive/2008/04/24/194894.html<br>http://www.blogjava.net/xmatthew/archive/2008/04/21/194349.html<br>http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html<br>http://www.blogjava.net/xmatthew/articles/185673.html<br>现在应该是时候把它们统一整理出来了。<br><br>本手册分为两部分，用户使用手册和开发手册。&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2008/10/28/195745.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/195745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-10-28 12:54 <a href="http://www.blogjava.net/xmatthew/archive/2008/10/28/195745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)基于组件化的监控平台开发监控(更新: 支持Annotation)</title><link>http://www.blogjava.net/xmatthew/archive/2008/05/05/198585.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Mon, 05 May 2008 14:49:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/05/05/198585.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/198585.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/05/05/198585.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/198585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/198585.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有段时间没有更新了，今天上来与大家打声招呼先。Spy2servers这个项目自发布以来，受到不少的朋友支持，在此表示感谢。<br>经过一段时间的整理，现已经把整个项目转移到了SourceForge。目前的网址为 https://sourceforge.net/projects/spy2servers 希望大家能依旧大力支持。<br><br>言归正转，此次更新主要是支持Annotation,用于简单Spring的xml配置&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2008/05/05/198585.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/198585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-05-05 22:49 <a href="http://www.blogjava.net/xmatthew/archive/2008/05/05/198585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spy2servers组件化的监控平台使用帮助手册(更新)</title><link>http://www.blogjava.net/xmatthew/archive/2008/04/25/196075.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Fri, 25 Apr 2008 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/04/25/196075.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/196075.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/04/25/196075.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/196075.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/196075.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前一篇文章已经把spy2servers的用户使用手册整理出来了，这次更新主要是把开发手册部分的整理。如果没有下载的朋友可以从下面下载spy2servers。1. 下载下载地址：二进制程序第三方类库下载,第三方类库下载2&nbsp; Jetty类库 放到lib目录下。api-docs 源代码开发手册:spy2servers对外提供三个组件接口，分别...&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2008/04/25/196075.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/196075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-04-25 22:47 <a href="http://www.blogjava.net/xmatthew/archive/2008/04/25/196075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)基于组件化的监控平台开发监控(更新: 内置Jetty服务器，支持web方式查看平台组件运行状态)</title><link>http://www.blogjava.net/xmatthew/archive/2008/04/24/194894.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Thu, 24 Apr 2008 01:36:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/04/24/194894.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/194894.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/04/24/194894.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/194894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/194894.html</trackback:ping><description><![CDATA[<br />
<br />
<br />
spy2servers项目发布后，得到很多朋友的支持，本人在此表示感谢。本次更新，主要实现了内置了Jetty Web服务器，提供<br />
基于web方式查看监控平台的所有组件运行状态。针对原来提供的基于JMX的运行状态监控相比，Web方式要方便很多，无需运行jconsole。<br />
<br />
下载地址：<br />
<a href="http://www.blogjava.net/Files/xmatthew/spy2servers20080423.zip">二进制程序</a><br />
<a href="http://www.blogjava.net/Files/xmatthew/lib.rar">第三方类库下载</a>,<a href="../../Files/xmatthew/lib2.rar"></a><a href="http://www.blogjava.net/Files/xmatthew/lib2.zip"></a><a href="http://www.blogjava.net/Files/xmatthew/lib2.rar">第三方类库下载2</a>&nbsp; <a href="http://www.blogjava.net/Files/xmatthew/web-lib.zip">Jetty类库</a> 放到lib目录下。<br />
<a href="../../Files/xmatthew/api-docs.zip"></a><a href="http://www.blogjava.net/Files/xmatthew/api-docs.zip"></a><a href="http://www.blogjava.net/Files/xmatthew/api-docs.zip">api-docs</a> <br />
<a href="http://www.blogjava.net/Files/xmatthew/spy2servers-core20080423.zip">源代码</a><br />
<br />
我来看一下如何在 spy2servers 配置Jetty并启动web方式的组件监控服务。<br />
配置方法非常简单，使用我们简单后的Spring配置。下面是配置说明，在spy2servers.xml中，加入<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">jetty</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">connectors</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">nioConnector&nbsp;</span><span style="color: #ff0000;">port</span><span style="color: #0000ff;">="7758"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;using&nbsp;nio&nbsp;connector&nbsp;port&nbsp;is&nbsp;7758&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">connectors</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">handlers</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;org.xmatthew.spy2servers.component.web.ComponentsViewServlet&nbsp;is&nbsp;our&nbsp;web&nbsp;spy&nbsp;servlet,&nbsp;&nbsp;/admin&nbsp;is&nbsp;our&nbsp;servlet&nbsp;path&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet&nbsp;</span><span style="color: #ff0000;">servletClass</span><span style="color: #0000ff;">="org.xmatthew.spy2servers.component.web.ComponentsViewServlet"</span><span style="color: #ff0000;">&nbsp;path</span><span style="color: #0000ff;">="/admin"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">handlers</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">jetty</span><span style="color: #0000ff;">&gt;</span></div>
<br />
配置是不是非常的简单， 这样就启动了web服务 访问址 <a href="http://localhost:7758/admin">http://localhost:7758/admin</a>。 使用的是7758端口，servlet path是/admin.<br />
<br />
下面看一下，进入后页面的内容:<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/xmatthew/spy2serves-web-start.JPG" width="568" height="627" /><br />
<br />
最上面分别是三个标签：分别选择查看 <a href="http://localhost:7758/admin?type=spy">SpyComponents</a>&nbsp;<a href="http://localhost:7758/admin?type=alert">AlertComponents</a>&nbsp;<a href="http://localhost:7758/admin?type=channel">ChannelAwareComponents</a> 三种组件组件。默认进入的是<a href="http://localhost:7758/admin?type=spy">SpyComponents</a><br />
<br />
上面图片中，我们可以看到SpyComponents类共配置了三个监控组件。<br />
我们拿其中一个再说明一下：<br />
<strong><font color="#ff0000">ActiveMQJmxSpyComponent<br />
</font></strong>message count=0 #监控消息个数<br />
component status=Active #组件的状态<br />
startup date=2008-04-22 22:25:09 #组件启动的时间<br />
<br />
如果有消息监控到，则会显示如下：<br />
<strong><font color="#ff0000">ActiveMQJmxSpyComponent</font></strong><br />
message count=2<br />
component status=Active<br />
startup date=2008-04-22 22:25:09<br />
<table>
    <tbody>
        <tr>
            <td>
            <table border="1">
                <tbody>
                    <tr bgcolor="#ccff66">
                        <td>order</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>id</td>
                        <td>c7c41f6b-a502-4656-862b-869e1dbe8260</td>
                    </tr>
                    <tr>
                        <td>level</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>body</td>
                        <td>Test.Queue</td>
                    </tr>
                    <tr>
                        <td>description</td>
                        <td>QueueConsumerSuspend</td>
                    </tr>
                    <tr>
                        <td>type</td>
                        <td>QueueInspect</td>
                    </tr>
                    <tr>
                        <td>properties</td>
                        <td>{Name=Test.Queue,
                        MemoryPercentageUsed=0, DispatchCount=0, QueueSize=0, EnqueueCount=0,
                        DequeueCount=0, ConsumerCount=0, MemoryLimit=9223372036854775807,
                        statusKeepTime=18968}</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
        <tr>
            <td>
            <table border="1">
                <tbody>
                    <tr bgcolor="#ccff66">
                        <td>order</td>
                        <td>2</td>
                    </tr>
                    <tr>
                        <td>id</td>
                        <td>a5b0dbce-b0ae-41d6-8690-0d0ebf9a34b5</td>
                    </tr>
                    <tr>
                        <td>level</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>body</td>
                        <td>aaa</td>
                    </tr>
                    <tr>
                        <td>description</td>
                        <td>QueueConsumerSuspend</td>
                    </tr>
                    <tr>
                        <td>type</td>
                        <td>QueueInspect</td>
                    </tr>
                    <tr>
                        <td>properties</td>
                        <td>{Name=aaa,
                        MemoryPercentageUsed=0, DispatchCount=0, QueueSize=0, EnqueueCount=0,
                        DequeueCount=0, ConsumerCount=0, MemoryLimit=9223372036854775807,
                        statusKeepTime=18796}</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
接下来，细心的朋友发现还有一个AlertRule链接，这个又不是组件，这个是做什么的呢？<br />
现在我来解释一下，我们在定义core-componet标签的时候，平台支持定义消息的流转规则，下面这是可视化的标识哪些消息从那个监控<br />
组件过来，将会发送到哪个报警组件消息上去<br />
<br />
下面是一个演示界面：<br />
<a href="http://localhost:7758/admin?type=spy"></a><a href="http://localhost:7758/admin?type=spy"></a><br />
<strong>Components alert rule:<strong><br />
</strong></strong>
<table border="1">
    <tbody>
        <tr bgcolor="#ccff66">
            <td>from</td>
            <td>to</td>
        </tr>
        <tr>
            <td><strong><font color="#ff0000">AMQ16Component</font></strong></td>
            <td><font color="#ff00ff">PrintScreenAlertComponent<br />
            </font></td>
        </tr>
        <tr>
            <td><strong><font color="#ff0000">ActiveMQJmxSpyComponent</font></strong></td>
            <td><font color="#ff00ff">PrintScreenAlertComponent<br />
            EmailAlertComponent<br />
            </font></td>
        </tr>
        <tr>
            <td><strong><font color="#ff0000">SunJVMJmxSpyComponent</font></strong></td>
            <td><font color="#ff00ff">PrintScreenAlertComponent<br />
            EmailAlertComponent<br />
            </font></td>
        </tr>
        <tr>
            <td><strong><font color="#ff0000">TomcatJmxSpyComponent</font></strong></td>
            <td><font color="#ff00ff">PrintScreenAlertComponent<br />
            EmailAlertComponent</font></td>
        </tr>
    </tbody>
</table>
<br />
其中的内容很好解理，from就是指监控组件， to指的就是报警组件。<br />
<br />
<strong></strong>基于web方式的查看监控的组件情况，是不是很方便呢 :)。<br />
<br />
最后欢迎大家如果有问题和意见，给我留言。<br />
<br />
Good Luck!<br />
Yours Matthew!<br />
<br />
<br />
<img src ="http://www.blogjava.net/xmatthew/aggbug/194894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-04-24 09:36 <a href="http://www.blogjava.net/xmatthew/archive/2008/04/24/194894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)基于组件化的监控平台开发监控(更新)</title><link>http://www.blogjava.net/xmatthew/archive/2008/04/21/194349.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Mon, 21 Apr 2008 00:14:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/04/21/194349.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/194349.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/04/21/194349.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/194349.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/194349.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前一阵开发这个基于组件化的监控平台收到的一些朋友的关注，在此表示感谢。也抱歉有一段时间没有及时更新了。<br>此次更新，主要是针对xml配置文件的简化，很多朋友表示Spring的xml的配置比较麻烦。其实Spring开发团队在这方面也是考虑到，<br>提供了一些方法可以让用户去编写xsd文件简单配置。这点我们是可以看到Spring开发团队的努的，现在Spring2.0以及2.5在配置上面也是简化了很多<br>如事务，Aop配置以及util工具类的配置等。<br>源代码下载：<br>二进制程序<br>第三方类库下载,第三方类库下载2 放到lib目录下。<br>api-docs<br>源代码<br><br>关于想学习或使用过关于如何实现Spring的配置的朋友们，可以留言给我，一起进行交流学习。这部分的学习文档也是整理得不够&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2008/04/21/194349.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/194349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-04-21 08:14 <a href="http://www.blogjava.net/xmatthew/archive/2008/04/21/194349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)放出ActiveMQ服务监控组件－基于组件化的监控平台开发</title><link>http://www.blogjava.net/xmatthew/archive/2008/03/31/189505.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Mon, 31 Mar 2008 00:08:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/03/31/189505.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/189505.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/03/31/189505.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/189505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/189505.html</trackback:ping><description><![CDATA[<br />
上次基于<span style="background-color: rgb(40, 255, 93);"><span style="color: red;"><a href="http://www.blogjava.net/xmatthew/articles/185673.html">组件化的监控平台</a></span></span>开发一个<span style="background-color: rgb(40, 255, 93);"><a href="http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html">Tomcat监控插件和邮件报警插件</a></span>。<br />
收到有很多朋友的支持，在些表示非常感谢。这次发布的将包含一个AMQ的监控组件。<br />
<br />
下载地址<br />
<a href="http://www.blogjava.net/Files/xmatthew/spy2servers.zip">二进制程序</a><br />
<a href="http://www.blogjava.net/Files/xmatthew/lib.rar">第三方类库下载</a>,<a href="http://www.blogjava.net/Files/xmatthew/lib2.rar">第三方类库下载2</a> 放到lib目录下。<br />
<a href="http://www.blogjava.net/Files/xmatthew/api-docs.zip">api-docs</a> <br />
<a href="http://www.blogjava.net/Files/xmatthew/spy2servers-core.zip">源代码</a><br />
<br />
<br />
先来介绍ActiveMQ服务监控组件的实现,该监控组件目前实现了以下方面信息的监控：<br />
1. Jvm堆内存和非堆内存的监控（可以设置使用的百分比或是具体使用的内存大小)<br />
2. 当前操作文件打开的IO文件个数监控。 一般操作默认设置的最大值是1024，如果超过这个服务会导致JVM所有服务的停止。<br />
3. Queue队列的消息者监控。如果某一个队列在设定时间段时都没有消息者监听可以监控该状态信息<br />
4. 监控所有非法IP连接.如果有未设定的非法IP连接可以组件监控其非法IP地址，但进行报警<br />
<br />
因为该组件利用JMX技术对ActiveMQ进行监控，AcitveMQ默认状态下其JMX服务是打开着的，端口为1099.如果没有打开，可以修改其配置文件 conf/activemq.xml<br />
activemq 4.x<br />
<br />
&nbsp;&lt;broker brokerName="localhost" <span style="background-color: rgb(40, 255, 93);">useJmx="true"</span> xmlns="http://activemq.org/config/1.0"&gt;<br />
<br />
<br />
下面我们来看一下该监控组件的实现类图<br />
<img src="http://www.blogjava.net/images/blogjava_net/xmatthew/cd.jpeg" alt="" border="0" /><br />
<br />
下面我们来操作一下如何使用Spring注册该组件(spy2servers.xml)，使用其监控平台工作起来。<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">&nbsp;1</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">="org.xmatthew.spy2servers.component.spy.jmx.ActiveMQJmxSpyComponent"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;2</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="host"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="x.x.x.x"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="port"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="1099"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;4</span>&nbsp;<span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;5</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="heapMemorySpy"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">="org.xmatthew.spy2servers.component.spy.jmx.MemorySpy"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="memoryUsedPercentToAlert"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="5"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="alertAfterKeepTimeLive"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="10"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="fileSpy"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">12</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">="org.xmatthew.spy2servers.component.spy.jmx.FileSpy"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">13</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="filesOpenedPercentToAlert"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="8"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">14</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="alertAfterKeepTimeLive"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">15</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">16</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">17</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="destinationNamesToWatch"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">18</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">set</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">19</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;if&nbsp;blank&nbsp;will&nbsp;inspect&nbsp;all&nbsp;queue&nbsp;names&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">20</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Test.Queue</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">21</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">set</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">22</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">23</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;if&nbsp;queue's&nbsp;consumers&nbsp;suspend&nbsp;for&nbsp;this&nbsp;time&nbsp;will&nbsp;alert&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">24</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="queueSuspendNotifyTime"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="2000"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">25</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;any&nbsp;allow&nbsp;ip.&nbsp;if&nbsp;ip&nbsp;not&nbsp;in&nbsp;this&nbsp;list&nbsp;will&nbsp;component&nbsp;will&nbsp;alert&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">26</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="llegalIps"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">27</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">set</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">28</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">127.0.0.1</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">29</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">set</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">30</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">31</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
<br />
好了，基本的配置最是这些，应用程序和源代码已经上传大家可以自写阅览。大家如有任何问题请回复给我。<br />
<br />
Good luck!<br />
Yours Matthew!<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/xmatthew/aggbug/189505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-03-31 08:08 <a href="http://www.blogjava.net/xmatthew/archive/2008/03/31/189505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)基于组件化的监控平台开发监控Tomcat服务及邮件通知功能</title><link>http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Mon, 24 Mar 2008 00:22:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/187934.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/187934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/187934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前一阵因看到一位同事正在开发一个监控软件，就搭建了这组件化的监控平台 http://www.blogjava.net/xmatthew/articles/185673.html。看到有很多朋友的支持，在些表示非常感谢。即然平台已经搭建完成，接下就让需要一起来完善这些真正在应用的组件开发，所以我利用业余时间，开发了一个Tomcat服务监控组件和一个邮件通知服务组件。下载地址二进制程序...&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/187934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-03-24 08:22 <a href="http://www.blogjava.net/xmatthew/archive/2008/03/24/187934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)搭建一个组件化的监控平台 </title><link>http://www.blogjava.net/xmatthew/archive/2008/03/12/185676.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Wed, 12 Mar 2008 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2008/03/12/185676.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/185676.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2008/03/12/185676.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/185676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/185676.html</trackback:ping><description><![CDATA[<a id="viewpost1_TitleUrl" href="http://www.blogjava.net/xmatthew/articles/185673.html">最近看到一位同事正在开发一个监控软件，要求就是通过针对服务器现有的一些接口，通过这些接口返回的数据进行分析，如果监控的值到达预先设定的范围则通过短信的方式发送给管理员。 <br />
<br />
从整个开发的功能上来看是一个比较单一也很明确的功能，所开发的系统对所其所监控的软件的依赖性也非常大，主要是监控的数据分析行为和监控信息的服务报警行为这块。既然这两块很难做成一个通用的功能模块，那就搭建一个监控平台，可以让这些功能模块通过组件的方式自由的注册和销毁。</a><br />
<br />
所有我构思了这个监控平台，它对外有三个接口，分别是监控接口，报警接口和监控消息监控接口。由平台统一管理这些组件的生命周期，每个组件都过单独的线程运行。提供一个核心组件CoreComponent调度所有监控数据的流转。平台本身还使用基于jmx管理服务技术提供对所有当前使用的组件运行情况的监控，也包括动态的启动和停止组件的运行状态。<br />
&nbsp;<br />
下载地址&nbsp;<br />
<a href="http://www.blogjava.net/Files/xmatthew/spy2servers.zip">二进制程序<br />
</a><a href="http://www.blogjava.net/Files/xmatthew/lib.rar">第三方类库下载</a>,<a href="http://www.blogjava.net/Files/xmatthew/lib2.rar">第三方类库下载</a>放到lib目录下。<br />
<a href="http://www.blogjava.net/Files/xmatthew/api-docs.zip">api-docs</a>&nbsp;<br />
<a href="http://www.blogjava.net/Files/xmatthew/spy2servers-core.zip">源代码</a><br />
<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_0_97_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_97_Open_Text.style.display='none'; Codehighlighter1_0_97_Closed_Image.style.display='inline'; Codehighlighter1_0_97_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_97_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_0_97_Closed_Text.style.display='none'; Codehighlighter1_0_97_Open_Image.style.display='inline'; Codehighlighter1_0_97_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_97_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_0_97_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;Component&nbsp;interface.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;组件接口，提供组件的基本管理服务和状态监控。&nbsp;所有组件必须要实现该接口。<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);">&nbsp;XieMaLin<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img id="Codehighlighter1_126_1914_Open_Image" onclick="this.style.display='none'; Codehighlighter1_126_1914_Open_Text.style.display='none'; Codehighlighter1_126_1914_Closed_Image.style.display='inline'; Codehighlighter1_126_1914_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_126_1914_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_126_1914_Closed_Text.style.display='none'; Codehighlighter1_126_1914_Open_Image.style.display='inline'; Codehighlighter1_126_1914_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">interface</span><span style="color: rgb(0, 0, 0);">&nbsp;Component&nbsp;</span><span id="Codehighlighter1_126_1914_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_126_1914_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_137_183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_137_183_Open_Text.style.display='none'; Codehighlighter1_137_183_Closed_Image.style.display='inline'; Codehighlighter1_137_183_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_137_183_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_137_183_Closed_Text.style.display='none'; Codehighlighter1_137_183_Open_Image.style.display='inline'; Codehighlighter1_137_183_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_137_183_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_137_183_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;component&nbsp;run&nbsp;status<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;ST_RUN&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_234_277_Open_Image" onclick="this.style.display='none'; Codehighlighter1_234_277_Open_Text.style.display='none'; Codehighlighter1_234_277_Closed_Image.style.display='inline'; Codehighlighter1_234_277_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_234_277_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_234_277_Closed_Text.style.display='none'; Codehighlighter1_234_277_Open_Image.style.display='inline'; Codehighlighter1_234_277_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_234_277_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_234_277_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;component&nbsp;run&nbsp;status&nbsp;name<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;ST_RUN_NAME&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Active</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_343_382_Open_Image" onclick="this.style.display='none'; Codehighlighter1_343_382_Open_Text.style.display='none'; Codehighlighter1_343_382_Closed_Image.style.display='inline'; Codehighlighter1_343_382_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_343_382_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_343_382_Closed_Text.style.display='none'; Codehighlighter1_343_382_Open_Image.style.display='inline'; Codehighlighter1_343_382_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_343_382_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_343_382_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;component&nbsp;stop&nbsp;status<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;ST_STOP&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_434_478_Open_Image" onclick="this.style.display='none'; Codehighlighter1_434_478_Open_Text.style.display='none'; Codehighlighter1_434_478_Closed_Image.style.display='inline'; Codehighlighter1_434_478_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_434_478_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_434_478_Closed_Text.style.display='none'; Codehighlighter1_434_478_Open_Image.style.display='inline'; Codehighlighter1_434_478_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_434_478_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_434_478_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;component&nbsp;stop&nbsp;status&nbsp;name<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;ST_STOP_NAME&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Decctive</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_547_660_Open_Image" onclick="this.style.display='none'; Codehighlighter1_547_660_Open_Text.style.display='none'; Codehighlighter1_547_660_Closed_Image.style.display='inline'; Codehighlighter1_547_660_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_547_660_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_547_660_Closed_Text.style.display='none'; Codehighlighter1_547_660_Open_Image.style.display='inline'; Codehighlighter1_547_660_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_547_660_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_547_660_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;get&nbsp;component&nbsp;status<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;One&nbsp;of&nbsp;ST_RUN,&nbsp;ST_STOP.&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);">&nbsp;component&nbsp;status<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;getStatus();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_699_835_Open_Image" onclick="this.style.display='none'; Codehighlighter1_699_835_Open_Text.style.display='none'; Codehighlighter1_699_835_Closed_Image.style.display='inline'; Codehighlighter1_699_835_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_699_835_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_699_835_Closed_Text.style.display='none'; Codehighlighter1_699_835_Open_Image.style.display='inline'; Codehighlighter1_699_835_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_699_835_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_699_835_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;get&nbsp;component&nbsp;status<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;One&nbsp;of&nbsp;ST_RUN_NAME,&nbsp;ST_STOP_NAME.&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);">&nbsp;component&nbsp;status&nbsp;name<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;getStatusName();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_881_991_Open_Image" onclick="this.style.display='none'; Codehighlighter1_881_991_Open_Text.style.display='none'; Codehighlighter1_881_991_Closed_Image.style.display='inline'; Codehighlighter1_881_991_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_881_991_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_881_991_Closed_Text.style.display='none'; Codehighlighter1_881_991_Open_Image.style.display='inline'; Codehighlighter1_881_991_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_881_991_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_881_991_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;if&nbsp;component&nbsp;active&nbsp;return&nbsp;true<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);">&nbsp;true&nbsp;if&nbsp;component&nbsp;is&nbsp;in&nbsp;status&nbsp;ST_RUN<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);">&nbsp;isActive();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1030_1080_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1030_1080_Open_Text.style.display='none'; Codehighlighter1_1030_1080_Closed_Image.style.display='inline'; Codehighlighter1_1030_1080_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1030_1080_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1030_1080_Closed_Text.style.display='none'; Codehighlighter1_1030_1080_Open_Image.style.display='inline'; Codehighlighter1_1030_1080_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1030_1080_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1030_1080_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;will&nbsp;be&nbsp;invoked&nbsp;after&nbsp;component&nbsp;plugs.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;startup();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_1108_1160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1108_1160_Open_Text.style.display='none'; Codehighlighter1_1108_1160_Closed_Image.style.display='inline'; Codehighlighter1_1108_1160_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1108_1160_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1108_1160_Closed_Text.style.display='none'; Codehighlighter1_1108_1160_Open_Image.style.display='inline'; Codehighlighter1_1108_1160_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1108_1160_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1108_1160_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;will&nbsp;be&nbsp;invoked&nbsp;after&nbsp;component&nbsp;unplugs.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;stop();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_1185_1341_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1185_1341_Open_Text.style.display='none'; Codehighlighter1_1185_1341_Closed_Image.style.display='inline'; Codehighlighter1_1185_1341_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1185_1341_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1185_1341_Closed_Text.style.display='none'; Codehighlighter1_1185_1341_Open_Image.style.display='inline'; Codehighlighter1_1185_1341_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1185_1341_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1185_1341_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;set&nbsp;component&nbsp;context&nbsp;to&nbsp;the&nbsp;component.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;will&nbsp;auto&nbsp;invoke&nbsp;by&nbsp;CoreComponent<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);">&nbsp;context&nbsp;set&nbsp;the&nbsp;component&nbsp;context<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;setContext(ComponentContext&nbsp;context);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_1396_1441_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1396_1441_Open_Text.style.display='none'; Codehighlighter1_1396_1441_Closed_Image.style.display='inline'; Codehighlighter1_1396_1441_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1396_1441_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1396_1441_Closed_Text.style.display='none'; Codehighlighter1_1396_1441_Open_Image.style.display='inline'; Codehighlighter1_1396_1441_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1396_1441_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1396_1441_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);">&nbsp;get&nbsp;the&nbsp;component&nbsp;context<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;ComponentContext&nbsp;getContext();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1491_1561_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1491_1561_Open_Text.style.display='none'; Codehighlighter1_1491_1561_Closed_Image.style.display='inline'; Codehighlighter1_1491_1561_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1491_1561_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1491_1561_Closed_Text.style.display='none'; Codehighlighter1_1491_1561_Open_Image.style.display='inline'; Codehighlighter1_1491_1561_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1491_1561_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1491_1561_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;get&nbsp;component&nbsp;name<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);">&nbsp;get&nbsp;component&nbsp;name<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;getName();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1601_1689_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1601_1689_Open_Text.style.display='none'; Codehighlighter1_1601_1689_Closed_Image.style.display='inline'; Codehighlighter1_1601_1689_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1601_1689_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1601_1689_Closed_Text.style.display='none'; Codehighlighter1_1601_1689_Open_Image.style.display='inline'; Codehighlighter1_1601_1689_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1601_1689_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1601_1689_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;get&nbsp;component&nbsp;strartup&nbsp;date<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);">&nbsp;get&nbsp;component&nbsp;strartup&nbsp;date<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Date&nbsp;getStartupDate();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1734_1870_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1734_1870_Open_Text.style.display='none'; Codehighlighter1_1734_1870_Closed_Image.style.display='inline'; Codehighlighter1_1734_1870_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1734_1870_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1734_1870_Closed_Text.style.display='none'; Codehighlighter1_1734_1870_Open_Image.style.display='inline'; Codehighlighter1_1734_1870_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1734_1870_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">/**&nbsp;*/</span><span id="Codehighlighter1_1734_1870_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;set&nbsp;startup&nbsp;date&nbsp;to&nbsp;the&nbsp;component.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;will&nbsp;auto&nbsp;invoke&nbsp;by&nbsp;CoreComponent<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);">&nbsp;date&nbsp;startup&nbsp;date<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;setStartupDate(Date&nbsp;date);</span></span></div>
<br />
<br />
点击查看具体内容：<a href="http://www.blogjava.net/xmatthew/articles/185673.html">http://www.blogjava.net/xmatthew/articles/185673.html</a>
<img src ="http://www.blogjava.net/xmatthew/aggbug/185676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2008-03-12 13:48 <a href="http://www.blogjava.net/xmatthew/archive/2008/03/12/185676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>