﻿<?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>C++博客-GCC/GNU/Linux Delphi/Window Java/Anywhere-随笔分类-Java</title><link>http://www.cppblog.com/Khan/category/776.html</link><description>路漫漫，长修远，我们不能没有钱</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 15:04:24 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 15:04:24 GMT</pubDate><ttl>60</ttl><item><title>linux下执行java的脚本</title><link>http://www.cppblog.com/Khan/archive/2008/05/06/49008.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Tue, 06 May 2008 07:26:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2008/05/06/49008.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/49008.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2008/05/06/49008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/49008.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/49008.html</trackback:ping><description><![CDATA[<br><font face="monospace"><font color="#0000ff">#!/bin/sh</font><br><font color="#0000ff"># Filename : StockDispatch</font><br><font color="#0000ff"># &amp; nohub</font><br># 思路: 遍历当前目录和$JAVA_HOME/lib下所有的jar文件, 加入-cp的环境变量 然后执行入口类<br><font color="#008080">SETCOLOR_BOLD</font>=<font color="#804040"><strong>"</strong></font><font color="#ff00ff">echo -en </font><font color="#6a5acd">\\</font><font color="#ff00ff">033[1;32m</font><font color="#804040"><strong>"</strong></font><br><font color="#008080">SETCOLOR_NORMAL</font>=<font color="#804040"><strong>"</strong></font><font color="#ff00ff">echo -en </font><font color="#6a5acd">\\</font><font color="#ff00ff">033[0;39m</font><font color="#804040"><strong>"</strong></font><br><br><font color="#008080"><br>CLASSPATH</font>=<font color="#804040"><strong>""</strong></font><br><font color="#008080">CURRDIR</font>=<font color="#804040"><strong>"</strong></font><span style="background-color: #ff0000;"><font color="#ffffff">$(</font></span><font color="#804040"><strong>pwd</strong></font><span style="background-color: #ff0000;"><font color="#ffffff">)</font></span><font color="#804040"><strong>"</strong></font><br><font color="#008080">LIBDIR</font>=<font color="#804040"><strong>"</strong></font><font color="#a020f0">$CURRDIR</font><font color="#ff00ff">&nbsp;/usr/local/jdk1.5.0_02/lib</font><font color="#804040"><strong>"</strong></font><br><font color="#008080">tmpFile</font>=./<font color="#ff00ff">11</font><br><font color="#008080">pidFile</font>=./<font color="#a020f0">${</font><font color="#a020f0">0</font><font color="#a020f0">}</font>pid<br><br><font color="#0000ff"># find all jar library from current dir and CLASSPATH</font><br>find <font color="#a020f0">$LIBDIR</font>&nbsp;<font color="#6a5acd">-name</font>&nbsp;<font color="#804040"><strong>"</strong></font><font color="#ff00ff">*.jar</font><font color="#804040"><strong>"</strong></font><font color="#804040"><strong>&gt;</strong></font><font color="#a020f0">$tmpFile</font><br><br><br><font color="#0000ff"># add jar library to CLASSPATH</font><br><font color="#008080">I</font>=<font color="#ff00ff">0</font><br><font color="#804040"><strong>while</strong></font><font color="#804040"><strong>&nbsp;</strong></font><font color="#804040"><strong>read</strong></font><font color="#804040"><strong>&nbsp;line </strong></font><br><font color="#804040"><strong>do</strong></font>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008080">I</font>=<font color="#6a5acd">`expr </font><font color="#a020f0">$I</font><font color="#6a5acd">&nbsp;+ </font><font color="#ff00ff">1</font><font color="#6a5acd">&nbsp;`</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>if</strong></font>&nbsp;<font color="#804040"><strong>[</strong></font>&nbsp;<font color="#a020f0">$I</font>&nbsp;<font color="#804040"><strong>-eq</strong></font>&nbsp;<font color="#ff00ff">1</font>&nbsp;<font color="#804040"><strong>]</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>then</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008080">CLASSPATH</font>=<font color="#804040"><strong>"</strong></font><font color="#a020f0">${</font><font color="#a020f0">line</font><font color="#a020f0">}</font><font color="#804040"><strong>"</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>else</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008080">CLASSPATH</font>=<font color="#804040"><strong>"</strong></font><font color="#a020f0">${</font><font color="#a020f0">CLASSPATH</font><font color="#a020f0">}</font><font color="#ff00ff">:</font><font color="#a020f0">${</font><font color="#a020f0">line</font><font color="#a020f0">}</font><font color="#804040"><strong>"</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>fi</strong></font><br><font color="#804040"><strong>done</strong></font><font color="#804040"><strong>&lt;</strong></font>&nbsp;<font color="#a020f0">$tmpFile</font><br><br>rm <font color="#a020f0">$tmpFile</font><br><br><br><font color="#0000ff"># run program</font><br><font color="#804040"><strong>if</strong></font>&nbsp;<font color="#804040"><strong>[</strong></font>&nbsp;<font color="#804040"><strong>"</strong></font><font color="#ff00ff">-</font><font color="#a020f0">$1</font><font color="#804040"><strong>"</strong></font>&nbsp;<font color="#804040"><strong>!=</strong></font>&nbsp;<font color="#804040"><strong>"</strong></font><font color="#ff00ff">-</font><font color="#804040"><strong>"</strong></font>&nbsp;<font color="#804040"><strong>]</strong></font><font color="#804040"><strong>;</strong></font>&nbsp;<font color="#804040"><strong>then</strong></font>&nbsp;&nbsp; <font color="#0000ff"># if parameter 1 is not null</font><br>&nbsp;&nbsp;<font color="#804040"><strong>echo</strong></font><font color="#ff00ff">&nbsp;</font><font color="#804040"><strong>"</strong></font><font color="#ff00ff">java -cp .:</font><font color="#a020f0">${</font><font color="#a020f0">CLASSPATH</font><font color="#a020f0">}</font><font color="#ff00ff">&nbsp;&nbsp;com.khan.AppMain.UpdateCell2CBC </font><font color="#a020f0">$1</font><font color="#ff00ff">&nbsp;&gt; updatecell2cbc.log</font><font color="#804040"><strong>"</strong></font><br><font color="#0000ff">#&nbsp;&nbsp;java -cp .:${CLASSPATH} com.khan.AppMain.UpdateCell2CBC $1&gt; updatecell2cbc.log</font><br><font color="#804040"><strong>else</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>echo</strong></font><font color="#ff00ff">&nbsp;</font><font color="#804040"><strong>"</strong></font><font color="#ff00ff">&nbsp;&nbsp;usage: </font><font color="#a020f0">$0</font><font color="#ff00ff">&nbsp;&nbsp;CellListFile</font><font color="#804040"><strong>"</strong></font><br><font color="#804040"><strong>fi</strong></font><br><br><br></font><img src ="http://www.cppblog.com/Khan/aggbug/49008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2008-05-06 15:26 <a href="http://www.cppblog.com/Khan/archive/2008/05/06/49008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过两个点的经纬度计算距离</title><link>http://www.cppblog.com/Khan/archive/2008/02/28/43390.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 28 Feb 2008 07:18:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2008/02/28/43390.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/43390.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2008/02/28/43390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/43390.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/43390.html</trackback:ping><description><![CDATA[最近开始做一个类似gis的东西. 需要求一些经纬度相关的值..<br><br>看了<a href="http://panyee.cnblogs.com/archive/2006/07/04/442771.html" target="_blank">通过两个点的经纬度计算距离</a>这篇，据说是Google里扒来的算法，于是决定验证一下。<br>通过计算发现非常正确。<br>用30,120和31,121两个坐标点进行验证，同Mapinfo中计算的结果非常的相近。<br>后来又把坐标系直接当成直角坐标系来计算，发现误差很大。<br>于是仍然用直角坐标系方法来计算，给纬度加上了个0.86的参数，这样计算下来和结果相近。<br><br><br><br><br>c#代码<br>private const double EARTH_RADIUS = 6378.137; //地球半径<br>private static double rad(double d)<br>{<br>&nbsp;&nbsp;&nbsp;return d * Math.PI / 180.0;<br>}
<p>public static double GetDistance(double lat1, double lng1, double lat2, double lng2)<br>{<br>&nbsp;&nbsp;&nbsp;double radLat1 = rad(lat1);<br>&nbsp;&nbsp;&nbsp;double radLat2 = rad(lat2);<br>&nbsp;&nbsp;&nbsp;double a = radLat1 - radLat2;<br>&nbsp;&nbsp;&nbsp;double b = rad(lng1) - rad(lng2);<br>&nbsp;&nbsp;&nbsp;double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) + <br>&nbsp;&nbsp;&nbsp;&nbsp;Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));<br>&nbsp;&nbsp;&nbsp;s = s * EARTH_RADIUS;<br>&nbsp;&nbsp;&nbsp;s = Math.Round(s * 10000) / 10000;<br>&nbsp;&nbsp;&nbsp;return s;<br>}</p>
<br>
<p>vb代码</p>
<img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Const&nbsp;EARTH_RADIUS&nbsp;=&nbsp;6378.137<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Const&nbsp;Pi&nbsp;=&nbsp;3.1415926535898<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Function&nbsp;rad(ByVal&nbsp;d&nbsp;As&nbsp;Double)&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">rad&nbsp;=&nbsp;d&nbsp;*&nbsp;Pi&nbsp;/&nbsp;180<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Function<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Function&nbsp;GetDistance(lat1&nbsp;As&nbsp;Double,&nbsp;lng1&nbsp;As&nbsp;Double,&nbsp;lat2&nbsp;As&nbsp;Double,&nbsp;lng2&nbsp;As&nbsp;Double)&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Dim&nbsp;radlat1&nbsp;As&nbsp;Double,&nbsp;radlat2&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Dim&nbsp;a&nbsp;As&nbsp;Double,&nbsp;b&nbsp;As&nbsp;Double,&nbsp;s&nbsp;As&nbsp;Double,&nbsp;Temp&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">radlat1&nbsp;=&nbsp;rad(lat1)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">radlat2&nbsp;=&nbsp;rad(lat2)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">a&nbsp;=&nbsp;radlat1&nbsp;-&nbsp;radlat2<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">b&nbsp;=&nbsp;rad(lng1)&nbsp;-&nbsp;rad(lng2)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Temp&nbsp;=&nbsp;Sqr(Sin(a&nbsp;/&nbsp;2)&nbsp;^&nbsp;2&nbsp;+&nbsp;Cos(radlat1)&nbsp;*&nbsp;Cos(radlat2)&nbsp;*&nbsp;Sin(b&nbsp;/&nbsp;2)&nbsp;^&nbsp;2)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">s&nbsp;=&nbsp;2&nbsp;*&nbsp;Atn(Temp&nbsp;/&nbsp;Sqr(-Temp&nbsp;*&nbsp;Temp&nbsp;+&nbsp;1))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'没有反正弦函数，网上找了个<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">s&nbsp;=&nbsp;s&nbsp;*&nbsp;EARTH_RADIUS<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">GetDistance&nbsp;=&nbsp;s<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Function<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Private&nbsp;Sub&nbsp;Command1_Click()<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Text5.Text&nbsp;=&nbsp;Str(GetDistance(Val(Text1.Text),&nbsp;Val(Text2.Text),&nbsp;Val(Text3.Text),&nbsp;Val(Text4.Text)))<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Sub<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Private&nbsp;Sub&nbsp;Command2_Click()<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Text5.Text&nbsp;=&nbsp;Str((Sqr((Val(Text3.Text)&nbsp;-&nbsp;Val(Text1.Text))&nbsp;^&nbsp;2&nbsp;+&nbsp;(Val(Text4.Text)&nbsp;-&nbsp;Val(Text2.Text))&nbsp;^&nbsp;2))&nbsp;*&nbsp;111.3199338)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Sub<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Private&nbsp;Sub&nbsp;Command3_Click()<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Text5.Text&nbsp;=&nbsp;Str((Sqr((Val(Text3.Text)&nbsp;*&nbsp;0.86&nbsp;-&nbsp;Val(Text1.Text)&nbsp;*&nbsp;0.86)&nbsp;^&nbsp;2&nbsp;+&nbsp;(Val(Text4.Text)&nbsp;-&nbsp;Val(Text2.Text))&nbsp;^&nbsp;2))&nbsp;*&nbsp;111.3199338)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Sub
<p><br></p>
<p><br></p>
同纬度计算比较简单<br>
<p>A（60，30），B（60，90）两点之间，此段代码和我用余弦定理算出来的结果很一致。
<br>余弦定理的步骤是：1、算A、B弦长：地球半径R*cos（经度差60）=R/2；
<br>2、算角AOB,O为地球圆心，利用余弦定理，
<br>cosAOB=(2R*R-(R/2)^2) /2*R*R=7/8;
<br>3、弧AB的长为：R*arc cos(7/8);求毕 <br></p>
<br>
<p><br></p>
<p>原理:<br></p>
<p>
地球赤道上环绕地球一周走一圈共40075.04公里,而@一圈分成360&#176;,而每1&#176;(度)有60,每一度一秒在赤道上的长度计算如下：
<br>
<br>　　40075.04km/360&#176;=111.31955km
<br>
<br>　　111.31955km/60=1.8553258km=1855.3m
<br>
<br>　　而每一分又有60秒,每一秒就代表1855.3m/60=30.92m
<br>
<br>　　任意两点距离计算公式为
<br>
<br>　　d＝111.12cos{1/[sin&#934;Asin&#934;B十cos&#934;Acos&#934;Bcos(&#955;B—&#955;A)]}
<br>
<br>　　其中A点经度，纬度分别为&#955;A和&#934;A，B点的经度、纬度分别为&#955;B和&#934;B，d为距离。</p>
<br>  <img src ="http://www.cppblog.com/Khan/aggbug/43390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2008-02-28 15:18 <a href="http://www.cppblog.com/Khan/archive/2008/02/28/43390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbuilder 2006 错误信息 java/lang/ClassFormatError: Bad version information </title><link>http://www.cppblog.com/Khan/archive/2007/10/22/34838.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Mon, 22 Oct 2007 04:03:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2007/10/22/34838.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/34838.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2007/10/22/34838.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/34838.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/34838.html</trackback:ping><description><![CDATA[自动生成的代码运行就产生错误 <span style="color: #ff0000;">java/lang/ClassFormatError: Bad version information<br><br><br></span><br>project -&gt; project properties-&gt;build-&gt;java 项<br>把默认的 target VM : java 2 sdk , v5.0 and later<br>改为 All java sdks<br>然后rebuild下...<br>就ok 啦！<br><span style="color: #ff0000;"><br><br></span><span style="color: #ff0000;"><span style="color: #000000;"></span></span><span style="color: #ff0000;"><span style="color: #000000;"><br></span></span> <img src ="http://www.cppblog.com/Khan/aggbug/34838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2007-10-22 12:03 <a href="http://www.cppblog.com/Khan/archive/2007/10/22/34838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转载自IBM-DEV)java运用异步输入输出流编写Socket进程通信</title><link>http://www.cppblog.com/Khan/archive/2007/03/29/20878.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 29 Mar 2007 07:31:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2007/03/29/20878.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/20878.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2007/03/29/20878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/20878.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/20878.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: merlin java1.4 NIO Socket non-blocking 效能&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2007/03/29/20878.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/20878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2007-03-29 15:31 <a href="http://www.cppblog.com/Khan/archive/2007/03/29/20878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近的开发项目(java)</title><link>http://www.cppblog.com/Khan/archive/2006/11/03/14618.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 03 Nov 2006 05:49:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/11/03/14618.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/14618.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/11/03/14618.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/14618.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/14618.html</trackback:ping><description><![CDATA[
		<a class="" title="cmpp2gateway" href="/Files/Khan/smsgw_src.rar" target="">cmpp2_gateway</a>
		<br />
		<br />
		<a class="" title="realone" href="/Files/Khan/RealOne_Player_554.rar" target="">自己下载玩的</a>
<img src ="http://www.cppblog.com/Khan/aggbug/14618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-11-03 13:49 <a href="http://www.cppblog.com/Khan/archive/2006/11/03/14618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java执行外部指令,并接收中文结果</title><link>http://www.cppblog.com/Khan/archive/2006/09/28/13079.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 28 Sep 2006 02:07:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/09/28/13079.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/13079.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/09/28/13079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/13079.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/13079.html</trackback:ping><description><![CDATA[package com.khan.util;<br /><br /><br />import java.io.BufferedInputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />//import java.io.File;<br /><br />/**<br /> * &lt;p&gt;Title: &lt;/p&gt;<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> * @author not attributable<br /> * @version 1.0<br /> */<br /><br /><br />public class ExecCmd {<br /><br />    public ExecCmd() {<br /><br />    }<br /><br /><br />    // read an input-stream into a String<br />    public static String loadStream(InputStream in, String charset) throws IOException {<br />        int char_set_len = 2;<br />        if (null == charset) {<br />            charset = "GBK";<br />        }<br /><br />        if (charset.equals("utf8") || charset.equals("UTF8")<br />            || charset.equals("utf-8") || charset.equals("UTF-8")) {<br />            char_set_len = 3;<br />        }<br /><br />        int ptr = 0;<br />        byte[] char_buff = new byte[char_set_len];<br />        in = new BufferedInputStream(in);<br /><br />        StringBuffer buffer = new StringBuffer();<br />        while ((ptr = in.read()) != -1) {<br /><br />            if (ptr &gt;= 0x80) { //中文处理<br />                char_buff[0] = (byte) ptr;<br />                for (int i = 1; i &lt; char_set_len; i++) {<br />                    char_buff[i] = (byte) in.read();<br />                    if (char_buff[i] == -1) {<br />                        break;<br />                    }<br />                }<br />                buffer.append(new String(char_buff, charset));<br />                continue;<br />            }<br /><br />            buffer.append((char) ptr);<br />        }<br />        return buffer.toString();<br />    }<br /><br /><br />    static public void main(String[] args) {<br />        long l = 0;<br />        String str = "";<br />        String[] cmd1 = {"cmd.exe",<br />                        "/c",<br />                        "dir",<br />                        "/b",<br />                        "/s",   "e:\\*.log"};<br />                        //args[0] +"\\*.log"};<br /><br />        String[] cmd = {"gawk",<br />                       "-F,",<br />                       //"\"END{print NR}\"",<br />                       "\"END{print substr($1, 0, 8), NR}\"",<br />                       "mo_pay.log"};<br />        //File dir = new File("D:\\Program Files\\gawk\\bin");<br /><br />        try {<br />            Process ps = Runtime.getRuntime().exec(cmd1);<br />            String[] strs = loadStream(ps.getInputStream(), "GBK").split("\r\n");<br />            System.err.print(loadStream(ps.getErrorStream(), "GBK"));<br />            for (int i = 0; i &lt; strs.length; i++) {<br />                cmd[3] = strs[i].trim();<br />                ps = Runtime.getRuntime().exec(cmd);<br />                str = loadStream(ps.getInputStream(), "GBK");<br />                str = str.substring(0, str.indexOf('\r'));<br /><br />                l += Long.parseLong(str.split(" ")[1]);<br />                System.out.println(str);<br />                System.err.print(loadStream(ps.getErrorStream(), "GBK"));<br />            }<br />            System.out.println(l);<br />        } catch (IOException e) {<br />            e.printStackTrace();<br />        }<br />        //System.out.println("执行完毕");<br />    }<br /><br />}<br /><br /><br /><br />  这个代码是我最近的一个project中,用来调用gawk的处理结果,并在web上显示<br />在web中显示的部分就是jsp了.这个就没有必要贴了,<br />  awk处理文本的效率确实不错.<br /><img src ="http://www.cppblog.com/Khan/aggbug/13079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-09-28 10:07 <a href="http://www.cppblog.com/Khan/archive/2006/09/28/13079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 上传文件代码，支持中文文件名和中文文件内容，可以同时提交多个参数</title><link>http://www.cppblog.com/Khan/archive/2006/08/11/11132.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 11 Aug 2006 07:49:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/08/11/11132.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/11132.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/08/11/11132.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/11132.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/11132.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 提交的表单代码：&lt;table&nbsp;width="100%"&nbsp;border="0"&nbsp;cellspacing="1"&nbsp;cellpadding="0"&nbsp;bgcolor="#FF9900"&nbsp;align="center"&gt;&nbsp;&nbsp;&lt;...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/08/11/11132.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/11132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-08-11 15:49 <a href="http://www.cppblog.com/Khan/archive/2006/08/11/11132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 的简单数据库连接池实现</title><link>http://www.cppblog.com/Khan/archive/2006/03/05/3755.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Sun, 05 Mar 2006 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/03/05/3755.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3755.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/03/05/3755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3755.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3755.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一个连接容器，记录连接和连接使用状况package&nbsp;db.khan;import&nbsp;java.sql.*;/**//*数据库连接容器&nbsp;*&nbsp;*/public&nbsp;class&nbsp;DBPoolCon&nbsp;{&nbsp;&nbsp;/**//*容器中的连接*/&nbsp;&nbsp;public&nbsp;Connection&nbsp;con...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/03/05/3755.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/3755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-03-05 17:36 <a href="http://www.cppblog.com/Khan/archive/2006/03/05/3755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搞定了Jms的ObjectMessage对象传递 ，这个项目可以告一段落了</title><link>http://www.cppblog.com/Khan/archive/2006/02/13/3236.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Mon, 13 Feb 2006 09:41:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/13/3236.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3236.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/13/3236.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3236.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3236.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关键字:JAVA JMS&nbsp; Active MQ&nbsp; XML INI Eclipse Resinjms服务器 , active MQ 我这一篇应该是第一篇比较详细的用代码+注释介绍的中文文档了activeMQ是一个开源的C核心的jms服务器,在国外的应用相当广泛.所以这个项目我放弃了jboss4的用数据库作为消息载体的jms服务,改用active MQ&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/02/13/3236.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/3236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-13 17:41 <a href="http://www.cppblog.com/Khan/archive/2006/02/13/3236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>消息中间件和JMS(转载自jfox project)</title><link>http://www.cppblog.com/Khan/archive/2006/02/07/3100.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Tue, 07 Feb 2006 02:42:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/07/3100.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3100.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/07/3100.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3100.html</trackback:ping><description><![CDATA[<br>
(from http://jmsmom.3322.net/mom_jms/jms.html)
<br><br>
当前，CORBA、DCOM、RMI等RPC中间件技术已广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系统，这些技术也显示出其局限性：
（1）同步通信：客户发出调用后，必须等待服务对象完成处理并返回结果后才能继续执行；（2）客户和服务对象的生命周期紧密耦合：客户进程和服务对象进程
都必须正常运行；如果由于服务对象崩溃或者网络故障导致客户的请求不可达，客户会接收到异常；（3）点对点通信：客户的一次调用只发送给某个单独的目标对
象。 <br>&nbsp;&nbsp; 面向消息的中间件（Message Oriented
Middleware，MOM）较好的解决了以上问题。发送者将消息发送给消息服务器，消息服务器将消息存放在若干队列中，在合适的时候再将消息转发给接
收者。这种模式下，发送和接收是异步的，发送者无需等待；二者的生命周期未必相同：发送消息的时候接收者不一定运行，接收消息的时候发送者也不一定运行；
一对多通信：对于一个消息可以有多个接收者。 <br>&nbsp;&nbsp;
已有的MOM系统包括IBM的MQSeries、Microsoft的MSMQ和BEA的MessageQ等。由于没有一个通用的标准，这些系统很难实现
互操作和无缝连接。Java Message Service（JMS）是SUN提出的旨在统一各种MOM系统接口的规范，它包含点对点（Point
to
Point，PTP）和发布/订阅（Publish/Subscribe，pub/sub）两种消息模型，提供可靠消息传输、事务和消息过滤等机制。 
                            <p><br><b>1.JMS<br></b>&nbsp;&nbsp;
JAVA 消息服务(JMS)定义了Java 中访问消息中间件的接口。JMS 只是接口，并没有给予实现，实现JMS 接口的消息中间件称为JMS
Provider，iLink实现了JMS接口，用户可以通过使用JMS接口，在iLink中进行JMS编程。 iLink支持JMS1.0.2版本。
<br><br><b>2.JMS接口描述<br></b>&nbsp;&nbsp;  JMS 支持两种消息类型PTP 和Pub/Sub，分别称作：PTP Domain 和Pub/Sub Domain，这两种接口都继承统一的JMS父接口，JMS 主要接口如下所示：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="97%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table3" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td height="16" width="22%">
                                                        <p><font size="-1">MS父接口</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">PTP</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">Pub/Sub</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">ConnectionFactory</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueConnectionFactory</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicConnectionFactory</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">Connection</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueConnection</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicConnection</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">Destination</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">Queue</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">Topic</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">Session</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueSession</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicSession</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">MessageProducer</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueSender</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicPublisher</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">MessageConsumer</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueReceiver,QueueBrowser</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicSubscriber</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;&nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br>&nbsp;&nbsp;  ConnectionFactory ：连接工厂，JMS 用它创建连接<br>&nbsp;&nbsp;  Connection ：JMS 客户端到JMS Provider 的连接<br>
                                &nbsp;&nbsp;  Destination ：消息的目的地<br>&nbsp;&nbsp;  Session： 一个发送或接收消息的线程<br>&nbsp;&nbsp;  MessageProducer： 由Session 对象创建的用来发送消息的对象<br>
                                &nbsp;&nbsp;  MessageConsumer： 由Session 对象创建的用来接收消息的对象<br><br><b>3.JMS消息模型<br></b>JMS 消息由以下几部分组成：消息头，属性，消息体。<br>&nbsp;&nbsp;  <br><b>3.1 消息头(Header)</b>
                                 - 消息头包含消息的识别信息和路由信息，消息头包含一些标准的属性如：JMSDestination,JMSMessageID 等。 <br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="97%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table4" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td height="16" width="25%">
                                                        <p><font size="-1">&nbsp;消息头</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">&nbsp;由谁设置</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDestination</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDeliveryMode</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSExpiration</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSPriority</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSMessageID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSTimestamp</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSCorrelationID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">客户</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSReplyTo</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">客户</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSType</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">客户</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSRedelivered</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">JMS Provider</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;&nbsp;   &nbsp;   &nbsp;   <br>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;&nbsp; &nbsp; &nbsp;  <br><b>3.2 属性(Properties)</b> - 除了消息头中定义好的标准属性外，JMS 提供一种机制增加新属性到消息头中，这种新属性包含以下几种：<br>&nbsp;&nbsp;  1. 应用需要用到的属性;<br>
                                &nbsp;&nbsp;  2. 消息头中原有的一些可选属性;<br>&nbsp;&nbsp;  3. JMS Provider 需要用到的属性。<br>&nbsp;&nbsp;  标准的JMS 消息头包含以下属性：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="97%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table5" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDestination</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消息发送的目的地</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDeliveryMode</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">传递模式， 有两种模式： PERSISTENT 和NON_PERSISTENT，PERSISTENT 表示该消息一定要被送到目的地，否则会导致应用错误。NON_PERSISTENT 
                                                            表示偶然丢失该消息是被允许的，这两种模式使开发者可以在消息传递的可靠性和吞吐量之间找到平衡点。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSMessageID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">唯一识别每个消息的标识，由JMS Provider 产生。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSTimestamp</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">一个消息被提交给JMS Provider 到消息被发出的时间。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSCorrelationID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">用来连接到另外一个消息，典型的应用是在回复消息中连接到原消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSReplyTo</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">提供本消息回复消息的目的地址</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSRedelivered</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">如果一个客户端收到一个设置了JMSRedelivered 属性的消息，则表示可能该客户端曾经在早些时候收到过该消息，但并没有签收(acknowledged)。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSType</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消息类型的识别符。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSExpiration</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消
息过期时间，等于QueueSender 的send 方法中的timeToLive 值或TopicPublisher 的publish
方法中的timeToLive 值加上发送时刻的GMT 时间值。如果timeToLive值等于零，则JMSExpiration
被设为零，表示该消息永不过期。如果发送后，在消息过期时间之后消息还没有被发送到目的地，则该消息被清除。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSPriority</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消息优先级，从0-9 十个级别，0-4 是普通消息，5-9 是加急消息。JMS 不要求JMS Provider 严格按照这十个优先级发送消息，但必须保证加急消息要先于普通消息到达。</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p><br><b>3.3 消息体(Body)</b> - JMS API 定义了5种消息体格式，也叫消息类型，你可以使用不同形式发送接收数据并可以兼容现有的消息格式，下面描述这5种类型： <br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="96%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table6" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="26%">
                                                        <p><font size="-1">消息类型</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">消息体</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">TextMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">java.lang.String对象，如xml文件内容</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">MapMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">名/值对的集合，名是String对象，值类型可以是Java任何基本类型</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">BytesMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">字节流</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">StreamMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">Java中的输入输出流</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">ObjectMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">Java中的可序列化对象</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">Message</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">没有消息体，只有消息头和属性</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                                <br><br><br><br><br><br><br><br><br><br>下例演示创建并发送一个TextMessage到一个队列： <br>TextMessage message = queueSession.createTextMessage();<br>message.setText(msg_text); // msg_text is a String<br>
                                queueSender.send(message);<br><br>下例演示接收消息并转换为合适的消息类型： <br>Message m = queueReceiver.receive();<br>if (m instanceof TextMessage) {<br>&nbsp;TextMessage message = (TextMessage) m;<br>
                                &nbsp;System.out.println("Reading message: " + message.getText());<br>} else {<br>&nbsp;// Handle error<br>}<br><br><b>4. 消息的同步异步接收<br></b>
                                &nbsp;&nbsp;  消息的同步接收是指客户端主动去接收消息，JMS 客户端可以采用MessageConsumer 的receive方法去接收下一个消息。<br>&nbsp;&nbsp;
消息的异步接收是指当消息到达时，主动通知客户端。JMS 客户端可以通过注册一个实 现MessageListener
接口的对象到MessageConsumer，这样，每当消息到达时，JMS Provider
会调用MessageListener中的onMessage 方法。 <br><br><br><b>5. PTP模型<br></b>
                                PTP(Point-to-Point)模型是基于队列的，发送方发消息到队列，接收方从队列接收消息，队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样，队列可以包含各种消息，JMS 
                                Provider 提供工具管理队列的创建、删除。JMS PTP 模型定义了客户端如何向队列发送消息，从队列接收消息，浏览队列中的消息。<br>&nbsp;&nbsp;  下面描述JMS PTP 模型中的主要概念和对象：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="96%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table1" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="26%">
                                                        <p><font size="-1">名称</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">描述</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">Queue</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">由JMS Provider 管理，队列由队列名识别，客户端可以通过JNDI 接口用队列名得到一个队列对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">TemporaryQueue</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">由QueueConnection 创建，而且只能由创建它的QueueConnection 使用。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueConnectionFactory</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端用QueueConnectionFactory 创建QueueConnection 对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueConnection</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">一个到JMS PTP provider 的连接，客户端可以用QueueConnection 创建QueueSession 来发送和接收消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueSession</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">提供一些方法创建QueueReceiver 、QueueSender、QueueBrowser 和TemporaryQueue。如果在QueueSession 
                                                            关闭时，有一些消息已经被收到，但还没有被签收(acknowledged)，那么，当接收者下次连接到相同的队列时，这些消息还会被再次接收。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueReceiver</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端用QueueReceiver 接收队列中的消息，如果用户在QueueReceiver 中设定了消息选择条件，那么不符合条件的消息会留在队列中，不会被接收到。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueSender</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端用QueueSender 发送消息到队列。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueBrowser</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端可以QueueBrowser 浏览队列中的消息，但不会收走消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueRequestor</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">JMS 提供QueueRequestor 类简化消息的收发过程。QueueRequestor 的构造函数有两个参数：QueueSession 和queue，QueueRequestor 通过创建一个临时队列来完成最终的收发消息请求。</font>
                                                        </p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">可靠性(Reliability)</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">队列可以长久地保存消息直到接收者收到消息。接收者不需要因为担心消息会丢失而时刻和队列保持激活的连接状态，充分体现了异步传输模式的优势。</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                                <br><br>&nbsp;&nbsp;   &nbsp;   &nbsp;   &nbsp;   <br>&nbsp;&nbsp;   &nbsp;   &nbsp;  <br>&nbsp;&nbsp; <br>&nbsp;
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p><b>6. PUB/SUB模型<br></b>JMS Pub/Sub 模型定义了如何向一个内容节点发布和订阅消息，这些节点被称作主题(topic)。<br>&nbsp;&nbsp;  主题可以被认为是消息的传输中介，发布者(publisher)发布消息到主题，订阅者(subscribe)
                                从主题订阅消息。主题使得消息订阅者和消息发布者保持互相独立，不需要接触即可保证消息的传送。<br>&nbsp;&nbsp;  下面描述JMS Pub/Sub 模型中的主要概念和对象：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="98%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table2" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="27%">
                                                        <p><font size="-1">名称</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">描述</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">订阅(subscription)</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">消
息订阅分为非持久订阅(non-durable subscription)和持久订阅(durable
subscrip-tion)，非持久订阅只有当客户端处于激活状态，也就是和JMS Provider
保持连接状态才能收到发送到某个主题的消息，而当客户端处于离线状态，这个时间段发到主题的消息将会丢失，永远不会收到。持久订阅时，客户端向JMS
注册一个识别自己身份的ID，当这个客户端处于离线时，JMS Provider 会为这个ID 保存所有发送到主题的消息，当客户再次连接到JMS
Provider时，会根据自己的ID 得到所有当自己处于离线时发送到主题的消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">Topic</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">主题由JMS Provider 管理，主题由主题名识别，客户端可以通过JNDI 接口用主题名得到一个主题对象。JMS 没有给出主题的组织和层次结构的定义，由JMS Provider 自己定义。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TemporaryTopic</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">临时主题由TopicConnection 创建，而且只能由创建它的TopicConnection 使用。临时主题不能提供持久订阅功能。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicConnectionFactory</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">客户端用TopicConnectionFactory 创建TopicConnection 对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicConnection</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">TopicConnection 是一个到JMS Pub/Sub provider 的连接，客户端可以用TopicConnection创建TopicSession 来发布和订阅消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicSession</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">TopicSession 提供一些方法创建TopicPublisher、TopicSubscriber、TemporaryTopic 。它还提供unsubscribe 方法取消消息的持久订阅。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicPublisher</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">客户端用TopicPublisher 发布消息到主题。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicSubscriber</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">客户端用TopicSubscriber 接收发布到主题上的消息。可以在TopicSubscriber 中设置消息过滤功能，这样，不符合要求的消息不会被接收。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">Durable TopicSubscriber</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">如果一个客户端需要持久订阅消息，可以使用Durable TopicSubscriber，TopSession 提供一个方法createDurableSubscriber创建Durable TopicSubscriber 对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">恢复和重新派送(Recovery and Redelivery)</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">非持久订阅状态下，不能恢复或重新派送一个未签收的消息。只有持久订阅才能恢复或重新派送一个未签收的消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicRequestor</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">JMS 提供TopicRequestor 类简化消息的收发过程。TopicRequestor 的构造函数有两个参数：TopicSession 和topic。TopicRequestor 通过创建一个临时主题来完成最终的发布和接收消息请求。</font>
                                                        </p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">可靠性(Reliability)</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">当所有的消息必须被接收，则用持久订阅模式。当丢失消息能够被容忍，则用非持久订阅模式。</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp; <br>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br><b>7. 开发JMS的步骤<br></b>
                                &nbsp;&nbsp;  广义上说，一个JMS 应用是几个JMS 客户端交换消息，开发JMS 客户端应用由以下几步构成： <br>用JNDI 得到ConnectionFactory 对象； <br>用JNDI 得到目标队列或主题对象，即Destination 对象； <br>
                                用ConnectionFactory 创建Connection 对象； <br>用Connection 对象创建一个或多个JMS Session； <br>用Session 和Destination 创建MessageProducer 和MessageConsumer； <br>通知Connection 开始传递消息。 </p><img src ="http://www.cppblog.com/Khan/aggbug/3100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-07 10:42 <a href="http://www.cppblog.com/Khan/archive/2006/02/07/3100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA MESSAGE SERVICE的概念与体系结构(转自计算机世界i社区)</title><link>http://www.cppblog.com/Khan/archive/2006/02/07/3099.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Tue, 07 Feb 2006 02:37:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/07/3099.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3099.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/07/3099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3099.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3099.html</trackback:ping><description><![CDATA[&nbsp;企业信息产品正在成为使内部公司运作一体化的基本部件，也让一些相互独立的商业部件利用它组合成一个可靠的、更灵活的、有弹性的系统。另外对于传统的
MOM提供商，企业信息产品也是被一些有名的数据库开发商和许多与internet相联系的公司所提供。Java语言客户端和Java语言中间层肯定有能
力结合和使用这些企业信息产品，那么JMS（Java message
service）提供了这种能力，它是以SUN公司领导和发起开发的一套标准的JAVA API。这套JAVA API（JMS
API）提供了一个标准的方法去建立、发送、和接收一个企业信息系统的信息，它是一个接口的集合并且定义了一个JMS客户端如何获取企业信息产品的工具的
一套规则。因为信息是对等的， 所有的JMS客户一般都被当作客户端来看待。JMS API也可以<br>
和其他的JAVA API相结合，它甚至和JDBC API在同一个事务内运作而相安无事，它也可以直接地和Java Transaction API
(JTA)、Java Transaction Service API (JTS)一起工作。不要把JMS
API当作JavaBeans，它最初的设计并不是作为JavaBeans部件来设计的，但是JavaBeans能够使用它的session发送和接收信
息。不要忘了Java Naming and Directory Interface API(JNDI), 没有它我们也无法配置和寻找JMS对象。<br>
&nbsp;&nbsp;JMS的应用有以下几个部分组合而成：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;JMS Clients: 它们是java 语言程序用来发送和接收信息的。<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;Non-JMS Clients: 它们是本地的信息系统的API构建的而不是用JMS API。<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;Messages: 每一个应用都要定义一个信息集合用来在客户端进行信息通讯。<br>
四、&nbsp;&nbsp;&nbsp;&nbsp;JMS Provider: 实现JMS的一个信息系统，除了管理和控制之外，这也是一个完整的信息产品的必须的特征。<br>
五、&nbsp;&nbsp;&nbsp;&nbsp;Administrated Objects: 由客户端预先配置创建的JMS对象。<br>
&nbsp;&nbsp;&nbsp;&nbsp;JMS的管理方法：<br>
有两个JMS管理对象的类型：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;ConnectionFactory:&nbsp;&nbsp;客户端用这个对象创建连接。<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;Destination: 客户端指定的接收或发送的一个信息源。<br>
管理者将Administrated Objects放在一个叫JNDI namespace的地方。<br>
JMS两种信息风格：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;POINT-TO-POINT(PTP)<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;PUBLISH-AND-SUBSCRIBE(PUB/SUB)<br>
JMS的接口：<br>
&nbsp;&nbsp;根据采用的信息风格其接口对象也是不同的：<br>
公用对象：<br>
&nbsp;&nbsp;ConnectionFactory、Connection、Destination、Session、MessagerPoducer、MessageConsumer<br>
PTP专用对象：<br>
&nbsp;&nbsp;QueueConnectionFactory、QueueConnection、Queue、QueueSession、QueueSender、QueueReceiver or QueueBrowser<br>
PUB/SUB专用对象:<br>
&nbsp;&nbsp;TopicConnectionFactory、TopicConnection、Topic、TopicSession、TopicPublisher、TopicSubscriber<br><br>
开发一个JMS客户端的流程：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;用JNDI找到一个ConnectionFactory对象。<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;用JNDI找到一个Destination对象。<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;用ConnectionFactory对象建立一个JMS Connection对象。<br>
四、&nbsp;&nbsp;&nbsp;&nbsp;用JMS Connection对象建立一个或多个JMS Session对象。<br>
五、&nbsp;&nbsp;&nbsp;&nbsp;用一个Session和Destination建立一个MessageProducer和MessageConsumer对象。<br>
六、&nbsp;&nbsp;&nbsp;&nbsp;用Connection对象开始信息递交。<br>
JMS的多线程：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JMS对象中有一部分是被自动共享的，因此JMS限制那些被自动共享的对象使之不能够被一个多线程的程序所存取，下面列出了哪些对象能够被共享：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自动共享的对象：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;Destination<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;ConnectionFactory<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;Connection<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不被共享的对象：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;Session<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;MessageProducer<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;MessageConsumer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMS消息的格式：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMS提供了系列的API来完成信息的格式，我们必须严格按照这些格式来传递信息。<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;信息头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
JMSDestination,JMSDeliveryMode,JMSExpiration,JMSPriority,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSMessageID,JMSTimestamp,JMSCorrelationID,JMSReplyTo,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSType,JMSRedelivered<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;信息属性<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSXUserID,JMSAppID,JMSXDeliveryCount, JMSXGroupID,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSXGroupSeq,JMSXProducerTXID,JMSXConsumerTXID,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSXRcvTimestamp,JMSXState<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;信息体(提供了五种信息体，每一种信息体有自己专用的接口)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamMessage,MapMessage,TextMessage,ObjectMessage,BytesMessage<br><img src ="http://www.cppblog.com/Khan/aggbug/3099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-07 10:37 <a href="http://www.cppblog.com/Khan/archive/2006/02/07/3099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>扫雷游戏的设计(Kjava 原创)</title><link>http://www.cppblog.com/Khan/archive/2006/02/05/3077.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Sun, 05 Feb 2006 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/05/3077.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3077.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/05/3077.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3077.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3077.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先我要装得像高手一样,来假装把系统稍微分析一下。一般，按照java得开发模式，这种程序一般是分为三个模块来开发。如下三个：一个程序运作的主文件，也就是一个midlet的继承；一个界面的表示类，也就是一个canvas的继承，界面上应该有些菜单，如new、exit 什么的，那就应该要 implements一个commandListener消息监听类(大家可以把java的消息监听理解为一个线程...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/02/05/3077.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/3077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-05 21:44 <a href="http://www.cppblog.com/Khan/archive/2006/02/05/3077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>跨平台图形化c++开发环境的搭建</title><link>http://www.cppblog.com/Khan/archive/2006/02/05/3070.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Sun, 05 Feb 2006 10:14:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/05/3070.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3070.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/05/3070.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3070.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3070.html</trackback:ping><description><![CDATA[准备几样东西<br>编译器 mingw 5.0.0 (windows下的配置为例)<a href="http://sourceforge.net/projects/astyle/"></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选装Gcc,Make（和c/c++相关的都装上）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GDB 调试器<br><font color="#0000ff"><u>http://www.mingw.org/download.shtml</u></font><br><br>ide&nbsp; eclipse 3.1.2&nbsp;&nbsp; +&nbsp; cdt 3.0.1&nbsp; (eclipse是基于java的,需要配置java环境)<br><font color="#0000ff"><u>http://www.eclipse.org/downloads/<br>http://java.sun.com</u></font><br><br>formatter AStyle&nbsp; c/c++ java c# 代码格式化工具 <br><a href="http://sourceforge.net/projects/astyle/">http://sourceforge.net/projects/astyle/</a><br><br><br>一.安装mingw <br>&nbsp;1. 到指定目录，我的安装路径为 D:\Develop\MinGW<br>&nbsp;2. 配置系统环境变量 <br>&nbsp;&nbsp;&nbsp;&nbsp; MINGW_HOME = D:\Develop\MinGW<br>&nbsp;&nbsp;&nbsp;&nbsp; class_path = .;%MINGW_HOME%\lib<br>&nbsp;&nbsp;&nbsp;&nbsp; path = .;%MINGW_HOME%\bin<br>&nbsp;&nbsp;&nbsp; 当系统中有多个c++开发包的时候,写在前面的路径优先<br>&nbsp;&nbsp;&nbsp; mingw中的make程序名为 mingw32-make.exe ,推荐将其改名为make<br><br>二.安装 eclipse 3.12<br>&nbsp;1.安装jdk+jre (我机器上是j2sdk 1.5&nbsp; 路径为 D:\Develop\J2SDK ) <br>&nbsp;2.配置java系统环境变量 <br>&nbsp;&nbsp;&nbsp;&nbsp; JAVA_HOME = D:\Develop\J2SDK<br>
&nbsp;&nbsp;&nbsp;&nbsp; class_path = .;%JAVA_HOME%\lib<br>
&nbsp;&nbsp;&nbsp;&nbsp; path = .;%JAVA_HOME%\bin<br>&nbsp;3.下载Eclipse 解压到指定目录,直接就可以执行,如果java环境配置没有问题的话<br>&nbsp;4.安装cdt (c/c++ develop kit)<br>&nbsp;&nbsp; 我按照网上的方法安装数次都不行 (将org.eclipse.cdt-3.x.x-win32.x86.zip 和 org.eclipse.cdt.sdk-3.0.1-win32.x86.zip 中的文件copy到eclipse安装目录的对应目录中)<br>&nbsp;&nbsp; 最后用eclipse自动升级的办法 打开eclipse help--&gt;software updates--&gt;find an install<br>&nbsp;&nbsp; 选中search for new features to install , 点next, new remote site ,<font color="#0000ff"><font color="#000000"></font></font><br>&nbsp;&nbsp;&nbsp; name = cdt 3.01 <br>&nbsp;&nbsp;&nbsp; url = <font color="#0000ff"><u>http://download.eclipse.org/tools/cdt/releases/eclipse3.1</u></font>&nbsp; <br>然后选择 finish ,选中所有文件,开始下载,下载完成后会自动提示安装, 安装完成后 apply change ,然后重启eclipse <br>就可以在eclipse下进行c/c++ 开发了<br><br>&nbsp;&nbsp; 还有一个问题需要注意,cdt的一个问题,在对c++文件建立indexer时会在75%的时候卡住,而且cpu占用率通常都是100% ,我知道的唯一的解决办法是将indexer功能关闭 windows--&gt;perferences--&gt; c/c++--&gt;indexer 选择No Indexer<br><br>三.安装astyle<br>&nbsp;&nbsp; 由于eclipse本身没有针对c/c++的代码格式化工具,所以我们需要借助第三方的工具,我选用astyle一个小巧的,opensource的代码格式化工具,安装非常简单,解压到指定目录下,只有一个可执行文件,astyle.exe ,其他的都是source doc, 可以直接在命令行下使用,语法参阅相关文档<br>&nbsp;&nbsp; 我将其整合到了gvim , editplus ,eclipse中 . eclipse--&gt;external tools--&gt;program&nbsp; 选择new 新建 <br>&nbsp;&nbsp;&nbsp; name = Formatter C++<br>&nbsp;&nbsp;&nbsp; localtion = D:\Develop\AStyle1.15\astyle.exe<br>&nbsp;&nbsp;&nbsp; working directory = ${workspace_loc:/${project_name}}<br>&nbsp;&nbsp;&nbsp; arguments = --style=kr --mode=c++ --indent=spaces=2 ${resource_name}<br>&nbsp;&nbsp; 确定就ok了.<br>&nbsp;&nbsp; 使用的时候 直接选择 Formatter C++ 就ok了 这里的设置表示,代码风格为k&amp;r, 语法c++ ,代码缩进2空格<br><br>四,测试代码<br>&nbsp; 新建一个managed c++ project<br>&nbsp; 新建一个c++ 文件 helloWorld.cpp<br><br>/*helloWorld.cpp*/<br>#include &lt;iostream&gt;<br><br>using namespace std;<br><br>int main() {<br>&nbsp; char str[100] = "hello world!!";<br>&nbsp; cout &lt;&lt; str &lt;&lt; endl;<br>}<br><br><br>&nbsp; 新建makefile<br># Project: helloWorld<br><br><br>CPP&nbsp; = g++<br>CC&nbsp;&nbsp; = gcc<br>LIBS =<br>INCS =<br>CXXINCS = <br>CXXFLAGS = -o -Wall -g $(CXXINCS) $(LIBS)<br>CFLAGS = -o -Wall -g<br><br><br>.c.o: $(CC) $(CFLAGS)&nbsp; $&lt;<br><br>.cpp.o: $(CPP) $(CXXFLAGS) $&lt;<br><br>all: helloWorld<br><br>helloWorld: helloWorld.o<br>&nbsp;&nbsp;&nbsp; $(CPP) -o helloWorld helloWorld.o $(CXXINCS) $(LIBS)<br><br>helloWorld.o: helloWorld.cpp<br><br><br>clean:<br>&nbsp;&nbsp;&nbsp; del *.exe *.orig *.o<br>&nbsp; <br><br><font color="#0000ff"><font color="#000000"></font></font><img src ="http://www.cppblog.com/Khan/aggbug/3070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-05 18:14 <a href="http://www.cppblog.com/Khan/archive/2006/02/05/3070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]操，个死人微软逼我打了sqlserver 的sp3补丁</title><link>http://www.cppblog.com/Khan/archive/2006/01/12/2622.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 12 Jan 2006 01:56:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/01/12/2622.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2622.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/01/12/2622.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2622.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2622.html</trackback:ping><description><![CDATA[[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket ，sql server sp3补丁<img src="http://blog.codelphi.com/liukun966123/aggbug/73228.aspx" height="1" width="1"><br><p>&nbsp;&nbsp;&nbsp; 本来调试好的jsp脚本，突然就访问不了数据库了，郁闷了半个下午，结果是windows 2003自作主张的封掉了sqlserver 2000可能存在漏洞的端口，导致我访问数据库的时候出现 Error establishing socket</p> <p>&nbsp;&nbsp;&nbsp; 所以提醒大家，有这种错误的时候，检查sql server sp3补丁</p><a href="http://blog.codelphi.com/liukun966123/archive/2005/08/16/73228.aspx"></a><img src ="http://www.cppblog.com/Khan/aggbug/2622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-01-12 09:56 <a href="http://www.cppblog.com/Khan/archive/2006/01/12/2622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]resin2.1.4+iis 配置方法</title><link>http://www.cppblog.com/Khan/archive/2006/01/12/2631.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 12 Jan 2006 01:56:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/01/12/2631.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2631.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/01/12/2631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2631.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2631.html</trackback:ping><description><![CDATA[<p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">resin2.1.4+iis </span></b><font face="Arial Unicode MS"><b><span style="font-size: 9pt; color: black;">配置方法</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">第一步，安装</font></span></b><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jdk1.2.2 </span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">执行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">jdk-1_2_2_008-win.exe</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，将</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jdk1.2.2</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">安装到硬盘</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">-------</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">说明：把</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">jdk</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">安装到</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">C</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">盘或</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">D</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">盘都可以，这里假设安装在</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">D</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">盘</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN"> d:\jdk<o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">如图中红圈标示位置：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><span style="color: rgb(51, 51, 102); text-decoration: none;"></span><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">经过几步之后选择</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">JAVA</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">运行环境的安装位置，直接选</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“next”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">安装：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jdk</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">安装完毕后</span><span style="font-size: 9pt; color: red;">重新启动</span><span style="font-size: 9pt; color: black;">电脑</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><b><span style="font-size: 9pt; color: black;">第二步，设置环境变量</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">右键</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">我的电脑</font></span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，选</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">属性</font></span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> -&gt;</span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN"> </span></b><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">高级</font></span></b><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';"> </span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">-&gt; </span><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">环境变量</font></span></b><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN"><br></span></b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">系统变量</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">处设置如下几个变量：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">A. </span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">CLASSPATH</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> =d:\jdk\lib\dt.jar;d:\jdk\lib\tools.jar<br>B. </span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">JAVA_HOME </span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">=d:\jdk<br>C. </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN"> path </span></b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">的值中添加</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> d:\jdk\;d:\jdk\bin;<o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">如图：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">第三步，配置</font></span></b><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">resin</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">拷贝</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">resin</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">目录到</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">D</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">盘根目录，如图：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">执行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">d:\resin\bin\httpd.exe</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，弹出两个窗口，先不要关掉，如果像下图这样就对了：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">此时请打开浏览器敲入</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><a href="http://127.0.0.1:8080/">http://127.0.0.1:8080/</a></span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，应可看到如下画面：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">D</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">盘建立</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\wwwroot</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">和</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\scripts</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">目录</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">internet</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">服务管理器中将主目录指向以</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">wwwroot</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，另建一个</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">script</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">目录，指向到</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">scripts</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，如果原来就有目录，则不必新建，确认其可正常工作就可以了</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">关闭</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">iis</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">：先关掉</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">httpd.exe</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">窗口，另一个窗口将自动关掉</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">运行：</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">net stop w3svc</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">拷贝</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">D:\resin\libexec\isapi_srun.dll</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">到</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">D:\Inetpub\scripts</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">下面</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">添加</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">isapi</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">筛选器：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">该筛选器添加后，优先级为</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“* </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">未知</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> *”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，不要理它，继续下面的工作</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\scripts</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">目录下建立</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> resin.ini </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">文件，内容如下：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><font style="background-color: rgb(221, 237, 251);"><span class="code1"><span style="font-size: 9pt; font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN">CauchoConfigFile d:/resin/conf/resin.conf</span></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">修改</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> d:\resin\conf\resin.conf</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">寻找</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;caucho.com&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，一般是第</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">20</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">行左右，在它下面加入</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;iis priority='high'/&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">寻找</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;doc-dir&gt;doc&lt;/doc-dir&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，一般是在第</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">67</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">行左右，把它注释掉：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br>“</span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">&lt;!-- &lt;doc-dir&gt;doc&lt;/doc-dir&gt; --&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”<o:p></o:p></span></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">将其上方的</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;http-server&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">改为</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br>“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;http-server app-dir='d:\inetpub\wwwroot'&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”<br><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">到第</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">178</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">行左右，将</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span class="code1"><span style="font-size: 9pt; font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN"><font style="background-color: rgb(221, 237, 251);">&lt;servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/&gt;</font></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: 'Courier New';" lang="EN"><br><span class="code1"><span style="letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/&gt;</span></span></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">换成</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span class="code1"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN"><font style="background-color: rgb(221, 237, 251);">&lt;servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/&gt;</font></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: blue; font-family: 'Courier New';" lang="EN"><br><span class="code1"><span style="color: blue; letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.jsp' servlet-name='com.caucho.jsp.JspServlet'/&gt;</span></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: 'Courier New';" lang="EN"><br></span><span class="code1"><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN"><font style="background-color: rgb(221, 237, 251);">&lt;!--</font></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN"><br><span class="code1"><span style="color: rgb(0, 102, 0); letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/&gt;</span></span><br><span class="code1"><span style="color: rgb(0, 102, 0); letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/&gt; </span></span><br><span class="code1"><span style="color: rgb(0, 102, 0); letter-spacing: 0pt;">--&gt; </span></span></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">绿色部分删掉也可以，保留原来的是为了和原配置相对照</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">安装服务：</font></span></b><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span></b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">Dos</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">窗口中执行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\resin\bin\httpd -install </span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">后，弹出一个小窗口提示服务添加成功</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">此时查看控制面板</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">-&gt;</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">管理工具</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">-&gt;</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">服务，应该已经有</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“Resin Web Server”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">服务了，找到并手工启动它，只此一次，以后就不用手工启动了</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">删除</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">Resin Web Server</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">服务方法：运行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\resin\bin\httpd -remove</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">运行：</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">net start w3svc</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">重启电脑</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">在当前站点名称上右键打开属性面板</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">按下图顺序设置</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: red;"><font face="Arial Unicode MS">第</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">7</span><span style="font-size: 9pt; color: red;"><font face="Arial Unicode MS">步应选择</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\scripts</span><span style="font-size: 9pt; color: red;"><font face="Arial Unicode MS">目录下的</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">isapi_srun.dll</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">然后启动当前站点，</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">再查看</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">isapi</span><span style="font-size: 9pt; color: 