﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-软件艺术思考者</title><link>http://www.blogjava.net/zhanglijun33/</link><description>混沌，彷徨，立志，蓄势...</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 06:23:12 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 06:23:12 GMT</pubDate><ttl>60</ttl><item><title>宝宝学开发(1)--NW.js入门</title><link>http://www.blogjava.net/zhanglijun33/archive/2017/02/23/432335.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Thu, 23 Feb 2017 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2017/02/23/432335.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/432335.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2017/02/23/432335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/432335.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/432335.html</trackback:ping><description><![CDATA[<a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#getting-started-with-nwjs" style="box-sizing: border-box; color: #9b59b6; text-decoration: none; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: 24px; background-color: #fcfcfc;">NW.js入门</a>
<ul style="box-sizing: border-box; margin: 0px; padding: 0px; line-height: 24px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; background-color: #fcfcfc;">
     <li style="box-sizing: border-box; list-style: circle; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#what-can-nwjs-do" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">NW.js能做什么？</a></li>
     <li style="box-sizing: border-box; list-style: circle; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#get-nwjs" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">获取NW.js</a></li>
     <li style="box-sizing: border-box; list-style: circle; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#write-nwjs-app" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">编写NW.js应用程序</a>
     <ul style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: disc;">
         <li style="box-sizing: border-box; list-style: square; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#example-1-hello-world" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">示例1 - Hello World</a></li>
         <li style="box-sizing: border-box; list-style: square; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#example-2-using-nwjs-apis" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">示例2 - 使用NW.js API</a></li>
         <li style="box-sizing: border-box; list-style: square; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#example-3-using-nodejs-api" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">例3 - 使用Node.js API</a></li>
     </ul>
     </li>
     <li style="box-sizing: border-box; list-style: circle; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#whats-next" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">下一步是什么</a></li>
     <li style="box-sizing: border-box; list-style: circle; margin-left: 24px;"><a href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#getting-help"></a></li>
</ul>
<h2>NW.js能做什么？</h2>
<p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">NW.js是基于<a href="http://www.chromium.org/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">铬</a>和<a href="http://nodejs.org/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">Node.js的</a>。它允许您直接从浏览器调用Node.js代码和模块，并在您的应用程序中使用Web技术。此外，您可以轻松地将Web应用程序打包到本机应用程序。</p>
<h2><a name="user-content-get-nwjs" href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#get-nwjs" aria-hidden="true" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;"></a>获取NW.js</h2>
<p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">您可以从官方网站<a href="http://nwjs.io/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">http://nwjs.io</a>获取最新的二进制文件。或者你也可以建立NW.js按照中的说明二进制文件自行<a href="http://docs.nwjs.io/en/latest/For%20Developers/Building%20NW.js/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">建设NW.js</a>。<br /><br /></p><p class="admonition-title" style="box-sizing: border-box; line-height: 1; margin: -12px -12px 12px; font-size: 16px; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-weight: bold; -webkit-font-smoothing: antialiased; color: #ffffff; padding: 6px 12px; background: #1abc9c;">提示：</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif;">建议您选择SDK构建风格来开发您的应用程序，这使您能够使用DevTools调试您的应用程序。有关<a href="http://docs.nwjs.io/en/latest/For%20Users/Advanced/Build%20Flavors/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">构建版本</a>之间的差异，请参阅<a href="http://docs.nwjs.io/en/latest/For%20Users/Advanced/Build%20Flavors/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">构建</a>版本。<br /><br /></p><h2 id="write-nwjs-app" style="box-sizing: border-box; margin-top: 0px; font-family: &quot;Roboto Slab&quot;, ff-tisa-web-pro, Georgia, Arial, sans-serif; font-size: 21.6px; color: #404040; line-height: normal; background-color: #fcfcfc;"><font style="box-sizing: border-box;">编写NW.js应用程序</font></h2><p style="box-sizing: border-box; line-height: 24px; margin: 0px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif;"><br /></p><h3><a name="user-content-example-1-hello-world" href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#example-1-hello-world" aria-hidden="true" style="box-sizing: border-box; color: rgb(155, 89, 182); text-decoration: none;"></a>示例1 - Hello World</h3><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">这个基本示例演示如何编写一个NW.js应用程序。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"><strong style="box-sizing: border-box;">步骤1.</strong>创建<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">package.json</code>：</p><div style="box-sizing: border-box; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: normal; background-color: #fcfcfc;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box;">{ </span>   <span style="box-sizing: border-box; color: navy;">&#8220;name&#8221; </span><span style="box-sizing: border-box;">：</span> <span style="box-sizing: border-box; color: #dd1144;">&#8220;helloworld&#8221; </span><span style="box-sizing: border-box;">，</span>   <span style="box-sizing: border-box; color: navy;">&#8220;main&#8221; </span><span style="box-sizing: border-box;">：</span> <span style="box-sizing: border-box; color: #dd1144;">&#8220;index.html&#8221; </span> <span style="box-sizing: border-box;">}</span> </pre></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"><code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">package.json</code>是您的应用程序中的清单文件。它是以<a href="http://www.json.org/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">JSON格式</a>编写的。该<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">main</code>字段显示了<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">"index.html"</code>在本示例中由NW.js打开的第一页（如果引用了HTML文件）。该<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">name</code>字段是在NW.js应用程序中使用的唯一名称。有关详细信息，请参见<a href="http://docs.nwjs.io/en/latest/References/Manifest%20Format/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">清单格式</a>。</p><div tip"="" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; padding: 12px; line-height: 24px; margin-bottom: 24px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; background: #dbfaf4;"><p style="box-sizing: border-box; line-height: 1; margin: -12px -12px 12px; font-size: 16px; font-family: inherit; font-weight: bold; -webkit-font-smoothing: antialiased; color: #ffffff; padding: 6px 12px; background: #1abc9c;">使用JS文件作为主</p><p style="box-sizing: border-box; margin: 0px 0px 24px; font-size: 16px;">你可以把JS文件设置为<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">"main"</code>字段，如<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">"main.js"</code>。然后，JS文件将在开始时加载到后台页面，默认情况下不打开任何窗口。通常你可以做一些初始化，然后手动打开窗口。例如，<br style="box-sizing: border-box;" /></p><div style="box-sizing: border-box;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box; color: #999988; font-style: italic;">// initialize your app </span> <span style="box-sizing: border-box; color: #999988; font-style: italic;">// and ... </span> <span style="box-sizing: border-box;">nw </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">窗口</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">open </span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; color: #dd1144;">'index.html' </span><span style="box-sizing: border-box;">，</span> <span style="box-sizing: border-box;">{}，</span> <span style="box-sizing: border-box; font-weight: bold;">function </span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box;">win </span><span style="box-sizing: border-box;">）</span> <span style="box-sizing: border-box;">{}）;</span> </pre></div><p style="box-sizing: border-box; margin: 0px; font-size: 16px;"></p></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"><strong style="box-sizing: border-box;">步骤2.</strong>创建<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">index.html</code>：</p><div style="box-sizing: border-box; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: normal; background-color: #fcfcfc;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box; color: #999999; font-weight: bold;">&lt;！DOCTYPE html&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">html </span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">head </span><span style="box-sizing: border-box;">&gt; </span>     <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">title </span><span style="box-sizing: border-box;">&gt;</span> Hello World！<span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">title </span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">head </span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">body </span><span style="box-sizing: border-box;">&gt; </span>     <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">h1 </span><span style="box-sizing: border-box;">&gt;</span> Hello World！<span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">h1 </span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">body </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">html </span><span style="box-sizing: border-box;">&gt;</span> </pre></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">这是正常的HTML文件。您可以使用最新浏览器支持的任何Web技术。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"><strong style="box-sizing: border-box;">步骤3.</strong>运行应用程序</p><div style="box-sizing: border-box; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: normal; background-color: #fcfcfc;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box; color: #0086b3;">cd</span> / path / to / your / app / path / to / nw。 </pre></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"><code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">/path/to/nw</code>是NW.js的二进制文件。在Windows上，它的<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">nw.exe</code>;&nbsp;在Linux上，它的<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">nw</code>;&nbsp;在Mac，它的<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">nwjs.app/Contents/MacOS/nwjs</code>。</p><div tip"="" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; padding: 12px; line-height: 24px; margin-bottom: 24px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; background: #dbfaf4;"><p style="box-sizing: border-box; line-height: 1; margin: -12px -12px 12px; font-size: 16px; font-family: inherit; font-weight: bold; -webkit-font-smoothing: antialiased; color: #ffffff; padding: 6px 12px; background: #1abc9c;">在Windows上拖放</p><p style="box-sizing: border-box; margin: 0px; font-size: 16px;">在Windows上，您可以拖动<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">folder containing package.json</code>到<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">nw.exe</code>以运行应用程序。</p></div><h3><a name="user-content-example-2-using-nwjs-apis" href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#example-2-using-nwjs-apis" aria-hidden="true" style="box-sizing: border-box; color: rgb(155, 89, 182); text-decoration: none;"></a>示例2 - 使用NW.js API</h3><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">所有NW.js API都在<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">nw</code>对象中全局加载，可以直接在JavaScript文件中使用。有关支持的<a href="http://docs.nwjs.io/en/latest/#references" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">API</a>的完整列表，请参阅<a href="http://docs.nwjs.io/en/latest/#references" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">API参考</a>。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">此示例显示如何在NW.js应用程序中创建本机上下文菜单。您可以<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">index.html</code>使用以下内容创建：<br style="box-sizing: border-box;" /></p><div style="box-sizing: border-box; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: normal; background-color: #fcfcfc;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box; color: #999999; font-weight: bold;">&lt;！DOCTYPE html&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">html </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">head </span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">title </span><span style="box-sizing: border-box;">&gt;</span>上下文菜单<span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">title </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">head </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">body </span> <span style="box-sizing: border-box; color: teal;">style </span><span style="box-sizing: border-box; font-weight: bold;">= </span><span style="box-sizing: border-box; color: #dd1144;">&#8220;width：100％; height：100％</span><span style="box-sizing: border-box;">&gt;</span>  <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">p </span><span style="box-sizing: border-box;">&gt;</span> &#8220;右键单击&#8221;显示上下文菜单。<span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">p </span><span style="box-sizing: border-box;">&gt;</span>  <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">script </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box; color: #999988; font-style: italic;">//创建一个空的上下文菜单</span> <span style="box-sizing: border-box; font-weight: bold;">var </span> <span style="box-sizing: border-box;">menu </span> <span style="box-sizing: border-box; font-weight: bold;">= </span> <span style="box-sizing: border-box; font-weight: bold;">new </span> <span style="box-sizing: border-box;">nw </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">Menu </span><span style="box-sizing: border-box;">（）;</span>  <span style="box-sizing: border-box; color: #999988; font-style: italic;">//添加一些项目与标签</span> <span style="box-sizing: border-box;">菜单</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">追加</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; font-weight: bold;">新</span> <span style="box-sizing: border-box;">NW </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">菜单项</span><span style="box-sizing: border-box;">（{ </span>   <span style="box-sizing: border-box;">标签</span><span style="box-sizing: border-box; font-weight: bold;">：</span> <span style="box-sizing: border-box; color: #dd1144;">&#8220;项目A&#8221; </span><span style="box-sizing: border-box;">，</span>   <span style="box-sizing: border-box;">单击</span><span style="box-sizing: border-box; font-weight: bold;">：</span> <span style="box-sizing: border-box; font-weight: bold;">函数</span><span style="box-sizing: border-box;">（）{ </span>     <span style="box-sizing: border-box;">警报</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; color: #dd1144;">'你点击了&#8220;项目A&#8221; </span><span style="box-sizing: border-box;">）; </span>   <span style="box-sizing: border-box;">} </span> <span style="box-sizing: border-box;">}））; </span> <span style="box-sizing: border-box;">菜单</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">追加</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; font-weight: bold;">新</span> <span style="box-sizing: border-box;">NW </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">菜单项</span><span style="box-sizing: border-box;">（{ </span> <span style="box-sizing: border-box;">标签</span><span style="box-sizing: border-box; font-weight: bold;">：</span> <span style="box-sizing: border-box; color: #dd1144;">'项目B' </span> <span style="box-sizing: border-box;">}））; </span> <span style="box-sizing: border-box;">菜单</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">追加</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; font-weight: bold;">新</span> <span style="box-sizing: border-box;">NW </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">菜单项</span><span style="box-sizing: border-box;">（{ </span> <span style="box-sizing: border-box;">类型</span><span style="box-sizing: border-box; font-weight: bold;">：</span> <span style="box-sizing: border-box; color: #dd1144;">&#8220;分隔符&#8221; </span> <span style="box-sizing: border-box;">}））; </span> <span style="box-sizing: border-box;">菜单</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">追加</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; font-weight: bold;">新</span> <span style="box-sizing: border-box;">NW </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">菜单项</span><span style="box-sizing: border-box;">（{ </span> <span style="box-sizing: border-box;">标签</span><span style="box-sizing: border-box; font-weight: bold;">：</span> <span style="box-sizing: border-box; color: #dd1144;">'项目C' </span> <span style="box-sizing: border-box;">}））;</span>  <span style="box-sizing: border-box; color: #999988; font-style: italic;">// Hooks&#8220;contextmenu&#8221;事件</span> <span style="box-sizing: border-box; color: #0086b3;">文档</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">身体</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">的addEventListener </span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; color: #dd1144;">'文本菜单' </span><span style="box-sizing: border-box;">，</span> <span style="box-sizing: border-box; font-weight: bold;">函数</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box;">EV </span><span style="box-sizing: border-box;">）</span> <span style="box-sizing: border-box;">{ </span>   <span style="box-sizing: border-box; color: #999988; font-style: italic;">//防止显示默认的上下文菜单</span>   <span style="box-sizing: border-box;">EV </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">的preventDefault </span><span style="box-sizing: border-box;">（）; </span>   <span style="box-sizing: border-box; color: #999988; font-style: italic;">//弹出的地方，你点击本机上下文菜单中</span>   <span style="box-sizing: border-box;">的菜单</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">弹出</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box;">EV </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">点&#175;x </span><span style="box-sizing: border-box;">，</span> <span style="box-sizing: border-box;">EV </span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">&#255; </span><span style="box-sizing: border-box;">）;</span>    <span style="box-sizing: border-box; font-weight: bold;">return </span> <span style="box-sizing: border-box; font-weight: bold;">false </span><span style="box-sizing: border-box;">; </span> <span style="box-sizing: border-box;">}，</span> <span style="box-sizing: border-box; font-weight: bold;">false </span><span style="box-sizing: border-box;">）;</span>  <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">script </span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">body </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">html </span><span style="box-sizing: border-box;">&gt;</span> </pre></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"></p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">...然后运行您的应用程序：<br style="box-sizing: border-box;" /></p><div style="box-sizing: border-box; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: normal; background-color: #fcfcfc;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box; color: #0086b3;">cd</span> / path / to / your / app / path / to / nw。 </pre></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"></p><div tip"="" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; padding: 12px; line-height: 24px; margin-bottom: 24px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; background: #dbfaf4;"><p style="box-sizing: border-box; line-height: 1; margin: -12px -12px 12px; font-size: 16px; font-family: inherit; font-weight: bold; -webkit-font-smoothing: antialiased; color: #ffffff; padding: 6px 12px; background: #1abc9c;">require（'nw.gui'）</p><p style="box-sizing: border-box; margin: 0px; font-size: 16px;"><code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">require('nw.gui')</code>还支持使用传统的加载NW.js API的方式。它返回相同的<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">nw</code>对象。</p></div><h3><a name="user-content-example-3-using-nodejs-api" href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#example-3-using-nodejs-api" aria-hidden="true" style="box-sizing: border-box; color: rgb(155, 89, 182); text-decoration: none;"></a>例3 - 使用Node.js API</h3><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">你可以直接从DOM调用node.js和模块。所以它使用nw.js编写应用程序的无限可能。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">此示例显示如何使用<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">os</code>Node.js的模块查询操作系统平台。只需创建<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">index.html</code>具有以下内容的文件，并使用NW.js运行它。</p><div style="box-sizing: border-box; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; line-height: normal; background-color: #fcfcfc;"><pre style="box-sizing: border-box; font-family: monospace, serif; font-size: 1em;"><span style="box-sizing: border-box; color: #999999; font-weight: bold;">&lt;！DOCTYPE HTML&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">HTML </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">头</span><span style="box-sizing: border-box;">&gt; </span>   <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">标题</span><span style="box-sizing: border-box;">&gt;</span>我的操作系统平台<span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">标题</span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">头</span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">身体</span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt; </span><span style="box-sizing: border-box; color: navy;">脚本</span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box; color: #999988; font-style: italic;">//使用Node.js的获取系统平台的</span> <span style="box-sizing: border-box; font-weight: bold;">变种</span> <span style="box-sizing: border-box;">OS </span> <span style="box-sizing: border-box; font-weight: bold;">= </span> <span style="box-sizing: border-box;">要求</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; color: #dd1144;">&#8220;OS&#8221; </span><span style="box-sizing: border-box;">）; </span> <span style="box-sizing: border-box; color: #0086b3;">文档</span><span style="box-sizing: border-box;">。</span><span style="box-sizing: border-box;">写</span><span style="box-sizing: border-box;">（</span><span style="box-sizing: border-box; color: #dd1144;">&#8220;您正在运行的' </span><span style="box-sizing: border-box;">，</span> <span style="box-sizing: border-box;">操作系统</span><span style="box-sizing: border-box;">，</span><span style="box-sizing: border-box;">平台</span><span style="box-sizing: border-box;">（））; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">script </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">body </span><span style="box-sizing: border-box;">&gt; </span> <span style="box-sizing: border-box;">&lt;/ </span><span style="box-sizing: border-box; color: navy;">html </span><span style="box-sizing: border-box;">&gt;</span> </pre></div><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">您还可以使用由<a href="https://www.npmjs.com/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;"><code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid #e1e4e5; padding: 0px 5px; color: #e74c3c; overflow-x: auto; word-wrap: break-word; background: #ffffff;">npm</code></a>NW.js.安装的模块。</p><div note"="" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; padding: 12px; line-height: 24px; margin-bottom: 24px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 14.4px; background: #e7f2fa;"><p style="box-sizing: border-box; line-height: 1; margin: -12px -12px 12px; font-size: 16px; font-family: inherit; font-weight: bold; -webkit-font-smoothing: antialiased; color: #ffffff; padding: 6px 12px; background: #6ab0de;">本地节点模块</p><p style="box-sizing: border-box; margin: 0px; font-size: 16px;">在运行时构建的Native Node模块<code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">npm install</code>与NW.js ABI不兼容。要使用它们，你必须用源代码重建它<a href="https://github.com/nwjs/nw-gyp" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;"><code style="box-sizing: border-box; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Lucida Console&quot;, &quot;Lucida Sans Typewriter&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Liberation Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; white-space: pre; max-width: 100%; border: 1px solid rgba(0, 0, 0, 0.2); padding: 0px 5px; color: #404040; overflow-x: auto; word-wrap: break-word; background: rgba(255, 255, 255, 0.701961);">nw-gyp</code></a>。有关详细信息，请参阅<a href="http://docs.nwjs.io/en/latest/For%20Users/Advanced/Use%20Native%20Node%20Modules/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">使用本机节点模块</a>。</p></div><h2><a name="user-content-whats-next" href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#whats-next" aria-hidden="true" style="box-sizing: border-box; color: rgb(155, 89, 182); text-decoration: none;"></a>下一步是什么</h2><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">请参阅<a href="http://docs.nwjs.io/en/latest/For%20Users/Debugging%20with%20DevTools/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">使用DevTools</a>调试以调试NW.js应用程序。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">请参阅<a href="http://docs.nwjs.io/en/latest/For%20Users/Package%20and%20Distribute/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">打包和分发</a>，以便在生产中打包和重新分发应用程序。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">有关可能遇到的<a href="http://docs.nwjs.io/en/latest/For%20Users/FAQ/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">问题</a>，请参阅<a href="http://docs.nwjs.io/en/latest/For%20Users/FAQ/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">常见问题解答</a>。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">如果您要从NW.js 0.12或旧版本迁移应用程序，请参阅<a href="http://docs.nwjs.io/en/latest/For%20Users/Migration/From%200.12%20to%200.13/" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">迁移说明</a>。</p><h2><a name="user-content-getting-help" href="http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/#getting-help" aria-hidden="true" style="box-sizing: border-box; color: rgb(155, 89, 182); text-decoration: none;"></a>获得帮助</h2><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">在<a href="https://github.com/nwjs/nw.js/wiki" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">NW.js wiki</a>上有很多有用的信息。维基也是对所有人开放的，你鼓励你在wiki上发布你的知识。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">您也可以<a href="https://groups.google.com/forum/#!forum/nwjs-general" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">在Google群组的邮件清单</a>或Gitter上的即时通讯中提出<a href="https://gitter.im/nwjs/nw.js" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">问题</a>。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;">请报告错误或提交要求在<a href="https://github.com/nwjs/nw.js/issues" style="box-sizing: border-box; color: #9b59b6; text-decoration: none;">GitHub</a>使NW.js更强大。</p><p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px 24px; font-size: 16px; color: #404040; font-family: Lato, proxima-nova, &quot;Helvetica Neue&quot;, Arial, sans-serif; background-color: #fcfcfc;"></p><img src ="http://www.blogjava.net/zhanglijun33/aggbug/432335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2017-02-23 11:26 <a href="http://www.blogjava.net/zhanglijun33/archive/2017/02/23/432335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql触发器：每天增加一个随机数。</title><link>http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Thu, 06 Aug 2015 01:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426624.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426624.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426624.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mysql触发器，5.6版。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html'>阅读全文</a><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-08-06 09:26 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat get传值时的中文乱码问题。</title><link>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426102.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Wed, 08 Jul 2015 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426102.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426102.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426102.html</trackback:ping><description><![CDATA[<p>server.xml里，connect修改为：</p><p>&lt;Connector port="8080" protocol="HTTP/1.1" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirectPort="8443" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useBodyEncodingForURI="true" <br />&nbsp;&nbsp;&nbsp;&nbsp;URIEncoding="UTF-8"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;</p><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-07-08 18:37 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>myeclipse参数配置</title><link>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426101.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Wed, 08 Jul 2015 10:33:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426101.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426101.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426101.html</trackback:ping><description><![CDATA[<div>1.myeclipse参数配置-解决代码不提示不保存等问题,下载后去掉.txt，然后导入myeclipse里的prefrences.<br /><a href="/Files/zhanglijun33/myeclipse参数配置-解决代码不提示不保存等问题.epf.txt">/Files/zhanglijun33/myeclipse参数配置-解决代码不提示不保存等问题.epf.txt</a>&nbsp; &nbsp;<br />2.myeclipse的启动参数："D:\install\myeclipse10.7\MyEclipse 10\myeclipse.exe" -clean -Xms256m -Xmx768m -XX:MaxNewSize=256m -XX:MaxPermSize=768m</div><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-07-08 18:33 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache+jk+tomcat集群+session同步 </title><link>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426099.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Wed, 08 Jul 2015 10:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426099.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426099.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426099.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: tomcat 集群&nbsp;&nbsp;<a href='http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426099.html'>阅读全文</a><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-07-08 18:26 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正常的sql（带中文参数），在mysql-front里可以查出数据，在程序里却查不出来</title><link>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Wed, 08 Jul 2015 10:23:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426098.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426098.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426098.html</trackback:ping><description><![CDATA[<div><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">原因：中文参数字符编码有问题，在程序里调试的时候虽然不是乱码，但数据库依旧不认识。这需要在jdbc.mysql.url里指定数据库使用的字符编码：utf-8.</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">jdbc.properties里</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">mysql.jdbc.url=jdbc:mysql://192.168.1.246:3306/wxb_site1?useUnicode=true&amp;characterEncoding=utf-8</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">jndi的写法：&nbsp;context.xml里的写法：&lt;Resource name="jndi/wxb_site"&nbsp; auth="Container"&nbsp;</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource" username="root" password="root"&nbsp;&nbsp;&nbsp;</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="com.mysql.jdbc.Driver"</span><span style="font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; color: #ff0000;">&nbsp;url="jdbc:mysql://192.168.1.246:3306/wxb_site1?useUnicode=true&amp;amp;characterEncoding=utf-8"<br /></span><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">&nbsp;&nbsp; maxActive="100" maxIdle="10" maxWait="-1"/&gt;</span></div><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-07-08 18:23 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JMS服务器openJms入门</title><link>http://www.blogjava.net/zhanglijun33/archive/2009/09/08/JMS.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Tue, 08 Sep 2009 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2009/09/08/JMS.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/294271.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2009/09/08/JMS.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/294271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/294271.html</trackback:ping><description><![CDATA[&nbsp;首
先可以到网站上下载最新的openjms版本，然后启动bin下的startup.bat就启动服务了，然后可以启动admin.bat进入管理界面（非
必要步骤），然后分别运行samples下的basic例子就可以看到效果了，当然以前有篇文章介绍的不错，可以参考一下，不过时间上比较老了，做为参考
还是可以的。<br />
<br />
本文介绍开源的JMS服务器openJms，及怎样使用openJms来构建系统之间健全、高度可用的通讯，从而简化企业级应用的开发。
openJms符合SUN的JMS API
1.0.2规范，支持消息队列，还支持消息传递的发布/订阅模式，本文先就系统服务的搭建及JMS的非结构化消息发送和接收进行说明。<br />
<br />
JMS 有五种消息类型。三种结构化或半结构化的消息类型（MapMessage、ObjectMessage 和
StreamMessage）以及两种非结构化的或自由格式的消息类型（TextMessage 和
BytesMessage）。而这里虽然我们只对非结构化消息进行说明，但非结构化的消息格式却能够更好地进行交互操作，因为它们在消息上很少利用结构，
在此基础上与XML再进行结合，将能方便的进行更好的扩展，XML相关简化操作参考《Jaxb来实现Java-XML的转换》。<br />
<br />
下面具体来介绍服务器搭建，在http://openjms.sourceforge.net/downloads.html下载openJms，解压后
可以直接使用，在 "openjms-0.7.6.1"bin 里，有openJms的运行脚本，执行 startup
启动，弹出一个新的窗口，服务就运行在新窗口内，shutdown 为停止命令：<br />
<br />
服务运行后，就可以开始使用JMS服务了，至此服务搭建完毕，简单得不能再简单了。<br />
<br />
下面是消息发送和接收的开发，开发中需要的jar包在"openjms-0.7.6.1"lib里可以找到：<br />
openjms-0.7.6.1.jar<br />
jms-1.0.2a.jar<br />
exolabcore-0.3.7.jar<br />
commons-logging-1.0.3.jar<br />
<br />
把上面的类包加入到项目中，下面是消息发送服务的代码：<br />
<br />
package javayou.demo.openjms;<br />
import java.util.*;<br />
import javax.jms.*;<br />
import javax.naming.*;<br />
<br />
public class QueueSend {<br />
&nbsp;&nbsp;&nbsp;  public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //取得JNDI上下文和连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Hashtable properties = new Hashtable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context.INITIAL_CONTEXT_FACTORY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "org.exolab.jms.jndi.InitialContextFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //openJms默认的端口是1099<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(Context.PROVIDER_URL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "rmi://localhost:1099/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context context = new InitialContext(properties);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得JMS信息连接队列工厂<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueConnectionFactory queueConnectionFactory =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (QueueConnectionFactory) context.lookup(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "JmsQueueConnectionFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得JMS信息连接队列<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueConnection queueConnection =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueConnectionFactory.createQueueConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //产生队列Session，设置事务为false，自动应答消息接收<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueSession queueSession =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueConnection.createQueueSession(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Session.AUTO_ACKNOWLEDGE);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得默认内建在JMS里的队列之一：queue1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Queue queue = (Queue) context.lookup("queue1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //产生JMS队列发送器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueSender queueSender =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueSession.createSender(queue);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //发送数据到JMS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TextMessage message = queueSession.createTextMessage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  message.setText("Hello, I'm openJms.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueSender.send(message);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ""信息写入JMS服务器队列");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //以下做清除工作，代码略<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // ... ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
}<br />
<br />
执行程序发送消息，然后打开JMS控制台，用 admin 命令启动管理平台，点击菜单Actions－Connections－online，出现界面如下：<br />
<br />
可以看到JSM默认的队列queue1里已经有1条消息了，而其他的队列还是空着的。<br />
<br />
下面我们来看看消息接收服务的代码：<br />
<br />
package javayou.demo.openjms;<br />
import java.util.*;<br />
import javax.jms.*;<br />
import javax.naming.*;<br />
public class QueueReceiveSynchronous {<br />
&nbsp;&nbsp;&nbsp;  public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //取得JNDI上下文和连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Hashtable properties = new Hashtable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context.INITIAL_CONTEXT_FACTORY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "org.exolab.jms.jndi.InitialContextFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(Context.PROVIDER_URL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "rmi://localhost:1099/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context context = new InitialContext(properties);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得JMS信息连接队列工厂<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueConnectionFactory queueConnectionFactory =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (QueueConnectionFactory) context.lookup(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "JmsQueueConnectionFactory");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得JMS信息连接队列<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueConnection queueConnection =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueConnectionFactory.createQueueConnection();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //启动接收队列线程<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueConnection.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //产生队列Session，设置事务为false，自动应答消息接收<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueSession queueSession =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueConnection.createQueueSession(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Session.AUTO_ACKNOWLEDGE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得默认内建在JMS里的队列之一：queue1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Queue queue = (Queue) context.lookup("queue1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //产生JMS队列接收器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  QueueReceiver queueReceiver =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  queueSession.createReceiver(queue);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //通过同步的方法接收消息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Message message = queueReceiver.receive();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String messageText = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (message instanceof TextMessage)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messageText = ((TextMessage) message).&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  getText();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(messageText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //以下做清除工作，代码略<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // ... ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
}<br />
<br />
编译后运行接收信息服务，可以看到接收到并打印之前发送的消息，再看看控制台，发现queue1的消息队列变为0，消息已被读取，消息发送和接收到此结束。<br />
<br />
<br />
<br />
上篇openJms介绍 (一) 提到了openJms的构建及消息的发送和接收，这篇主要了解消息的发布和订阅。JMS
的发布/订阅模型定义了如何向一个内容节点发布和订阅消息，内容节点也叫主题(topic)，主题是为发布者(publisher)和订阅者
(subscribe)
提供传输的中介。发布/订阅模型使发布者和订阅者之间不需要直接通讯（如RMI）就可保证消息的传送，有效解决系统间耦合问题（当然有这个需要才行），还
有就是提供了一对一、一对多的通讯方式，比较灵活。<br />
<br />
先介绍JMS里2个概念，持久订阅模式和非持久订阅模式，其实也是发布/订阅模型在可靠性上提供的2种方式：<br />
<br />
非持久订阅模式：只有当客户端处于激活状态，也就是和JMS 服务器保持连接的状态下，才能接收到发送到某个Topic的消息，而当客户端处于离线状态时，则这个时间段发到Topic的消息将会永远接收不到。<br />
<br />
持久订阅模式：客户端向JMS 注册一个识别自己身份的ID，当这个客户端处于离线时，JMS 服务器会为这个ID 保存所有发送到主题的消息，当客户再次连接到JMS 服务器时，会根据自己的ID 得到所有当自己处于离线时发送到主题的消息，即消息永远能接收到。<br />
<br />
下面我们就接着来看openJms在发布/订阅模式上的表现，由于篇幅关系，在这里只讲述非持久订阅模式，持久订阅模式可以根据JMS的标准来试。<br />
<br />
消息发布的代码如下：<br />
<br />
package javayou.demo.openjms;<br />
import java.util.*;<br />
import javax.jms.*;<br />
import javax.naming.*;<br />
public class TopicPublish {<br />
&nbsp;&nbsp;&nbsp;  public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //取得JNDI上下文和连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Hashtable properties = new Hashtable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context.INITIAL_CONTEXT_FACTORY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "org.exolab.jms.jndi.InitialContextFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //openJms默认的端口是1099<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(Context.PROVIDER_URL, "rmi://localhost:1099/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context context = new InitialContext(properties);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得JMS Topic连接队列工厂<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicConnectionFactory factory =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (TopicConnectionFactory) context.lookup(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "JmsTopicConnectionFactory");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //创建一个Topic连接，并启动<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicConnection topicConnection = factory.createTopicConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection.start();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //创建一个Topic会话，并设置自动应答<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicSession topicSession =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection.createTopicSession(false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Session.AUTO_ACKNOWLEDGE);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //lookup 得到 topic1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Topic topic = (Topic) context.lookup("topic1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //用Topic会话生成Topic发布器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicPublisher topicPublisher = topicSession.createPublisher(topic);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //发布消息到Topic<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println("消息发布到Topic");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TextMessage message = topicSession.createTextMessage<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ("你好，欢迎定购Topic类消息");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicPublisher.publish(message);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //资源清除，代码略  ... ...&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (NamingException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (JMSException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
}<br />
<br />
而订阅消息的接收有同步的和异步2种，他们分别使用receive()和onMessage(Message message)方法来接收消息，具体代码：<br />
<br />
同步接收：<br />
<br />
package javayou.demo.openjms;<br />
import java.util.*;<br />
import javax.jms.*;<br />
import javax.naming.*;<br />
public class TopicSubscribeSynchronous {<br />
<br />
&nbsp;&nbsp;&nbsp;  public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println("定购消息接收启动：");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //取得JNDI上下文和连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Hashtable properties = new Hashtable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(Context.INITIAL_CONTEXT_FACTORY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "org.exolab.jms.jndi.InitialContextFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(Context.PROVIDER_URL, "rmi://localhost:1099/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context context = new InitialContext(properties);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //获得Topic工厂和Connection<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicConnectionFactory factory =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (TopicConnectionFactory) context.lookup(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "JmsTopicConnectionFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicConnection topicConnection = factory.createTopicConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection.start();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //创建Topic的会话，用于接收信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicSession topicSession =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection.createTopicSession(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Session.AUTO_ACKNOWLEDGE);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //lookup topic1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Topic topic = (Topic) context.lookup("topic1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //创建Topic subscriber<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicSubscriber topicSubscriber =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicSession.createSubscriber(topic);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //收满10条订阅消息则退出<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  for (int i=0; i&lt;10; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //同步消息接收，使用receive方法，堵塞等待，直到接收消息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TextMessage message = (TextMessage) topicSubscriber.receive();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println("接收订阅消息["+i+"]: " + message.getText());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //资源清除，代码略  ... ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println("订阅接收结束.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (NamingException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (JMSException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
}<br />
<br />
非同步接收：<br />
<br />
package javayou.demo.openjms;<br />
import java.util.*;<br />
import javax.jms.*;<br />
import javax.naming.*;<br />
public class TopicSubscribeAsynchronous implements MessageListener {<br />
&nbsp;&nbsp;&nbsp;  private TopicConnection topicConnection;<br />
&nbsp;&nbsp;&nbsp;  private TopicSession topicSession;<br />
&nbsp;&nbsp;&nbsp;  private Topic topic;<br />
&nbsp;&nbsp;&nbsp;  private TopicSubscriber topicSubscriber;<br />
<br />
&nbsp;&nbsp;&nbsp;  TopicSubscribeAsynchronous() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //取得JNDI上下文和连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Hashtable properties = new Hashtable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context.INITIAL_CONTEXT_FACTORY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "org.exolab.jms.jndi.InitialContextFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties.put(Context.PROVIDER_URL, "rmi://localhost:1099/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Context context = new InitialContext(properties);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //取得Topic的连接工厂和连接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicConnectionFactory topicConnectionFactory =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (TopicConnectionFactory) context.lookup(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  "JmsTopicConnectionFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection = topicConnectionFactory.createTopicConnection();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //创建Topic的会话，用于接收信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicSession =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection.createTopicSession(false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Session.AUTO_ACKNOWLEDGE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topic = (Topic) context.lookup("topic1");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //创建Topic subscriber<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicSubscriber = topicSession.createSubscriber(topic);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //设置订阅监听<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicSubscriber.setMessageListener(this);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //启动信息接收<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  topicConnection.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (NamingException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (JMSException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
<br />
&nbsp;&nbsp;&nbsp;  public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println("非同步定购消息的接收：");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TopicSubscribeAsynchronous listener =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new TopicSubscribeAsynchronous();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Thread.sleep(1000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (InterruptedException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
<br />
&nbsp;&nbsp;&nbsp;  //收到订阅信息后自动调用此方法<br />
&nbsp;&nbsp;&nbsp;  public void onMessage(Message message) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String messageText = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (message instanceof TextMessage)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messageText = ((TextMessage) message).getText();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.out.println(messageText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  } catch (JMSException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
}<br />
<br />
编译好后，启动openJms服务，打开admin管理台，为了运行方便，这里先列出三个类的运行命令：<br />
java -cp ."; -Djava.ext.dirs=."lib; javayou.demo.openjms.TopicPublish<br />
java -cp ."; -Djava.ext.dirs=."lib; javayou.demo.openjms.TopicSubscribeSynchronous<br />
java -cp ."; -Djava.ext.dirs=."lib; javayou.demo.openjms.TopicSubscribeAsynchronous<br />
<br />
先运行2个接收命令，再运行发布命令，可以看到控制台的Topic有消息接收，并且接收1和2都有消息接收的提示，到此完成演示，由于是非持久订阅，所以可以看到控制台上的Topic消息条数不会减少。
<img src ="http://www.blogjava.net/zhanglijun33/aggbug/294271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2009-09-08 11:25 <a href="http://www.blogjava.net/zhanglijun33/archive/2009/09/08/JMS.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OSCache的实际使用</title><link>http://www.blogjava.net/zhanglijun33/archive/2008/11/27/oscache.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Thu, 27 Nov 2008 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2008/11/27/oscache.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/243000.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2008/11/27/oscache.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/243000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/243000.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 项目性能优化相关：oscache实际应用,Cookie的混乱及解决&nbsp;&nbsp;<a href='http://www.blogjava.net/zhanglijun33/archive/2008/11/27/oscache.html'>阅读全文</a><img src ="http://www.blogjava.net/zhanglijun33/aggbug/243000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2008-11-27 14:48 <a href="http://www.blogjava.net/zhanglijun33/archive/2008/11/27/oscache.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hql editor 的使用</title><link>http://www.blogjava.net/zhanglijun33/archive/2008/11/17/hqlEdit.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Mon, 17 Nov 2008 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2008/11/17/hqlEdit.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/240955.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2008/11/17/hqlEdit.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/240955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/240955.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: hqlEdit的使用 spring service层的测试&nbsp;&nbsp;<a href='http://www.blogjava.net/zhanglijun33/archive/2008/11/17/hqlEdit.html'>阅读全文</a><img src ="http://www.blogjava.net/zhanglijun33/aggbug/240955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2008-11-17 14:19 <a href="http://www.blogjava.net/zhanglijun33/archive/2008/11/17/hqlEdit.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>url 传中文乱码 的解决</title><link>http://www.blogjava.net/zhanglijun33/archive/2008/11/10/url_chinese.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Mon, 10 Nov 2008 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2008/11/10/url_chinese.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/239631.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2008/11/10/url_chinese.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/239631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/239631.html</trackback:ping><description><![CDATA[1传中文之前的准备<br />
<font style="background-color: #9deec1">&nbsp;&lt;%<br />
&nbsp; String a = "我是立军";<br />
&nbsp; a = URLEncoder.encode(a,"gbk");<br />
&nbsp; %&gt;<br />
&nbsp; &lt;body&gt;<br />
&nbsp;&nbsp; &lt;a href="hello.jsp?actionName=&lt;%=a%&gt;" &gt; 试验&lt;/a&gt;<br />
<br />
2.接收 <font style="background-color: #9deec1">&lt;%<br />
&nbsp; String actionName=new String(request.getParameter("actionName").getBytes("iso8859_1"));<br />
&nbsp; %&gt; </font><br />
<font style="background-color: #9deec1">actionName:&lt;%=actionName %&gt;</font></font>
<img src ="http://www.blogjava.net/zhanglijun33/aggbug/239631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2008-11-10 11:51 <a href="http://www.blogjava.net/zhanglijun33/archive/2008/11/10/url_chinese.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>