<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>huangxx</title>
    <description></description>
    <link>http://huangxx.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>JavaScript Development Toolkit 简介</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/216928" style="color:red;">http://huangxx.javaeye.com/blog/216928</a>&nbsp;
          发表时间: 2008年07月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JavaScript Eclipse 插件助您一臂之力，提高 JavaScript 生产力指日可待<br /><br /><br /><a href="http://www.ibm.com/developerworks/cn/opensource/os-eclipse-jsdt/" target="_blank">http://www.ibm.com/developerworks/cn/opensource/os-eclipse-jsdt/</a>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/216928#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jul 2008 15:19:25 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/216928</link>
        <guid>http://huangxx.javaeye.com/blog/216928</guid>
      </item>
      <item>
        <title>【首页推荐】1万个学者,70万个记者,3亿网民,比不上1个警察</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/211235" style="color:red;">http://huangxx.javaeye.com/blog/211235</a>&nbsp;
          发表时间: 2008年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://cache.tianya.cn/publicforum/content/no06/1/83723.shtml" target="_blank">http://cache.tianya.cn/publicforum/content/no06/1/83723.shtml</a><br /><br />党的生日前两天，农民周正龙宣告被刑事拘留，罪名是涉嫌诈骗犯罪，同时13名政府官员因此丢官，包括朱巨龙、关克等风云人物都被免职。。持续八个月之久的华南虎闹剧正式宣布收场。 <br />　　人们欢呼这是3亿网民的共同胜利。其实这个胜利不光属于网民，还属于极力打虎的一大批动物学家、鉴定专家、植物学家、光学专家、美术专家、绘画专家、法律专家、网络专家、动物毛发专家、树叶朝向专家、虎爪模具专家、专业专家业余专家，等等，其总人数概有1万。这个胜利还属于70万中国记者，他们为揭露这个丑闻、寻求最终真相，不遗余力跟踪万里，追踪八个月，这才看到了最终结果。 <br />　　然而这不是喜剧，却是个悲剧。一个普通农民的造假，在1万个专家学者、70万个记者、3亿网民的联合持续声讨下却能屹立巍然如山不倒，最终仅仅一两个普通警察就能将抓获之、破案之、公布真相大白之。 <br />　　我们不能不感叹国家公共权力的力量。一个无论多么小的警察，代表的也是最强悍的国家机器，他所行使的是国家最权威、最高效、最具深刻洞察力的工具。 <br />　　之前许多网友、专家都充分论证过，周老虎绝对是假的，连如何造假的细节都分析的一清二楚。但这种分析不会产生任何结果，因为3亿网民的声讨，也不能改变既定的事实，网民以及专家、记者们，都没有改变事件进程的力量。 <br />　　改变事件进程的唯一力量在于掌握公共权力的机关，如监察局、公安局。而一切问题的恐怖性也在于此，改变事件进程的决定力量仅仅在于他们自己的决定，他们可以考虑民意，进行判断和调查，却也可以完全忽略强大的民意，拒绝调查，或者作出相反的调查结果来。 <br />　　高莺莺、廖梦君，网友多以为是冤死，但调查部门的结论是自杀，也就只能认为是自杀。红钻帝国发了个帖子就被拘留，百万网民集体上网抗议，但也于事无补。 <br />　　彭州要上石化项目，成都市民散步抗议，如果不是大地震来袭，把项目办公楼都震塌了，那个石化项目绝对已成为现实。强大的民意抗议，却敌不过权力部门的一个文件。 <br />　　<span style="font-size: large"><strong>一切大问题的根源，就是舆论的监督力量，不能构成对公共权力的威胁。何以如此，那是因为，权力的来源，不是民众的选举，而是上级的任命和选拔。再强大的民意，也不能构成对权力的丝毫威胁，权力又何必去讨好民意？</strong></span><br />　　
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/211235#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jul 2008 19:37:25 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/211235</link>
        <guid>http://huangxx.javaeye.com/blog/211235</guid>
      </item>
      <item>
        <title>Java中 static/transient,final/volatile 说明</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/210953" style="color:red;">http://huangxx.javaeye.com/blog/210953</a>&nbsp;
          发表时间: 2008年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://hi.baidu.com/jxliaom/blog/item/e9d5fd6d0bf6c3fe4316942b.html"><span style="font-size: small;">http://hi.baidu.com/jxliaom/blog/item/e9d5fd6d0bf6c3fe4316942b.html</span></a></p>
<p><span style="font-size: small;">&nbsp;</span></p>
<div><span style="font-size: small;">你可以任意使用如下的修改限定关键字来定义一个字段：</span></div>
<div><span style="font-size: small;">final或者volatile和/或者static和/或者transient。</span></div>
<div><br /><span style="font-size: small;">如果你将一个字段定义为final，编译器将确保字段当成一个常量&mdash;&mdash;只读变量来初始化和处理。因为编译器知道常量是不变的，所以在程序的字节码中对其进行了内部优化。</span></div>
<div><span style="font-size: small;">如果你将一个字段声明为volatile，则多线程将能访问此字段，而特定的编译器将防止最优化以使该字段能被适当的访问。</span></div>
<div><span style="font-size: small;">如果你将一个字段定义为static，则所有对象都将共享此字段的一份拷贝。当你将一个新值赋给这个字段时，所有对象都将得到这个新值。如果没有指定为static，则这个字段将是一个实例字段，每个对象都使用他们自己的一份拷贝。<br /></span></div>
<div><span style="font-size: small;">定义为transient的字段值在对象串行化过程中将不被保存。</span></div>
<div><strong></strong></div>
<div><span style="font-size: small;"><strong></strong></span></div>
<div><span style="font-size: small;"><strong></strong></span></div>
<div><span style="font-size: small;"><strong>实例字段<br /></strong>&ldquo;实例字段&rdquo;就是没有使用static修改标识符定义的字段。实例字段和对象紧密相连&mdash;&mdash;而不是和类。当在一个对象代码里修改时，仅仅这个相关的类实例&mdash;&mdash;对象&mdash;&mdash;可以得到这个改变。实例字段随对象的创建而创建，随对象的释放而释放。</span></div>
<div><strong></strong></div>
<div><span style="font-size: small;"><strong></strong></span></div>
<div><span style="font-size: small;"><strong></strong></span></div>
<div><span style="font-size: small;"><strong>类字段<br /></strong>类字段是用static关键字定义的字段。类字段和类联系&mdash;&mdash;而不是对象。当在一个类代码中修改时，这个类（以及所有创建的对象）都能感知这个变化。类字段随类的加载而创建，随类的卸载而释放</span></div>
<div><strong></strong></div>
<div><span style="font-size: small;"><strong></strong></span></div>
<div><span style="font-size: small;"><strong></strong></span></div>
<div><span style="font-size: small;"><strong>常量<br /></strong>&ldquo;常量&rdquo;是一种只读变量；当JVM初始化这种变量后，变量的值就不能改变了。<br />使用final关键字来定义常量。正如有两种字段&mdash;&mdash;实例和类字段，常量也有两种&mdash;&mdash;实例常量和类常量。为了提高效率，应当创建类常量，或者说是final static字段。</span></div>
<div><span style="font-size: small;">
<pre name="code" class="java">class Constants

{

final int FIRST = 1;

final static int SECOND = 2;



public static void main(String[] args)

{

int iteration = SECOND;



if (iteration == FIRST)//编译错误

System.out.println(“first iteration”);

else

if (iteration == SECOND)

System.out.println(“second iteration”);

}

}</pre>
&nbsp;</span><br /><span style="font-size: small;">上例中的Constants类定义了一对常量&mdash;&mdash;FIRST和SECOND。FIRST是实例常量，因为JVM给每个Constants对象分配一份FIRST的拷贝。相反的，因为JVM在加载Constants类后只创建了一份SECOND拷贝，所以SECOND是类常量。<br />注意：当你尝试在main()中直接访问FIRST时会导致一个编译错误。常量FIRST直到一个对象创建时才存在，所以FIRST仅仅只能被这个对象所访问&mdash;&mdash;而不是类。</span></div>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/210953#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jul 2008 11:14:36 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/210953</link>
        <guid>http://huangxx.javaeye.com/blog/210953</guid>
      </item>
      <item>
        <title>N73: 手机上不了网</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/206624" style="color:red;">http://huangxx.javaeye.com/blog/206624</a>&nbsp;
          发表时间: 2008年06月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>不知道为啥，手机忽然上不了网了；</p>
<p>&nbsp;</p>
<p>于是捣鼓了一番，解决了问题，步骤如下：</p>
<p>&nbsp;</p>
<p>1.删除所有的接入点；</p>
<p>&nbsp;</p>
<p>2.到网络里面向导接入一把，好像会自动到移动下载接入点；</p>
<p>&nbsp;</p>
<p>3、选择适合的接入点就可以上网了（用的cmwap）。</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/206624#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 21 Jun 2008 12:42:58 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/206624</link>
        <guid>http://huangxx.javaeye.com/blog/206624</guid>
      </item>
      <item>
        <title>cometd: 基于jetty 的压力测试步骤</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/205519" style="color:red;">http://huangxx.javaeye.com/blog/205519</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://docs.codehaus.org/display/JETTY/Stress+Testing+Cometd">http://docs.codehaus.org/display/JETTY/Stress+Testing+Cometd</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Jetty comes with cometd installed in <tt>$JETTY_HOME/webapps/cometd.war</tt>.<br />To run the server with additional memory needed for the test, use:</p>
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">java -Xmx2048m -jar start.jar etc/jetty.xml</pre>
</div>
<div class="codeContent panelContent">While the test is executing, a series of digits is output to show progress. The digits represent the current average latency in units of 100ms. So a 0 represent &lt;100ms latency from <span style="color: #ff0000;">the time the message was publish by the client to when it has been received on the client.</span> 1 represents a latency &gt;=100ms and &lt;200ms etc.</div>
<div class="codeContent panelContent"><br /></div>
<div class="codeContent panelContent">Also a real chat room server implementation would probably be backed by JMS so that multiple nodes would still represent a single chat space.(意味着可以利用JMS来做集群？)</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/205519#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 20:40:31 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/205519</link>
        <guid>http://huangxx.javaeye.com/blog/205519</guid>
      </item>
      <item>
        <title>cometd: jetty</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/205515" style="color:red;">http://huangxx.javaeye.com/blog/205515</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://docs.codehaus.org/display/JETTY/Cometd+%28aka+Bayeux%29">http://docs.codehaus.org/display/JETTY/Cometd+%28aka+Bayeux%29</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Jetty includes a servlet implementation of the <a href="http://svn.xantus.org/shortbus/trunk/bayeux/protocol.txt" rel="nofollow">Bayuex</a> protocol of <a href="http://www.cometd.com/" rel="nofollow">cometd</a> from the <a href="http://dojotoolkit.org/foundation/" rel="nofollow">Dojo Foundation</a>.</p>
<p>Cometd is a <span style="color: #ff0000;">message bus</span> for Ajax web applications that allows multi channel messaging between client and server - and more importantly - between server and client. The paradigm is publish/subscribe to named channels.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.webtide.com/downloads/whitePaperAjaxJetty.html">http://www.webtide.com/downloads/whitePaperAjaxJetty.html</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 3.7pt 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan;"><span style="font-size: 12pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-GB;">To deal with the need for servlets to have an <span style="color: #ff0000;">efficient waiting mechanism</span>, Jetty 6 introduced a Continuation Mechanism, which allows the current threads handler to be suspended and resumed at a later time in response to a timeout or an asynchronous event. A continuation is obtained by a servlet via a portable API that will work in any Servlet container. <span style="color: #ff0000;">In containers other than Jetty, a simple WaitingContinuation</span> is used where suspend is the equivalent to a wait() and resume the equivalent of an notify(), so the application works<span style="color: #ff0000;"> but does not avoid the problem of thread allocation</span>.</span></p>
<p class="MsoNormal" style="margin: 0cm 3.7pt 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 3.7pt 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan;"><span style="font-size: 12pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-GB;">When run in Jetty, the continuation instance obtained will be a RetryContinuation, which <span style="color: #ff0000;">when suspended actually throws a special RuntimeException that allows the request thread to exit the Filter/RequestDispatcher/Servlet chain and unwind the statck to the container. The thread is returned to the pool while Jetty holds the request</span> until <span style="color: #ff0000;">either a timeout occurs or the resume method is called.</span></span></p>
<p class="MsoNormal" style="margin: 0cm 3.7pt 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 3.7pt 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan;"><span style="font-size: 12pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-GB;">This mechanisms relies on the stateless nature of HTTP and the ability to retry idempotent requests. <span style="color: #ff0000;">It allows requests to wait within the container rather than within the servlet, without the expense of the allocated thread and buffers.</span></span></p>
<p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://docs.codehaus.org/display/JETTY/Continuations">http://docs.codehaus.org/display/JETTY/Continuations</a></p>
<p>&nbsp;</p>
</p>
<p>&nbsp;Continuations will be replaced by standard Servlet-3.0 suspendable requests once the specification is finalized. Early releases of Jetty-7 are now available that implement the proposed standard suspend/resume API</p>
<p>&nbsp;&nbsp;</p>
<h2><a name="Continuations-Howitworks"></a>How it works</h2>
<p>Behind the scenes, Jetty has to be a bit sneaky to work around Java and the Servlet specification as there is no mechanism in Java to suspend a thread and then resume it later. The first time the request handler calls continuation.suspend(timeoutMS) a RetryRequest runtime exception is thrown. This exception propagates out of all the request handling code and is caught by Jetty and handled specially. Instead of producing an error response, Jetty places the request on a timeout queue and returns the thread to the thread pool.</p>
<p>When the timeout expires, or if another thread calls continuation.resume(event) then the request is retried. This time, when continuation.suspend(timeoutMS) is called, either the event is returned or null is returned to indicate a timeout. The request handler then produces a response as it normally would.</p>
<p>Thus this mechanism uses the stateless nature of HTTP request handling to simulate a suspend and resume. The runtime exception allows the thread to legally exit the request handler and any upstream filters/servlets plus any associated security context. The retry of the request, re-enters the filter/servlet chain and any security context and continues normal handling at the point of continuation.</p>
<p>Furthermore, the API of Continuations is portable. If it is run on a non-Jetty6 server it will simply use wait/notify to block the request in getEvent. If Continuations prove to work as well as I hope, I plan to propose them as part of the 3.0 Servlet JSR. </p>
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
    rdf:about="http://docs.codehaus.org/display/JETTY/Continuations"
    dc:identifier="http://docs.codehaus.org/display/JETTY/Continuations"
    dc:title="Continuations"
    trackback:ping="http://docs.codehaus.org/rpc/trackback/47158" />
</rdf:RDF>
--><!--
    Root decorator: all decisions about how a page is to be decorated via the
                    inline decoration begins here.
--><!--
    Switch based upon the context. However, for now, just delegate to a decorator
    identified directly by the context.
-->
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/205515#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 20:22:35 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/205515</link>
        <guid>http://huangxx.javaeye.com/blog/205515</guid>
      </item>
      <item>
        <title>多路复用</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/205146" style="color:red;">http://huangxx.javaeye.com/blog/205146</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <table cellspacing="0" border="0" width="100%" cellpadding="0" style="height: 6px;">
<tbody>
<tr>
<td height="10" width="548">
<p style="margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><strong><span style="font-size: medium; color: #ff0000; font-family: 隶书;">1、多路复用的目的：</span><span style="font-size: medium; color: #0000ff; font-family: 隶书;">&nbsp;</span> </strong></p>
<p style="margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><strong>&nbsp;&nbsp;&nbsp; </strong></span><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small;">充分利用昂贵的通信线路，尽可能地容纳较多的用户和传输较多的信息。</span></span></p>
</td>
</tr>
<tr>
<td height="5" width="548">
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 150%;"><strong><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: medium; color: #ff0000; font-family: 隶书;">2、多路复用的基本原理：</span></span></strong> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp; 当物理信道的可用带宽超过单个原始信号所需的带宽时，可将该物理信道的总带宽分割成若干个固定带宽的子信道，并利用每个子信道传输一路信号，从而达到多路信号共用一个信道，或者将多路信号组合在一条物理信道上传输的目的，充分利用信道容量。</span></span> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><strong><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: medium; color: #ff0000; font-family: 隶书;">3、多路复用主要采用的技术：</span></span></strong> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><a href="../dlfy1.htm"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><span style="text-decoration: underline;"><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;">（1）</strong><strong>频分多路复用（<span lang="EN-US">FDM<strong style="mso-bidi-font-weight: normal;">－Frequency Division Multiplexing</strong>）</span></strong></span></span></a></span> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><a href="../dlfy2.htm"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><span><span style="text-decoration: underline;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;">（2）</strong></span><strong><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;">时分多路复用（TDM－Time Division Multiplexing）</span></strong></strong></span></span></span></span></a> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><strong><span lang="EN-US"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><a href="../dlfy3.htm"><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><span style="text-decoration: underline;">T1系统</span></span></span></a></strong> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><strong><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small; color: #0000ff; font-family: 隶书;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="../dlfy4.htm"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><span style="text-decoration: underline;">E1系统</span></span></a></span></strong> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><a href="../dlfy4.htm"><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><span style="text-decoration: underline;"><span style="font-size: small; color: #0000ff; font-family: 隶书;">（3）波分多路复用（</span><span lang="EN-US"><span style="font-size: small; color: #0000ff; font-family: 隶书;">Wavelength Division Multiplexing）</span></span></span></strong></a></span> </p>
<p class="MsoNormal" style="margin-top: 4px; text-justify: inter-ideograph; margin-bottom: 4px; line-height: 150%;">　</p>
</td>
</tr>
</tbody>
</table>
<table cellspacing="0" border="0" width="100%" cellpadding="0" style="height: 1px;">
<tbody>
<tr>
<td height="5" width="548">
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><span style="font-size: small; color: #ff0000; font-family: 隶书;">（1）</span></strong></span><strong><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: medium; color: #ff0000; font-family: 隶书;">频分多路复用</span><span style="font-size: small; color: #ff0000; font-family: 隶书;">（<span lang="EN-US">FDM<strong style="mso-bidi-font-weight: normal;">－Frequency Division Multiplexing</strong>）：</span></span></span></strong> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small; font-family: 宋体;"><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; <strong>用途：</strong></span><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">主要用于模拟信道的复用。</span></span></span> </p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small; font-family: 宋体;"><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; <strong>原理：</strong></span>不同的传输媒体具有不同的带宽（信号不失真传输的频率范围）.频分多路复用技术对整个物理信道的可用带宽进行分割，并利用载波调制技术，实现原始信号的频谱迁移，使得多路信号在整个物理信道带宽允许的范围内，实现频谱上的不重叠，从而共用一个信道。为了防止多路信号之间的相互干扰，使用隔离频带来隔离每个子信道。</span></span> </p>
<p style="margin-top: 4px; text-justify: inter-ideograph; margin-bottom: 4px; line-height: 200%;"><span style="font-family: 宋体;"><span style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;"><span style="font-size: small;"><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; <strong>工作过程：</strong></span><span lang="EN-US" style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;">先对多路信号的频谱范围进行限制（分割频带），</span></span></span><span style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;"><span style="font-size: small;"><span lang="EN-US" style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;"> 然后</span><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">通过变频处理，将多路信号分配到不同的频段。</span></span></span></span></p>
</td>
</tr>
<tr>
<td height="200" bgcolor="#e1e1e1">
<p align="center" style="margin-top: 4px; margin-bottom: 4px;">
<object height="200" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="400">
<param name="src" value="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/pfdlfu.swf" /><embed src="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/pfdlfu.swf" type="application/x-shockwave-flash" height="200" width="400"></embed>
</object>
</p>
</td>
<td height="16" bgcolor="#e1e1e1">　 </td>
</tr>
</tbody>
</table>
<table cellspacing="0" border="0" width="100%" cellpadding="0" style="height: 1px;">
<tbody>
<tr>
<td height="100" width="548">
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 150%;"><strong><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><span style="color: #ff0000;"><span style="font-size: medium; font-family: 隶书;">(2)<strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;">时分多路复用</strong></span><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><span style="font-size: small; font-family: 隶书;">（<span lang="EN-US">TDM－Time Division Multiplexing）</span></span></strong></span></span></strong></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;"><span style="mso-spacerun: yes;"><strong><span style="font-size: small; color: #0000ff; font-family: 宋体;">用&nbsp; 途：</span></strong></span><span style="font-size: small; font-family: 宋体;">主要用于数字信道的复用。</span></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="font-size: small;"><span style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;"><strong><span style="color: #0000ff; font-family: 宋体;">原&nbsp; 理</span></strong><span style="font-family: 宋体;">：当物理信道可支持的位传输速率超过单个原始信号要求的数据传输速率时，可以将该物理信道划分成若干时间片，并将各个时间片轮流地分配给多路信号，使得它们在时间上不重叠。</span></span></span><strong><span style="font-size: small;"><span style="letter-spacing: 0.1pt; mso-hansi-font-family: Times New Roman;"><span lang="EN-US"><span style="color: #0000ff; font-family: 隶书;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-hansi-font-family: 'Times New Roman';"> </span></span></span></span></span></strong></p>
</td>
</tr>
<tr>
<td height="182" bgcolor="#e1e1e1">
<p align="center" style="margin-top: 4px; margin-bottom: 4px;">
<object height="200" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="400">
<param name="src" value="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/sfdlfy.swf" /><embed src="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/sfdlfy.swf" type="application/x-shockwave-flash" height="200" width="400"></embed>
</object>
</p>
<p align="center" style="margin-top: 4px; margin-bottom: 4px;"><span style="font-size: small;"><strong><span style="color: #0000ff;">应&nbsp; 用：</span></strong><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">使用时分多路复用技术来支持语音信号的传输</span></span> </p>
</td>
</tr>
</tbody>
</table>
<p style="margin-top: 0px; margin-bottom: 0px; line-height: 150%;"><span style="font-size: medium; color: #ff0000; font-family: 隶书;"><strong>T1系统：</strong></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp; T1系统采用时分多路复用技术，它具有</span><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small;">24路语音信号，8bit/路，125(微秒）/周期；</span></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 150%;"><span style="font-size: small;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个周期：8（bit）* 24路 + 1（同步位）= 193（bit），</span></span></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 150%;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 传输速率为： 193（bit）/125（微秒）=1.544Mbps&nbsp;&nbsp;</span></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 150%;">　</p>
<p align="center" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><img src="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/dlfy3.1.gif" border="0" height="83" alt="" style="border: 0;" width="430" /></p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp; TDM技术可以使得更多路信号复用到速率更高的信道上。例如：4路T1(1.544Mbps)复用到T2(6.312Mbps),7路T2再复用到T3(44.736Mbps)</span></span></p>
<p align="left" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;">　</p>
<p align="center" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><img src="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/dlfy3.4.gif" border="0" height="122" alt="" style="border: 0;" width="506" /></p>
<p align="center" style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="font-size: small; color: #0000ff;"><strong>4路T1 系统复用示意图</strong></span></p>
<p style="margin-top: 0px; margin-bottom: 4px; line-height: 150%;"><strong><span style="font-size: medium; color: #ff0000; font-family: 隶书;"><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">E1系统：</span></span></strong></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><strong><span style="font-size: small; font-family: 宋体;"><span lang="EN-US" style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">&nbsp;&nbsp;&nbsp; </span></span></span></strong><span style="font-size: small; font-family: 宋体;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">E1系统采用时分多路复用技术，它有32路语音信号，8bit/路，125微秒/周期，传输速率：32*8/125=2.048Mbps。E1系统示意图如下：</span></span></p>
<p align="center"><img src="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/dlfy3.2.gif" border="0" height="145" alt="" style="border: 0;" width="451" /></p>
<p align="center"><img src="http://web.nuist.edu.cn/courses/jsjwl/cha2/images/dlfy3.3.gif" border="0" height="153" alt="" style="border: 0;" width="450" /></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 150%;"><span style="font-size: small; color: #0000ff; font-family: 隶书;"><span style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;"><strong style="letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-weight: normal;">（３）波分多路复用（<span lang="EN-US">Wavelength Division Multiplexing）</span></strong></span></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="font-size: small;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span lang="EN-US">　</span><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">　<span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Times New Roman;">波分多路复用实质上是<span style="color: #ff0000;">利用了光具有不同的波长的特征</span>。随着光纤技术的使用，基于光信号传输的复用技术得到重视。</span></span></span></span></p>
<p style="margin-top: 4px; margin-bottom: 4px; line-height: 200%;"><span style="font-size: small;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><span style="font-family: 宋体; letter-spacing: 0.1pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Times New Roman;">　　<span style="color: #0000ff;">波分多路复用的原理：</span>利用波分复用设备将不同信道的信号调制成不同波长的光，并复用到光纤信道上。在接收方，采用波分设备分离不同波长的光。</span></span></span> </p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/205146#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 15:10:29 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/205146</link>
        <guid>http://huangxx.javaeye.com/blog/205146</guid>
      </item>
      <item>
        <title>cometd: dojo 跨越访问之JSONP</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/204302" style="color:red;">http://huangxx.javaeye.com/blog/204302</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://www.matrix.org.cn/resource/article/2008-03-06/b2e0ea4e-eb69-11dc-91da-b599c3ba16ef.html">http://www.matrix.org.cn/resource/article/2008-03-06/b2e0ea4e-eb69-11dc-91da-b599c3ba16ef.html</a></p>
<p>&nbsp;</p>
<pre name="code" class="js">		// if xdomain, then we assume jsonp for handshake
		if(this._isXD){
			bindArgs.callbackParamName = "jsonp";
			r = dojo.io.script.get(bindArgs);
		}else{
			r = dojo.xhrPost(bindArgs);
		}</pre>
<p>&nbsp;</p>
<pre name="code" class="js">	attach: function(/*String*/id, /*String*/url, /*Document?*/frameDocument){
		//	summary:
		//		creates a new &lt;script&gt; tag pointing to the specified URL and
		//		adds it to the document.
		//	description:
		//		Attaches the script element to the DOM.  Use this method if you
		//		just want to attach a script to the DOM and do not care when or
		//		if it loads.
		var doc = (frameDocument || dojo.doc);
		var element = doc.createElement("script");
		element.type = "text/javascript";
		element.src = url;
		element.id = id;
		doc.getElementsByTagName("head")[0].appendChild(element);
	},
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>cometd 里面有JSONP的知识，所以搜索了一下，见上面的链接。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong><span style="font-size: 14px;"><span style="color: #0000ff;">预备知识：</span></span><br /><br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.什么是JSONP：JSONP（JSON with Padding）是一个非官方的协议，它允许在服务器端集成Script tags返回至客户端，通过javascript callback的形式实现跨域访问（这仅仅是JSONP简单的实现形式）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.为什么使用JSONP：由于 JSON 只是一种含有简单括号结构的纯文本，因此许多通道都可以交换 JSON 消息。因为<a href="http://wiki.matrix.org.cn/Wiki.jsp?page=Sameoriginpolicy" target="_new">同源策略</a>的限制，我们不能在与外部服务器进行通信的时候使用 XMLHttpRequest。而JSONP是一种可以绕过同源策略的方法，即通过使用 JSON 与 &lt;script&gt; 标记相结合的方法，从服务端直接返回可执行的JavaScript函数调用或者JavaScript对象。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.谁在使用JSONP：<a href="http://dojotoolkit.org/" target="_new">dojo</a>、<a href="http://mg.to/2006/01/25/json-for-jquery" target="_new">JQuery</a>、<a href="http://code.google.com/apis/youtube/overview.html" target="_new">Youtube GData API </a>、<a href="http://code.google.com/apis/socialgraph/" target="_new">Google Social Graph API </a>、<a href="http://apidoc.digg.com/" target="_new">Digg API</a> 、<a href="http://www.geonames.org/export/" target="_new">GeoNames webservice</a>、<a href="http://www.douban.com/service/apidoc/guide" target="_new">豆瓣API</a>、<a href="http://ajaxian.com/archives/jsonp-json-with-padding" target="_new">Del.icio.us JSON API</a>等。<br /><br /><br />......</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/204302#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 20:14:55 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/204302</link>
        <guid>http://huangxx.javaeye.com/blog/204302</guid>
      </item>
      <item>
        <title>cometd: dojo channel &quot;&quot;/cometd/meta&quot;</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/203805" style="color:red;">http://huangxx.javaeye.com/blog/203805</a>&nbsp;
          发表时间: 2008年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: #ff0000;">"/cometd/meta"</span></p>
<p>&nbsp;</p>
<p><a name="msg_9576ec444661f75b"></a>I didn't have time to test it, but here's a code snippet that I *think* <br />should work:</p>
<p>function listenerFunc(event) <br />{ <br />&nbsp; if (event.action == "disconnect") <br />&nbsp; { <br />&nbsp; &nbsp; // do something <br />&nbsp; }</p>
<div class="qt" id="qhide_8802" style="display: block;">} <br /><br /></div>
<p><span style="color: #ff0000;">dojo.subscribe("/cometd/meta", dojo.hitch(listenerFunc)); <br /></span></p>
<p><span style="color: #ff0000;">The idea is that you can subscribe to /cometd/meta. I use it to detect <br />reconnects, handshakes, etc. Take a look at the Cometd Chat demo.</span></p>
<p>-Geoffrey Lee</p>
<p>On Feb 8, 2008 4:58 PM, mgorkani &lt;mgork<a href="../../../groups/unlock?msg=9576ec444661f75b&amp;_done=/group/cometd-users/browse_thread/thread/d3c0dc24d1b6fcc3" target="_parent">...</a>@gmail.com&gt; wrote:</p>
<p><a href="../?hide_quotes=no#msg_9576ec444661f75b" class="qt" onclick="return tog_quote(8803); "></a>
<p>&nbsp;</p>
<div class="qt" id="qhide_8803" style="display: block;">
<p>&gt; In cometd 6.1.6 it was possible to subscribe to /meta/disconnect <br />&gt; channel. With 6.1.7 this doesn't seem to be supported. Any other way <br />&gt; to be notified that a client has been disconnect without overwriting <br />&gt; something in the actual cometd code? </p>
</div>
</p>
<div class="hqt" id="qheader_shown_8803" style="display: block;">- 隐藏被引用文字 -</div>
<div class="sqt" id="qheader_hidden_8803" style="display: none;">- 显示引用的文字 -</div>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/203805#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 15 Jun 2008 21:50:36 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/203805</link>
        <guid>http://huangxx.javaeye.com/blog/203805</guid>
      </item>
      <item>
        <title>web服务器绑定0.0.0.0 和 127.0.0.1 的区别</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/203511" style="color:red;">http://huangxx.javaeye.com/blog/203511</a>&nbsp;
          发表时间: 2008年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>发现在局域网其他人的电脑上浏览我的电脑上的提供的WEB服务的时候，竟然是无法显示，</p>
<p>&nbsp;</p>
<p>查找问题，发现是在ECLIPSE里面启动的JETTY服务器绑定的ip地址是127.0.0.1，LOCALHOST可以访问，但是IP地址不能访问，设想会不会是注册表&lsquo;restrictanonymous&rsquo;值的问题，因为前几天刚刚由瑞星防火墙改了这个值，后来又想到会不会是绑定的IP地址的问题，</p>
<p>&nbsp;</p>
<p>于是在windows系统里面启动jetty服务器，发现可以用IP地址访问，仔细看看，JETTY绑定了0.0.0.0这个地址，于是回到eclipse里面改了地址，果然可以IP地址访问了，问题就在这里。</p>
<p>&nbsp;</p>
<p>&lsquo;</p>
<p>127.0.0.1是保留IP，无论你的外部IP是什么系统都保留这Ip识别， &nbsp; <br />&nbsp; 0.0.0.0应该是做为动态IP用，因为我发现上网后它会被外部ip替换&nbsp;&nbsp;</p>
<p>&rsquo;</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/203511#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 15 Jun 2008 16:47:49 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/203511</link>
        <guid>http://huangxx.javaeye.com/blog/203511</guid>
      </item>
      <item>
        <title>cometd: Bayeux Protocol </title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/203338" style="color:red;">http://huangxx.javaeye.com/blog/203338</a>&nbsp;
          发表时间: 2008年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html">http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html</a></p>
<p>&nbsp;</p>
<p>要了解DOJO的COMETD的实现，最好先了解一下这个协议</p>
<p>&nbsp;</p>
<p><a href="http://cometd.com/">http://cometd.com/</a></p>
<p>&nbsp;</p>
<p><a href="http://dojotoolkit.org/">http://dojotoolkit.org/</a></p>
<p>&nbsp;</p>
<p><a href="http://jetty.mortbay.org/jetty-6/">http://jetty.mortbay.org/jetty-6/</a></p>
<p>&nbsp;</p>
<p><a href="http://cometdproject.dojotoolkit.org/">http://cometdproject.dojotoolkit.org/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Cometd</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">The Scalable Comet Framework.</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Cometd is a scalable HTTP-based event routing bus that uses a push technology pattern known as </span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Comet</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">. The term 'Comet' was coined by <a href="http://alex.dojotoolkit.org/"><span style="color: black; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; text-decoration: none; text-underline: none;">Alex Russell</span></a> in his post '<a href="http://alex.dojotoolkit.org/?p=545"><span style="color: black; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; text-decoration: none; text-underline: none;">Comet: Low Latency Data for the Browser</span></a>'. The letter d is for </span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">'Daemon'</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">, as described by <a href="http://www.answers.com/daemon&amp;r=67"><span style="color: black; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; text-decoration: none; text-underline: none;">Answers.com</span></a>, Daemon is a program or process that sits idly in the background until it is invoked to perform its task. </span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Cometd consists of a protocol spec called <a href="http://cometd.com/bayeux/"><span style="color: red; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; text-decoration: none; text-underline: none;">Bayeux</span></a>, JavaScript libraries (dojo toolkit), and an event server.</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Cometd = Comet + </span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Daemon </span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">= dojo </span><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;">（</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">js</span><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;">）</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> + </span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"><a href="http://cometd.com/bayeux/"><span style="color: red; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; text-decoration: none; text-underline: none;">Bayeux</span></a></span><span style="font-size: 10pt; color: red; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;">（协议）</span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> + Jetty</span><span style="font-size: 10pt; color: red; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;">（事件驱动的</span><span lang="EN-US" style="font-size: 10pt; color: red; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">WEB</span><span style="font-size: 10pt; color: red; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial;">服务器）</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"></span></p>
<p>&nbsp;</p>
<h1 class="title">Messages</h1>
<!-- start main content -->
<div class="node"><span class="submitted">Submitted by gregwilkins on Thu, 06/05/2008 - 02:53.</span>
<div class="content">
<h2>Specification vs Instantiation vs Transport</h2>
<p>Bayeux messages:</p>
<ul>
<li>are specified in JSON. </li>
<li>should be instantiated in the natural object representation of the language used for the client/server </li>
<li>may be transported via any appropriate serialization that the specific transport supports. This may be a JSON String, an XML document or some other serialization. </li>
</ul>
<p>A simple bayuex message could be specified as:</p>
<blockquote>
<pre>{channel:"/some/channel",data:[1,2,3]}
</pre>
<p>&nbsp;</p>
</blockquote>
<p>This message has a natural instantiation in javascript. The message could be transported as a wire format that uses the JSON as described above, or the instantiated javascript objects could be serialized to XML if some transported wished. If delivered to a java bayeux implementation, then the message would be instantiated as a <code>java.util.Map&lt;String,Object&gt;</code> instance that contained <code>java.lang.String</code> keys and values of type <code>java.lang.String</code> and <code>java.util.Array&lt;Object&gt;</code>. </p>
<h2>Reserved Fields</h2>
<p>All fields in the top level of a json message are reserved for the use of the protocol. The following fields are the most important defined fields:</p>
<dl><dt><strong>channel</strong> </dt><dd>All messages MUST have a channel field with a string value that identifies the handler for the message. </dd><dt><strong>clientId</strong> </dt><dd>A message MAY have a clientId field with a string value that with identity of the client. ClientIDs are only unique within a single non-cluster Bayeux server and are only valid for the duration of the Bayeux connected state. They should be considered roughly equivalent to a HTTP session ID and treated the same with regards to security and longevity. </dd><dt><strong>id</strong> </dt><dd>Any message may contain an id field with a string value that identifies the message. The id is generated by the creator of the message and it's uniqueness or otherwise is application specific. </dd><dt><strong>data</strong> </dt><dd>The message payload. An arbitrary object </dd><dt><strong>advice</strong> </dt><dd>Transport specific parameters. </dd><dt><strong>ext</strong> </dt><dd>Extension space </dd><dt><strong>successful</strong> </dt><dd>Indicates the success of a protocol operation. Used in a response message </dd><dt><strong>error</strong> </dt><dd>Error code and message </dd></dl></div>
</div>
<p>&nbsp;</p>
<h1 class="title">Channel</h1>
<!-- start main content -->
<div class="node"><span class="submitted">Submitted by gregwilkins on Thu, 06/05/2008 - 02:52.</span>
<p class="content">Channels look like URIs: /foo/bar</p>
<p class="content">Channels starting with /meta/ are reserved for the use of the protocol (eg /meta/handshake)</p>
<p class="content">Channels are by default broadcast publish subscribe, so that all subscribers will see all messages published to the channel on the server.</p>
<p class="content">Messages may be privately delivered to a specific client + channel combination and bypass any default routing.</p>
<p class="content"><span style="color: #ff0000;">Channels starting with /service are server only publish/subscribe. Messages published to /service channels will only be delivered to server side clients.<br /></span>Messages may still be explicitly delivered to a client on a /service channel</p>
</div>
<div class="node">
<div class="content">
<h3 class="clause">1.4.6. Two connection operation</h3>
<p>In order to achieve bi-directional communications, a Bayeux client will use two HTTP connections to a Bayeux server so that both server to client and client to server messaging may occur asynchronously: </p>
<pre class="example">BC ---------- U ---------- P ------------ O ---------- BS
 | ---M0---&gt;  |            |              |            |
 |            | ------ req0(M0) --------&gt; |            |
 |            |            |              | ----M0---&gt; |
 ~            ~            ~              ~            ~ wait
 | --M1(E1)-&gt; |            |              |            |
 |            | ----- req1(M1(E1))------&gt; |            |
 |            |            |              | --M1(E1)-&gt; |
 |            |            |              | &lt;---M2---- |
 |            | &lt;---- resp1(M2)---------- |            |
 | &lt;---M2---  |            |              |            |
 ~            ~            ~              ~            ~ wait
 |            |            |              | &lt;-M3(E2)-- |
 |            | &lt;-----resp2(M3(E2))------ |            |
 | &lt;-M3(E2)-- |            |              |            |
 | ---M4---&gt;  |            |              |            |
 |            | ------req3(M4)----------&gt; |            |
 |            |            |              | ----M4---&gt; |
 ~            ~            ~              ~            ~ wait
</pre>
<p>HTTP requests req0 and req1 are sent on different TCP/IP connections, so that the response to req1 may be sent before the response to req0. Implementations MUST control HTTP pipelining so that req1 does not get queued behind req0 and thus enforce an ordering of responses.&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
</div>
<p>...to be continued.</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/203338#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 14 Jun 2008 22:36:29 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/203338</link>
        <guid>http://huangxx.javaeye.com/blog/203338</guid>
      </item>
      <item>
        <title>js里的匿名函数</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/203250" style="color:red;">http://huangxx.javaeye.com/blog/203250</a>&nbsp;
          发表时间: 2008年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small;">介绍一下js里的匿名函数，这个在阅读dojo的源代码的时候，会发现到处都有匿名函数</span></p>
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><span style="font-size: small;"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_12_26_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_26_Open_Text.style.display='none'; Codehighlighter1_12_26_Closed_Image.style.display='inline'; Codehighlighter1_12_26_Closed_Text.style.display='inline';" align="top" alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_12_26_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_12_26_Closed_Text.style.display='none'; Codehighlighter1_12_26_Open_Image.style.display='inline'; Codehighlighter1_12_26_Open_Text.style.display='inline';" align="top" alt="" style="display: none;" /><span style="color: #000000;">;(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()</span></span><span id="Codehighlighter1_12_26_Open_Text"><span style="font-size: small;"><span style="color: #000000;">{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />alert(</span><span style="color: #000000;">123</span></span><span style="color: #000000;"><span style="font-size: small;">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></span><span style="font-size: small;"><span style="color: #000000;">)();<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #008000;">//</span><span style="color: #008000;">前面的分号是一个空语句，是可以不要的</span></span></div>
<p><span style="font-size: small;">匿名函数。一个匿名函数就是一个没有名字的函数。</span></p>
<p><span style="font-size: small;">你可以认为他们是一次性函数。当你只需要用一次某个函数时，他们就特别有用。通过使用匿名函数，没有必要把函数一直放在内存中，所以使用匿名函数更加有效率。</span></p>
<p><span style="font-size: small;">当然你也可以根本不定义函数，但是使用匿名函数可以把你的代码分段，就像C#中的#region一样</span></p>
<p>&nbsp;</p>
<p><span style="font-size: small;">在使用jquery或者prototype的时候大家都会去看看它的源代码，看完之后往往有点疑惑，它的js是怎么运行的？怎么可以这样写？ </span></p>
<p><span style="font-size: small;">其实这是js的匿名函数，其结构类似这样： </span></p>
<p><span style="font-size: 9pt; color: #222222;"><span style="font-size: small;"><span style="font-family: Verdana;">(function(){<br />//</span><span style="font-family: 宋体;">代码</span></span><span style="font-family: Verdana;"><br /><span style="font-size: small;">})(); </span></span></span></p>
<p><span style="font-size: small;">如果把代码还原一下就好理解了，如下： </span></p>
<p><span style="font-size: 9pt; color: #222222;"><span style="font-size: small;"><span style="font-family: Verdana;">function f(){<br />//</span><span style="font-family: 宋体;">代码</span></span><span style="font-family: Verdana;"><br /><span style="font-size: small;">}<br />f(); </span></span></span></p>
<p><span style="font-size: small;">即定义了一个函数，并且执行了函数内的代码。</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/203250#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 14 Jun 2008 16:00:33 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/203250</link>
        <guid>http://huangxx.javaeye.com/blog/203250</guid>
      </item>
      <item>
        <title>ie js 调试</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/200890" style="color:red;">http://huangxx.javaeye.com/blog/200890</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>综合网上的资料；</p>
<p>&nbsp;</p>
<p><strong>具体方法为：<br /></strong></p>
<pre name="code" class="java">2、下载安装Microsoft Script Debugger，如果您的机器已经安装过了就可以免过这一步。
3、打开IE菜单“工具”--“Internet选项”--“高级”，找到“禁用脚本调试(Internet Explorer)”，将选项前面的对钩都去掉，然后重启IE。

打开想调试的网页，然后去菜单 View-&gt;Script Debugger-&gt;Break at Next Statement。。。然后在网页中要执行Javascript时，就会跳出一个窗口要你选择脚本调试器。


</pre>
<p>&nbsp;<span style="color: #ff0000;">提示：</span>Microsoft Script Debugger下载可到MS官网(需要经过MS的操作系统正版验证)：<a href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyID=E606E71F-BA7F-471E-A57D-F2216D81EC3D#filelist" target="_blank"><span style="text-decoration: underline;"><span style="color: #0000ff;">http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyID=E606E71F-BA7F-471E-A57D-F2216D81EC3D#filelist</span></span></a>或到baidu里输入&ldquo;Microsoft Script Debugger 下载&rdquo;寻找一下。 </p>
<p>&nbsp;</p>
<p>URL <a href="http://download.microsoft.com/download/winscript56/Install/1.0/W9XMe/CN/scd10chs.exe">http://download.microsoft.com/download/winscript56/Install/1.0/W9XMe/CN/scd10chs.exe</a></p>
<p>&nbsp;</p>
<p>如果只安装 microsoft script debugger<br />没有安装Microsoft Script Editor或者vs.net2003,visual studio 6,vs.net2005其中任意一种，或者其他任意一种js编辑器<br />那么，点 查看-&gt;脚本调试程序-&gt;打开，不会有任何反应。</p>
<p>&nbsp;</p>
<p>Microsoft Script Editor<br />这个程序是Microsoft Office 2003 里的一部分，如果安装时选择了&ldquo;HTML源文件编辑器&rdquo;的话这个好冬冬就安装在：<br />C:\Program Files\Microsoft Office\Office11\MSE7.exe<br />Microsoft Script Editor是很好的js调试工具,运行这个MSE7.exe，点击菜单&ldquo;调试&rdquo;-&gt;安装web调试，否则调不出来.</p>
<p>&nbsp;</p>
<p><span style="font-size: medium; color: #ff0000;">office 2007 也有，是Microsoft Script Editor 10.0，C:\program files\common files\microsoft shared\office12\mse7.exe</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/200890#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 13:22:00 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/200890</link>
        <guid>http://huangxx.javaeye.com/blog/200890</guid>
      </item>
      <item>
        <title>怎样在Eclipse中使用debug调试程序？</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/200777" style="color:red;">http://huangxx.javaeye.com/blog/200777</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">参见：

<a href="http://hua6884858.javaeye.com/blog/169422" target="_blank">http://hua6884858.javaeye.com/blog/169422</a>

<a href="http://chorpin.javaeye.com/blog/155668" target="_blank">http://chorpin.javaeye.com/blog/155668</a>

<a href="http://jmswjzj.javaeye.com/blog/154524" target="_blank">http://jmswjzj.javaeye.com/blog/154524</a>

 
  1.先设断点   
  2.F5是step   into   进入函数体   
  3.F6是step   over   不进入函数体   
  4.F7是step   out   退出函数体   
  5.F8是执行到下一个断点(如果还有的话，没有就是执行到底)   
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/200777#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 09:45:52 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/200777</link>
        <guid>http://huangxx.javaeye.com/blog/200777</guid>
      </item>
      <item>
        <title>修改时间病毒</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/199554" style="color:red;">http://huangxx.javaeye.com/blog/199554</a>&nbsp;
          发表时间: 2008年06月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: 22px; color: #ff0000;">
<div><span style="font-size: small;">&nbsp;&nbsp; 方法如下： </span></div>
<p><span><span><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">1,360专杀工具，进行杀毒。</span></span></span></span></p>
<p><span style="color: #ff0000;"><span><span><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,在&ldquo;开始菜单&rdquo;&mdash;&mdash;&ldquo;运行:gpedit.msc，&mdash;&mdash;windows设置&rdquo;&mdash;&mdash;安全设置&mdash;&mdash;本地策略&mdash;&mdash;用户权利指派&mdash;&mdash;更改系统时间&rdquo;（右边），然后双击（或者是右键单击，选择&ldquo;属性&rdquo;）打开&ldquo;更新系统时间配置&rdquo;属性对话框，把里面所有权限用户名administrators和power users等全部删除，然后点击确定，重启计算机 ，<span style="font-family: 宋体;">这样则病毒无法修改时间。</span></span></span></span></span></p>
<p><span><span><span style="font-size: small;">&nbsp;&nbsp;&nbsp; 可是，我这样做了后，开机我的时间还是没变。晕死！后来我终于知道了，估计是我的主板上的电池没电了，因为我开机一直是按F8的。那么当我们无法修改时间的时候，<span style="font-family: 宋体;">如果您自己需要修改，则可以在bios里面修改。</span></span></span></span></p>
<p><span style="font-size: small;">&nbsp;&nbsp;&nbsp; 3.在bios里修改时间。请记住步骤：</span><span><span><span style="font-size: small;"><span style="font-family: 宋体;">：<br /></span><span style="font-size: 20px; color: #ff0000;">&nbsp;&nbsp;&nbsp;（1）按RESET（重启）一下</span></span></span></span></p>
<p><span style="font-size: small; color: #ff0000;">&nbsp;&nbsp;&nbsp; （</span><span><span style="font-family: 宋体;"><span style="font-size: small; color: #ff0000;">2）开始连续按DEL，&nbsp;<br />&nbsp;&nbsp;&nbsp;（3）回车，&nbsp;<br />&nbsp;&nbsp; （4）修改日期，（在电脑的上面，注意看data,time的选项）&nbsp;<br />&nbsp;&nbsp; （5）按ESC<br />&nbsp;&nbsp; （6）按&nbsp;F10 （此为保存，别忘了，不少朋友修改后，在第二次开机时，还是原来的时间，是没保存！）<br />&nbsp;&nbsp; （7）回车</span></span></span></p>
<p><span><span style="font-family: 宋体;"><span><span style="font-size: small; color: #ff0000;">&nbsp;&nbsp; 搞定！重启后时间就正常了！另外，我的杀毒系统是试用三个月的，这样看我的杀毒系统到用了5年了。没关系，给你的杀毒系统更新，包括防火墙，都可以更新到最新。<img src="http://blogimg.sinajs.cn/images/control/face/004.gif" alt="" /></span></span></span></span></p>
<p><span style="font-size: small;">&nbsp;</span></p>
<p><span><span style="font-family: 宋体;"><span><span style="font-size: small; font-family: Verdana;">假如忘记了登录密码的话，在登录界面上，按住Ctrl+Alt键，再按住Del键二次，即可出现经典的登录画面，此时在用户名处键入&ldquo;administrator&rdquo;，密码为空进入，然后再修改其他用户的口令即可。 </span></span></span></span></p>
<p>&nbsp;</p>
<p><span><span style="font-family: 宋体;"><span><span style="font-size: small; font-family: Verdana;">看</span></span></span></span></p>
<p><span><span style="font-family: 宋体;"><span><span style="font-size: small; font-family: Verdana;"><a href="http://www.laizhidao.com/html/bingdufangzhi/20071114/19304.html">http://www.laizhidao.com/html/bingdufangzhi/20071114/19304.html</a></span></span></span></span></p>
<p><span><span style="font-family: 宋体;"><span><span style="font-size: small; font-family: Verdana;">难道病毒入侵了BIOS？</span></span></span></span></p>
<p><span></span></p>
<p><span><span style="font-size: small; font-family: Verdana;"><span>最近受FLASH漏洞的影响，机器上被植入木马，时间被改，联网下载其他病毒，杀毒软件失效，瑞星真垃圾，连个木马都杀不掉，害我反复了2天多的时间，没有什么成效，ICESWORD也不行了，病毒不知道躲在哪里，内存？硬盘的某个地方？后来搞了个360才把木马给删除了，好像是MIDI 机器狗，没有仔细看。系统的后门真多，没辙。
<pre></pre>
<p>&nbsp;</p>
</span></span>
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/199554#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Jun 2008 22:16:30 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/199554</link>
        <guid>http://huangxx.javaeye.com/blog/199554</guid>
      </item>
      <item>
        <title>jetty eclipse plugin 问题</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/198832" style="color:red;">http://huangxx.javaeye.com/blog/198832</a>&nbsp;
          发表时间: 2008年05月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="action-body"><a href="http://docs.codehaus.org/display/JETTY/Jetty+Documentation">http://docs.codehaus.org/display/JETTY/Jetty+Documentation</a></div>
<div class="action-body">Hi,
<p>I'm trying to use Jetty to debug a Java Web application. I installed the JST plugin like described on this page: <span class="nobr"><a href="http://docs.codehaus.org/display/JETTY/Web+Tooling+Support">http://docs.codehaus.org/display/JETTY/Web+Tooling+Support<sup><img class="rendericon" src="../../../images/icons/linkext7.gif" border="0" height="7" align="absMiddle" alt="" width="7" /></sup></a></span></p>
<p>Now I have a basic web application (tapestry5 archetype or eclipse default web application template) and I add it to Jetty server. Then I try to start Jetty and I get an error:</p>
<p>Publishing to Jetty6.x... (Time of error......)<br />Reason: <br />java.lang.NullPointerException<br />Could not publish to the server.</p>
<p>In the console, I have:</p>
<p>2008-03-25 18:31:58.627::INFO: Logging to STDERR via org.mortbay.log.StdErrLog<br />2008-03-25 18:31:58.783::INFO: jetty-6.1.8<br />2008-03-25 18:31:58.815::INFO: Opened C:\jetty-6.1.8\logs\2008_03_25.request.log<br />2008-03-25 18:31:58.861::INFO: Started SelectChannelConnector@127.0.0.1:8080</p>
<p>And in Eclipse log file, I have:</p>
<p>!ENTRY org.eclipse.wst.server.core 4 0 2008-03-25 18:32:00.187<br />!MESSAGE Could not publish to the server.<br />!STACK 0<br />java.lang.NullPointerException<br />at org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities.getDeployUriOfComponent(ComponentUtilities.java:327)<br />at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.getURI(J2EEFlexProjDeployable.java:429)<br />at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.guessModuleName(AntPublisher.java:259)<br />at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.getPublishProperties(AntPublisher.java:224)<br />at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.publish(AntPublisher.java:110)<br />at org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour.publishModule(GenericServerBehaviour.java:84)<br />at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publishModule(ServerBehaviourDelegate.java:749)<br />at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publishModules(ServerBehaviourDelegate.java:835)<br />at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:669)<br />at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)<br />at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)<br />at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)<br />at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)</p>
</div>
<div id="comment-128524-closed" style="display: none;">
<div style="background: #f0f0f0;">
<div class="action-links subText smallgrey">[ <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-128524-open', 'comment-128524-closed'); return false;">Show &raquo;</a> ] </div>
<div class="action-details" style="overflow: hidden; height: 1em;"><a name="action_128524"></a><a href="../../../secure/ViewProfile.jspa?name=henryju">Julien HENRY</a> - <span class="subText"><span class="date">25/Mar/08 08:07 AM</span></span> Hi, I'm trying to use Jetty to debug a Java Web application. I installed the JST plugin like described on this page: <span class="nobr"><a href="http://docs.codehaus.org/display/JETTY/Web+Tooling+Support">http://docs.codehaus.org/display/JETTY/Web+Tooling+Support<sup><img class="rendericon" src="../../../images/icons/linkext7.gif" border="0" height="7" align="absMiddle" alt="" width="7" /></sup></a></span> Now I have a basic web application (tapestry5 archetype or eclipse default web application template) and I add it to Jetty server. Then I try to start Jetty and I get an error: Publishing to Jetty6.x... (Time of error......) Reason: java.lang.NullPointerException Could not publish to the server. In the console, I have: 2008-03-25 18:31:58.627::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 2008-03-25 18:31:58.783::INFO: jetty-6.1.8 2008-03-25 18:31:58.815::INFO: Opened C:\jetty-6.1.8\logs\2008_03_25.request.log 2008-03-25 18:31:58.861::INFO: Started SelectChannelConnector@127.0.0.1:8080 And in Eclipse log file, I have: !ENTRY org.eclipse.wst.server.core 4 0 2008-03-25 18:32:00.187 !MESSAGE Could not publish to the server. !STACK 0 java.lang.NullPointerException at org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities.getDeployUriOfComponent(ComponentUtilities.java:327) at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.getURI(J2EEFlexProjDeployable.java:429) at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.guessModuleName(AntPublisher.java:259) at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.getPublishProperties(AntPublisher.java:224) at org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher.publish(AntPublisher.java:110) at org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour.publishModule(GenericServerBehaviour.java:84) at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publishModule(ServerBehaviourDelegate.java:749) at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publishModules(ServerBehaviourDelegate.java:835) at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:669) at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887) at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874) at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) </div>
</div>
</div>
<p><br />
<script type="text/javascript"></script>
</p>
<div id="comment-135479-open">
<div class="actionContainer">
<div class="action-links subText smallgrey">[ <a href="../../../browse/JETTY-460?focusedCommentId=135479#action_135479" title="A permanent link to this comment." class="smallgrey">Permlink</a> | <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-135479-closed', 'comment-135479-open'); return false;">&laquo; Hide</a> ] </div>
<div class="action-details"><a name="action_135479"></a><a href="../../../secure/ViewProfile.jspa?name=alfie">Alfie Kirkpatrick</a> - <span class="subText"><span class="date">20/May/08 02:23 AM</span></span> </div>
<div class="action-body">This error is cause by Eclipse 3.3.2 and the plugin works ok on 3.3.0. If you can get hold of the Europa 'fall' release it will work for you. This issue is also logged as <a href="../../../browse/JETTY-577" title="Eclipse plugin throws null pointer in eclipse 3.3.2">JETTY-577</a>. </div>
</div>
</div>
<div id="comment-135479-closed" style="display: none;">
<div style="background: #f0f0f0;">
<div class="action-links subText smallgrey">[ <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-135479-open', 'comment-135479-closed'); return false;">Show &raquo;</a> ] </div>
<div class="action-details" style="overflow: hidden; height: 1em;"><a name="action_135479"></a><a href="../../../secure/ViewProfile.jspa?name=alfie">Alfie Kirkpatrick</a> - <span class="subText"><span class="date">20/May/08 02:23 AM</span></span> This error is cause by Eclipse 3.3.2 and the plugin works ok on 3.3.0. If you can get hold of the Europa 'fall' release it will work for you. This issue is also logged as <a href="../../../browse/JETTY-577" title="Eclipse plugin throws null pointer in eclipse 3.3.2">JETTY-577</a>. </div>
</div>
</div>
<p><br />
<script type="text/javascript"></script>
</p>
<div id="comment-135484-open">
<div class="actionContainer">
<div class="action-links subText smallgrey">[ <a href="../../../browse/JETTY-460?focusedCommentId=135484#action_135484" title="A permanent link to this comment." class="smallgrey">Permlink</a> | <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-135484-closed', 'comment-135484-open'); return false;">&laquo; Hide</a> ] </div>
<div class="action-details"><a name="action_135484"></a><a href="../../../secure/ViewProfile.jspa?name=alfie">Alfie Kirkpatrick</a> - <span class="subText"><span class="date">20/May/08 02:55 AM</span></span> </div>
<div class="action-body"><span style="font-size: small; color: #ff0000;">This is fixed with WST 2.0.2 which is available on the Eclipse update site. I searched for new features to install and drilled into patches and installed all the WST and JST 2.0.2 patches. It's now working for me. Looks like they found this on the day of the winter release... <span class="nobr"><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627">https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627<sup><img class="rendericon" src="../../../images/icons/linkext7.gif" border="0" height="7" align="absMiddle" alt="" width="7" /></sup></a></span>.</span>
<p>By the way, I'm also working on a variation of the Jetty eclipse plugin that runs the war exploded, and am reasonably confident this will work in most cases.</p>
</div>
</div>
</div>
<div id="comment-135484-closed" style="display: none;">
<div style="background: #f0f0f0;">
<div class="action-links subText smallgrey">[ <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-135484-open', 'comment-135484-closed'); return false;">Show &raquo;</a> ] </div>
<div class="action-details" style="overflow: hidden; height: 1em;"><a name="action_135484"></a><a href="../../../secure/ViewProfile.jspa?name=alfie">Alfie Kirkpatrick</a> - <span class="subText"><span class="date">20/May/08 02:55 AM</span></span> This is fixed with WST 2.0.2 which is available on the Eclipse update site. I searched for new features to install and drilled into patches and installed all the WST and JST 2.0.2 patches. It's now working for me. Looks like they found this on the day of the winter release... <span class="nobr"><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627">https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627<sup><img class="rendericon" src="../../../images/icons/linkext7.gif" border="0" height="7" align="absMiddle" alt="" width="7" /></sup></a></span>. By the way, I'm also working on a variation of the Jetty eclipse plugin that runs the war exploded, and am reasonably confident this will work in most cases. </div>
</div>
</div>
<p><br />
<script type="text/javascript"></script>
</p>
<div id="comment-135485-open">
<div class="actionContainer">
<div class="action-links subText smallgrey">[ <a href="../../../browse/JETTY-460?focusedCommentId=135485#action_135485" title="A permanent link to this comment." class="smallgrey">Permlink</a> | <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-135485-closed', 'comment-135485-open'); return false;">&laquo; Hide</a> ] </div>
<div class="action-details"><a name="action_135485"></a><a href="../../../secure/ViewProfile.jspa?name=alfie">Alfie Kirkpatrick</a> - <span class="subText"><span class="date">20/May/08 02:56 AM</span></span> </div>
<div class="action-body">Sorry, I searched for updates to existing features &ndash; oops. Also, this affects all generic server plugins including JBoss and Glassfish. </div>
</div>
</div>
<div id="comment-135485-closed" style="display: none;">
<div style="background: #f0f0f0;">
<div class="action-links subText smallgrey">[ <a href="about:blank" class="smallgrey" onclick="toggleDivsWithCookie('comment-135485-open', 'comment-135485-closed'); return false;">Show &raquo;</a> ] </div>
<div class="action-details" style="overflow: hidden; height: 1em;"><a name="action_135485"></a><a href="../../../secure/ViewProfile.jspa?name=alfie">Alfie Kirkpatrick</a> - <span class="subText"><span class="date">20/May/08 02:56 AM</span></span> Sorry, I searched for updates to existing features &ndash; oops. Also, this affects all generic server plugins including JBoss and Glassfish. </div>
</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/198832#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 30 May 2008 20:45:22 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/198832</link>
        <guid>http://huangxx.javaeye.com/blog/198832</guid>
      </item>
      <item>
        <title>comet: pushlet 一些资料</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/197602" style="color:red;">http://huangxx.javaeye.com/blog/197602</a>&nbsp;
          发表时间: 2008年05月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://blog.csdn.net/yyri/archive/2008/02/22/2113976.aspx"><span style="font-size: small;">http://blog.csdn.net/yyri/archive/2008/02/22/2113976.aspx</span></a></p>
<p><span style="font-size: small;">&nbsp;</span></p>
<p><a href="http://hi.baidu.com/holin/blog/item/51c9d15875124183800a189f.html"><span style="font-size: small;">http://hi.baidu.com/holin/blog/item/51c9d15875124183800a189f.html</span></a></p>
<p><span style="font-size: small;">&nbsp;</span></p>
<p><span style="font-size: small;">"</span><span style="font-size: small; color: #0000ff;">Pushlet作者也承认，Pushlet存在着可伸缩性的问题：<br /></span></p>
<div style="font-size: 9px; margin-left: 5px;"><strong><span style="font-size: small; color: #0000ff;">QUOTE:</span></strong></div>
<div class="quote"><span style="font-size: small; color: #0000ff;">Yes, I am aware of the scalability limitations of the Pushlets framework. A dedicated server-side technique based on NIO (such as Greg, hi there, is working on ?) could help. </span></div>
<p><br /><span style="font-size: small; color: #0000ff;">并且申请加入Cometd的开发工作：<br /></span></p>
<div style="font-size: 9px; margin-left: 5px;"><strong><span style="font-size: small; color: #0000ff;">QUOTE:</span></strong></div>
<div class="quote"><span style="font-size: small; color: #0000ff;">With great interest I have been following recent COMET developments and would like to join cometd developments in whatever way."</span></div>
<div class="quote"><span style="font-size: small; color: #000000;">看来要转投&ldquo;Jetty Cometd&rdquo;的怀抱啦，</span></div>
<div class="quote"><span style="font-size: small;">不过研究PUSHLET的结构还是有很多收获的。</span></div>
<div class="quote"><a href="http://www.webtide.com/downloads/whitePaperAjaxJetty.html"><span style="font-size: small;">http://www.webtide.com/downloads/whitePaperAjaxJetty.html</span></a></div>
<div class="quote"><a href="http://www.cometd.com/"><span style="font-size: small;">http://www.cometd.com/</span></a></div>
<div class="quote"><span style="font-size: small;">The author wishes to express sincere appreciation to Just van den Broecke for <br /><span style="color: #ff0000;">his prompt and detailed help in using his Pushlet&rsquo;s API.,</span> Chris Bucchere for his <br />help with deploying the first release CometD and Alex Russell for his advice on <br />AJAX and CometD. </span></div>
<div class="quote"><span style="font-size: small;">Pushlets (</span><a href="http://www.pushlets.com/"><span style="font-size: small;">http://www.pushlets.com/</span></a><span style="font-size: small;">) <br />The&nbsp; use&nbsp; of&nbsp; Pushlets&nbsp; is move&nbsp; towards&nbsp; a more&nbsp; flexible&nbsp; and&nbsp; usable&nbsp; solution.&nbsp; The <br />Pushlets API works to provide a solution that doesn&rsquo;t require an applet on the client <br />side,&nbsp; and&nbsp; works&nbsp; via&nbsp; a&nbsp; long&nbsp; lived&nbsp; connection.&nbsp; This&nbsp; is&nbsp; achieved&nbsp; via&nbsp; a&nbsp; connection <br />much&nbsp; like&nbsp; that&nbsp; used&nbsp; for&nbsp; streaming&nbsp; of&nbsp; multimedia,&nbsp; i.e.&nbsp; a&nbsp; quick&nbsp; time&nbsp; video.&nbsp; This <br />connection,&nbsp; instead&nbsp; of&nbsp; being&nbsp; closed&nbsp; after&nbsp; the&nbsp; data&nbsp; is&nbsp; sent,&nbsp; remains&nbsp; open&nbsp; and <br />receives data from the server. <br />Because this works via HTTP, all communication is done via a single connection to <br />a servlet and should work behind any&nbsp; firewall, although&nbsp; there maybe some&nbsp; issues <br />with proxy&rsquo;s caching data.&nbsp; <br />&nbsp;<br />Another benefit&nbsp; to&nbsp; the Pushlets API&nbsp; is&nbsp; that&nbsp; is provides a mechanism&nbsp; to directly&nbsp; tie&nbsp; into an <br />AJAX&nbsp; implementation&nbsp; . This provides much neater&nbsp; intergration, and saves&nbsp; the developer <br />the time. <br />&nbsp;<br />Pushlets do present some&nbsp; limitations&nbsp; though;&nbsp; the main one being&nbsp; the&nbsp; issue of scalability. <br />As&nbsp; each&nbsp; client&nbsp; connects&nbsp; its&nbsp; takes&nbsp; up&nbsp; a&nbsp; socket, which&nbsp; in&nbsp; turn will&nbsp; hold&nbsp; on&nbsp; to&nbsp; at&nbsp; least one <br />thread and, consequently, memory.&nbsp; If 100&rsquo;s of clients connect&nbsp; to&nbsp; this service&nbsp; the memory <br />usage can therefore become a significant issue, also impacting processing potential. <br />Pushlets&nbsp; do&nbsp; not&nbsp; provide&nbsp; a mechanism&nbsp; for&nbsp; knowing what&nbsp; clients&nbsp; receive messages.&nbsp; This <br />means&nbsp; that&nbsp; it can be difficult&nbsp; to&nbsp; tell which clients are still alive and&nbsp; the application can be <br />left with messages not&nbsp; reaching&nbsp; clients&nbsp; and&nbsp; broadcasting messages&nbsp; to&nbsp; clients&nbsp; that&nbsp; have <br />disconnected.&nbsp; <br />The&nbsp; final&nbsp; issue with&nbsp; Pushlets&nbsp; is&nbsp; that&nbsp; Proxies&nbsp; can&nbsp; buffer HTTP&nbsp; data,&nbsp; this&nbsp; isn&rsquo;t&nbsp; under&nbsp; the <br />developers control so can prove difficult to resolve in a robust manner.<br /></span></div>
<div class="quote"><span style="font-size: small;">"The&nbsp; first mechanism&nbsp; used was Pushlets,&nbsp; this was&nbsp; an&nbsp; effiecient method&nbsp; of&nbsp; achieving&nbsp; the <br />desired&nbsp; functionality,<span style="color: #ff0000;"> but once&nbsp; testing started with&nbsp; large amounts of data&nbsp; (1KB maximum <br />per client) and clients (200+ clients)&nbsp; it became apparent that the system would be unable <br />to&nbsp; perform&nbsp; to&nbsp; requirements.</span>&nbsp; This&nbsp; could&nbsp; be&nbsp; overcome&nbsp; by&nbsp; using&nbsp; higher&nbsp; performance <br />hardware."</span></div>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/197602#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 May 2008 20:31:48 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/197602</link>
        <guid>http://huangxx.javaeye.com/blog/197602</guid>
      </item>
      <item>
        <title>PUSHLET 实战：push mode 的流程</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/195435" style="color:red;">http://huangxx.javaeye.com/blog/195435</a>&nbsp;
          发表时间: 2008年05月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Calibri;">Pushlet js </span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">分开的收发过程</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">收：</span><span style="font-family: Calibri;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;">1.</span><span lang="EN-US">p_join-&gt;join-ack-&gt;callback</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">断开</span><span lang="EN-US"><span style="font-family: Calibri;">;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">2.p_listen-&gt;listen-ack-&gt;p_heartbeat</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">断开</span><span lang="EN-US"><span style="font-family: Calibri;">;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>-&gt;push data-&gt;callback</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">长联</span><span lang="EN-US"><span style="font-family: Calibri;">;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">发：</span><span lang="EN-US"><span style="font-family: Calibri;">1.p_join-&gt;join-ack-&gt;callback</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">断开</span><span lang="EN-US"><span style="font-family: Calibri;">;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">2.p_publish-&gt; publish-ack</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">断开</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Calibri;">3.</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">有就触发</span><span lang="EN-US"><span style="font-family: Calibri;">2</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small; font-family: Calibri;"><span lang="EN-US">服务端</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small; font-family: Calibri;"><span lang="EN-US">待续...</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p><span style="font-size: small; font-family: Calibri;"><span lang="EN-US">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">发现</span><span lang="EN-US">pushlet</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的长连接被断开后，客户端没有任何处理，</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #3f5fbf; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">// Signals that listen frame can accept next URI</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #3f5fbf; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f0055; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">function </span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">_listenFrameReady() </span><span style="font-size: 10pt; color: #7f0055; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">{</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #7f0055; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #3f5fbf; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">//<span style="mso-tab-count: 1;">&nbsp; </span>debug('_listenFrameReady() loaded ' + listenFrame.location.href );</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #3f5fbf; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">listenReady = </span><span style="font-size: 10pt; color: #7f0055; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">true</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f0055; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">}</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">FRAMESET </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">BORDER</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"0" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">ROWS</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"0,*" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">ONLOAD</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"_framesReady()"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">FRAME </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">SRC</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"about:blank" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">NAME</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"controlFrame" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">ONLOAD</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"_controlFrameReady()"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">FRAME </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">SRC</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"about:blank" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">NAME</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"listenFrame" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">ONLOAD</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"_listenFrameReady()"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">FRAMESET</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: #008080; font-family: 宋体; mso-ascii-font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New';">是否可以利用</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">_listenFrameReady()</span><span style="font-size: 10pt; color: #2a00ff; font-family: 宋体; mso-ascii-font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New';">（不能确定被执行，有空试试，不能确定连接被防火墙或者其他原因断开后是否算这个</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">FRAME load</span><span style="font-size: 10pt; color: #2a00ff; font-family: 宋体; mso-ascii-font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New';">结束了）的执行，</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">setTimeout(</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">listenReady==false?</span><span style="font-size: 10pt; color: #000000; font-family: 宋体; mso-ascii-font-family: 'Courier New'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New';">通知或重新连接和侦听</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">,1000)</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
</span></span>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/195435#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 21 May 2008 21:45:01 +0800</pubDate>
        <link>http://huangxx.javaeye.com/blog/195435</link>
        <guid>http://huangxx.javaeye.com/blog/195435</guid>
      </item>
      <item>
        <title>PUSHLET 实战：FRAME ONLOAD</title>
        <author>huangxx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangxx.javaeye.com">huangxx</a>&nbsp;
          链接：<a href="http://huangxx.javaeye.com/blog/195418" style="color:red;">http://huangxx.javaeye.com/blog/195418</a>&nbsp;
          发表时间: 2008年05月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="js">&lt;FRAMESET BORDER="0" ROWS="0,*" ONLOAD="_framesReady()"&gt;
	&lt;FRAME SRC="about:blank" NAME="controlFrame" ONLOAD="_controlFrameReady()"&gt;
	&lt;FRAME SRC="about:blank" NAME="listenFrame" ONLOAD="_listenFrameReady()"&gt;
&lt;/FRAMESET&gt;</pre>
<p>&nbsp;<br />发现&nbsp;例如每次controlFrame重新加载后都会执行=_controlFrameReady()；</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://huangxx.javaeye.com/blog/195418#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</s