﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-飞入绝境</title><link>http://www.blogjava.net/flylijian/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 15:34:17 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 15:34:17 GMT</pubDate><ttl>60</ttl><item><title>大连农家乐休闲参考手册 (www.dlnjl.com)</title><link>http://www.blogjava.net/flylijian/archive/2009/08/17/291487.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Mon, 17 Aug 2009 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2009/08/17/291487.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/291487.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2009/08/17/291487.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/291487.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/291487.html</trackback:ping><description><![CDATA[这几天在网上闲逛，发现一个提供大连周边地区农家院、自驾游休闲娱乐咨询的网站，感觉不错特地给宣传一下<br />
&nbsp;<a href="http://www.dlnjl.com">http://www.dlnjl.com</a> , 希望对爱好户外活动的朋友有帮助。
<img src ="http://www.blogjava.net/flylijian/aggbug/291487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2009-08-17 14:37 <a href="http://www.blogjava.net/flylijian/archive/2009/08/17/291487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>opencms 介绍及在weblogic8下的部署(原创)</title><link>http://www.blogjava.net/flylijian/archive/2007/02/10/99169.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Sat, 10 Feb 2007 11:37:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2007/02/10/99169.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/99169.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2007/02/10/99169.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/99169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/99169.html</trackback:ping><description><![CDATA[
		<h4 class="TextColor1" id="subjcns!E49FA8B5FB269F31!270" style="MARGIN-BOTTOM: 0px">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#008080">原文引用<strong><font face="Times New Roman"></font></strong>：<br /></font>
								<a href="http://flylijian.spaces.live.com/">
										<font color="#366900">http://flylijian.spaces.live.com/</font>
								</a>
								<br />
						</font>
				</span>
		</h4>
		<h4 class="TextColor1" style="MARGIN-BOTTOM: 0px">opencms 介绍及在weblogic8下的部署</h4>
		<div id="msgcns!E49FA8B5FB269F31!270">
				<div>     今天周末在家无事上网闲逛时，发现很多人都在使用opencms；由于opencms缺省支持的是tomcat,对于在商业的中间件weblogic、websphere下部署却很少资料可查，所以写了这篇文章；</div>
				<div>一。OpenCms是一个专业级别的开源网站内容管理系统，其中文网站为<a href="http://www.opencms.cn/"><font color="#047400">http://www.opencms.cn/</font></a></div>
				<div>     目前可以使用的最新稳定版为6.2.3版。其特点如下：</div>
				<div>     </div>
				<ul>
						<li>直接从WEB站点的前台编辑内容 
</li>
						<li>自动在线/离线工作流 
</li>
						<li>灵活的内容资源 
</li>
						<li>集成全文搜索引擎 
</li>
						<li>所见即所得编辑非结构化内容 
</li>
						<li>结构化内容采用易于定义的基于XML的内容项目 
</li>
						<li>在一个应用中管理多个站点 
</li>
						<li>全文搜索支持PDF、Word、Excel文档资源 
</li>
						<li>为所有的存储资源均可进行配置 
</li>
						<li>基于时间的自动内容发布和过期 
</li>
						<li>完全支持统一编码内容 
</li>
						<li>ACL（Access Control List 访问控制表）权限控制系统 
</li>
						<li>可选的HTML静态导出 
</li>
						<li>基于JSP的模版机制 
</li>
						<li>模块具有版本控制 </li>
				</ul>
				<p>  详细请浏览其官方网址<a href="http://www.opencms.org/"><font color="#047400">http://www.opencms.org</font></a></p>
				<p>二。 weblogic8下的部署前的准备工作 
</p>
				<p>1。目前稳定版本为6.2.3，但对应开发者和学习使用的可以下到它的最新开发版本7.0版； 
</p>
				<p>2。使用eclipse自带的cvs插件下载其最新版本 
</p>
				<p>     1)cvsroot为<font face="Courier New">:pserver:anon@cvs.opencms.org:/usr/local/cvs</font></p>
				<p>
						<font face="Courier New">   2）密码为anon,取分支cvs checkout -r DEV_7_0 opencms可以得到最新源代码.</font>
				</p>
				<p>
						<font face="Courier New">3. 安装weblogic8，我使用的是platform812_zh_CN_win32.exe版本。</font>
				</p>
				<p>
						<font face="Courier New">4. 缺省安装完weblogic8后，运行它的配置向导,新建一个basic weblogic server domain，域名改名为opencms,其它全部采用默认设置完成。</font>
				</p>
				<p>
						<font face="Courier New">5.weblogic域创建成功后，缺省在bea安装目录下会生成user_projects\domains\opencms</font>
				</p>
				<p>
						<font face="Courier New">三。两种部署opencms方式</font>
				</p>
				<p>
						<font face="Courier New">a)取下来的opencms源码中提供了ant方式，可以直接生成war包进行部署，即采用war方式进行部署；这是最简单和最方便的部署方式</font>
						<font face="Courier New">，但对于开发者来说这应该算是属于产品发布阶段的部署，因此调试起来会很不方便；</font>
				</p>
				<p>
						<font face="Courier New">b)另一种方式是直接把源代码目录部署到weblogic下，这样可以很方便的进行调试；由于通过weblogic的控制台只能进行</font>
				</p>
				<p>
						<font face="Courier New">   war和ear的部署，所以我们只能直接修改它的配置文件进行部署。</font>
				</p>
				<p>
						<font face="Courier New">我们采用第二种方式进行部署</font>
				</p>
				<p>
						<font face="Courier New">1。首先在eclipse编译取下来的源码，由于取下来的源码还需要第三方的jar文件，如ant.jar；找到相应的jar文件引</font>
				</p>
				<p>
						<font face="Courier New">   入进来，另外在它的模块文件中还引用了其它的文件，如果确定用不上可以先全部删除掉以便可以正确编译成功；</font>
				</p>
				<p>
						<font face="Courier New">2.编译时最好使用jdk1.4的版本，或直接使用bea自带的jdk进行编译，一会儿我会说明原因；</font>
				</p>
				<p>
						<font face="Courier New">3.编辑user_projects\domains\opencms\config.xml,添加如下内容</font>
				</p>
				<p>
						<font face="Courier New">      &lt;Application Deployed="true" Name="opencms"<br />        Path="D:\eclipse3.2.1\eclipse\workspace\opencms\webapp\.\."<br />        StagedTargets="myserver" TwoPhase="false"&gt;<br />        &lt;WebAppComponent DeploymentOrder="1001" Name="opencms"<br />            Targets="myserver" URI="."/&gt;<br />    &lt;/Application&gt;<br />    &lt;ApplicationManager Name="opencms"/&gt;</font>
				</p>
				<p>
						<font face="Courier New">其中Path="xxxx"中的内容为你的opencms实际安装目录</font>
				</p>
				<p>
						<font face="Courier New">4.修改weblogic启动文件user_projects\domains\opencms\startWebLogic.cmd</font>
				</p>
				<p>
						<font face="Courier New">  引如如下jar文件:</font>
				</p>
				<p>echo CLASSPATH=%CLASSPATH%<br />set OPEN_CMS=D:\eclipse3.2.1\eclipse\workspace\opencms<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-logging-1.1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\activation.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\alkacon-diff-0.9.2.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\alkacon-simapi-0.9.4.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\ant-contrib-1.0b1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\ant-opencms-1.1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-beanutils-1.7.0.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-codec-1.3.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-collections-3.1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-dbcp-1.2.1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-digester-1.7.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-email-1.0-mod.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-fileupload-1.0.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-httpclient-3.0.1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-pool-1.2.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\dom4j-1.6.1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\htmlparser-1.5-20050925.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jakarta-oro-2.0.8.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jaxen-1.1-beta-4.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jstl-1.1.2.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jtidy-r8-05102004.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jug-1.1.2.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\junit-3-8-1.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\log4j-1.2.9.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-analyzers-2.0.0.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-core-2.0.0.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-highlighter-2.0.0.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-snowball-2.0.0.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\mail.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\mysql-connector-java-3.1.12-bin.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\PDFBox-0.7.2.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\pg74.216.jdbc3.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\poi-2.5.1-final-20040804.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\quartz-1.4.5.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\servlet.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\standard-1.1.2.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\atm-extractors-0.4.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\xercesImpl.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\xml-apis.jar<br /></p>
				<p>5.到目前应该可以运行了，在运行中可能会出现各种各样的问题（依据取下来的版本），按下列方法进行处理 
</p>
				<p>6.点击<font face="Courier New">user_projects\domains\opencms\startWebLogic.cmd启动服务；观察控制台和user_projects\domains\opencms\myserver下的日志文件，查看错误提示；</font></p>
				<p>
						<font face="Courier New">下面是我运行中碰到的错误进行的相应的调整</font>
				</p>
				<p>
						<font face="Courier New">1)控制台报The WebLogic Server did not start up properly.<br />java.io.InvalidClassException: javax.management.MBeanAttributeInfo; local class incompatible: stream classdesc serialVersionUID = 7043855487133450673, local class serialVersionUID = 8644704819898565848<br /></font>
						<font face="Courier New">
								<strong>错误原因及解决办法</strong>:MBeanAttributeInfo的serialVersionUID的版本控制id不一样，说明是使用这个被使用的bean被修改过了，很显然是版本不对；修改startWebLogic.cmd文件，设置set JAVA_HOME=D:\bea\jdk141_05,使其指向weblogic自带的jdk；重启startWebLogic.cmd问题消失。</font>
				</p>
				<p>
						<font face="Courier New">2)错误报Deployment descriptor "web.xml" is malform<br />ed. Check against the DTD: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find</font>
				</p>
				<p>
						<font face="Courier New">
								<strong>错误原因及解决办法</strong>:解析web.xml出现问题,修改OPEN_CMS\webapp\WEB-INF\web.xml文件；在该文件的</font>
						<font face="Courier New">最上面添加如下内容:</font>
				</p>
				<p>
						<font face="Courier New">&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<br /> "<a href="http://java.sun.com/dtd/web-app_2_3.dtd"><font color="#047400">http://java.sun.com/dtd/web-app_2_3.dtd</font></a>"&gt;</font>
				</p>
				<p>
						<font face="Courier New">重新启动错误消失。</font>
				</p>
				<p>
						<font face="Courier New">3)错误为Deployment descriptor "/WEB-INF/<br />web.xml" is malformed. Check against the DTD: The content of element type "t<br />ag" must match "(name,tag-class,tei-class?,body-content?,display-name?,small-ico<br />n?,large-icon?,description?,variable*,attribute*,example?)". (line 40, column 11<br />).&gt;</font>
				</p>
				<p>
						<font face="Courier New">
								<strong>错误原因及解决办法</strong>:由于weblogic8在解析xml文件时，对xml文件的内容格式要求特别严格；必须按照xml格式的要求</font>
				</p>
				<p>
						<font face="Courier New">及排列顺序，所以必须重新组织其内容，一定严格要注意顺序，如 &lt;servlet&gt;就不能放在&lt;servlet-mapping&gt;后面。</font>
				</p>
				<p>
						<font face="Courier New">4)错误java.lang.SecurityException: Prohibited package name: java.lang</font>
				</p>
				<p>
						<font face="Courier New">
								<strong>错误原因及解决办法</strong>:访问包可视的方法或变量错误；这个错误恨少见，一直没有想明白其中缘由；后来只能采用直接引用jar文件的法子解决该问题；</font>
				</p>
				<p>
						<font face="Courier New">i)利用opencms自带的build.xml文件，运行ant jar命令；生成opencms.jar和webdav.jar两个文件</font>
				</p>
				<p>
						<font face="Courier New">ii)在startWebLogic.cmd添加如下内容，引进上面的2个jar文件</font>
				</p>
				<p>set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\opencms.jar<br />set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\webdav.jar 
</p>
				<p>大家有兴趣的可以参考《透视JAVA——反编译、修补和逆向工程技术》这本书的$4.2章的内容，如果找到更好的解决方法也请来信告知，谢谢~_~ 
</p>
				<p>
						<font face="Courier New">5)其它注意事项，在eclipse下最好采用和运行weblogic一样的jdk版本进行编译，否则会出现文件访问版本不一致的bug</font>
				</p>
				<p>
						<font face="Courier New">7.启动startWebLogic.cmd，在浏览器中输入<a href="http://127.0.0.1:7001/opencms/setup/"><font color="#047400">http://127.0.0.1:7001/opencms/setup/</font></a></font>
				</p>
				<p>
						<font face="Courier New">  如果在出现下面的画面，则恭喜你，成功了！</font>
				</p>
				<p>
						<img style="VISIBILITY: visible; WIDTH: 600px; HEIGHT: 393px" alt="" src="http://tkfiles.storage.msn.com/x1pIjpkUX-8gH9CVDY6cXrKhbnWDrLrgmy1mY9gulTxU3nYffFRxGkEFO0sn7cUjxV77LjePBucZs4chtyqQCLKW1Sikx-7QuoCSVFBSJp8wkE" />
				</p>
				<p>
						<font face="Courier New">
						</font>
				</p>
		</div>
<img src ="http://www.blogjava.net/flylijian/aggbug/99169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2007-02-10 19:37 <a href="http://www.blogjava.net/flylijian/archive/2007/02/10/99169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>k-means聚类算法的java实现描述！</title><link>http://www.blogjava.net/flylijian/archive/2006/11/27/83730.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Mon, 27 Nov 2006 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2006/11/27/83730.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/83730.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2006/11/27/83730.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/83730.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/83730.html</trackback:ping><description><![CDATA[
		<div id="msgcns!E49FA8B5FB269F31!256">
				<p>
						<strong>
								<font color="#008080">
										<span lang="EN-US" style="FONT-SIZE: 12pt">
												<font face="Times New Roman">原文引用<strong><font color="#008080"><font face="Times New Roman"></font></font></strong>：<br /><a href="http://flylijian.spaces.live.com/">http://flylijian.spaces.live.com/</a><br /><br />1.</font>
										</span>
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">什么是</span>
										<span lang="EN-US" style="FONT-SIZE: 12pt">
												<font face="Times New Roman">k-means</font>
										</span>
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">聚类算法<font face="Verdana">？</font></span>
								</font>
						</strong>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">
						</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt">
								<span>
										<font face="Times New Roman"> </font>
								</span>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">从网上找到了很多定义，这里选取比较典型的几个；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>  </span>K-Mean</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">分群法是一种分割式分群方法，其主要目标是要在大量高纬的资料点中找出</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span>
										<font face="Times New Roman">       </font>
								</span>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">具有代表性的资料点；这些资料点可以称为群中心，代表点；然后再根据这些</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span>
										<font face="Times New Roman">        </font>
								</span>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">群中心，进行后续的处理，这些处理可以包含</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>   </span>1</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）资料压缩：以少数的资料点来代表大量的资料，达到资料压缩的功能；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>   </span>2</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）资料分类：以少数代表点来代表特点类别的资料，可以降低资料量及计算量；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>  </span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span>
										<font face="Times New Roman">       </font>
								</span>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">分割式分群法的目的是希望盡量減小每個群聚中，每一點與群中心的距離平方差（<span lang="EN-US">square error</span>）。  </span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> 假設我們現在有一組包含<span lang="EN-US">c</span>個群聚的資料，其中第<span lang="EN-US"> k </span>個群聚可以用集合<span lang="EN-US"> G<sub>k</sub></span>來表示，假設<span lang="EN-US"> G<sub>k</sub></span>包含<span lang="EN-US">n<sub>k</sub></span>筆</span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> 資料<span lang="EN-US"> {x<sub>1</sub>, x<sub>2</sub>, …, x<sub>nk</sub></span>），此群聚中心為<span lang="EN-US">y<sub>k</sub></span>，則該群聚的平方差<span lang="EN-US"> e<sub>k</sub></span>可以定義為：</span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">             </span>
						<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">e<sub>k</sub> = </span>
						<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Symbol">S</span>
						<sub>
								<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">i</span>
						</sub>
						<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> |x<sub>i</sub>-y<sub>k</sub>|<sup>2</sup></span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">，其中<span lang="EN-US"> x<sub>i</sub></span>是屬於第<span lang="EN-US"> k </span>群的資料點。<span lang="EN-US"></span></span>
				</p>
				<p align="left">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> 而這<span lang="EN-US">c</span>個群聚的總和平方差<span lang="EN-US">E</span>便是每個群聚的平方差總和：<span lang="EN-US"></span></span>
				</p>
				<p align="center">
						<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">E = </span>
						<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Symbol">S</span>
						<sub>
								<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">k=1~c</span>
						</sub>
						<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> e<sub>k</sub></span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> 我們分群的方法，就變成是一個最佳化的問題，換句話說，我們要如何選取<span lang="EN-US"> c </span>個群聚以及相關的群中心，</span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"> 使得<span lang="EN-US"> E </span>的值為最小。<span lang="EN-US"></span></span>
				</p>
				<p> </p>
				<p>
						<font color="#008080">
								<strong>
										<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">2</span>
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">．处理流程<span lang="EN-US"></span></span>
								</strong>
						</font>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">1</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">  </font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">从</span>
						<span style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span lang="EN-US">c</span>
								</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">个数据对象任意选择</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman"> k </font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">个对象作为初始聚类中心；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<br />
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">2</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">  </font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">循环（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">3</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）到（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">4</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）直到每个聚类不再发生变化为止；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<br />
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">3</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">  </font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">根据每个聚类对象的均值（中心对象），计算每个对象与这些中心对象的距离；并根据最小距离重新对相应对象进行划分；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<br />
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">4</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">）</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">  </font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">重新计算每个（有变化）聚类的均值（中心对象）</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p> </p>
				<p> </p>
				<p>
						<strong>
								<font color="#008080">
										<span lang="EN-US" style="FONT-SIZE: 12pt">
												<font face="Times New Roman">3. java</font>
										</span>
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">算法的实现说明</span>
								</font>
						</strong>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<font face="Times New Roman">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span> <strong></strong></span>
										<strong>1)</strong>
								</span>
								<span lang="EN-US">
										<font size="3">
										</font>
								</span>
						</font>
						<font size="3">
								<span style="FONT-FAMILY: 宋体">假设给点一组</span>
								<span lang="EN-US">
										<font face="Times New Roman">c</font>
								</span>
								<span style="FONT-FAMILY: 宋体">点资料</span>
								<span lang="EN-US">
										<font face="Times New Roman">X = {x<sub>1</sub>, ..., x<sub>c</sub>}</font>
								</span>
								<span style="FONT-FAMILY: 宋体">，每一点都有</span>
								<span lang="EN-US">
										<font face="Times New Roman">d</font>
								</span>
								<span style="FONT-FAMILY: 宋体">维；给定一个群聚的数目</span>
								<span lang="EN-US">
										<font face="Times New Roman">k,</font>
								</span>
								<span style="FONT-FAMILY: 宋体">求其</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">     </font>
										</span>
								</span>
								<span style="FONT-FAMILY: 宋体">最好的聚类结果。</span>
						</font>
				</p>
				<p>
						<font size="3">
								<strong>
										<span lang="EN-US">
												<font face="Times New Roman">
														<span>  </span>2</font>
										</span>
										<span style="FONT-FAMILY: 宋体">）</span>
								</strong>
								<span lang="EN-US">
										<font face="Times New Roman">BasicKMeans.java</font>
								</span>
								<span style="FONT-FAMILY: 宋体">主类</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">        int coordCount = 250;//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">原始的资料个树</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span>        </span>int dimensions = 100;//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">每个资料的纬度数目</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font size="3">
										<font face="Times New Roman">
												<span>        </span>double[][] coordinates = new double[coordCount][dimensions];</font>
								</font>
						</span>
				</p>
				<p>
						<font size="3">
								<span style="FONT-FAMILY: 宋体">  这里假设</span>
								<span lang="EN-US">
										<font face="Times New Roman">c</font>
								</span>
								<span style="FONT-FAMILY: 宋体">点资料为</span>
								<span lang="EN-US">
										<font face="Times New Roman">coordinates</font>
								</span>
								<span style="FONT-FAMILY: 宋体">对象，其中</span>
								<span lang="EN-US">
										<font face="Times New Roman">c</font>
								</span>
								<span style="FONT-FAMILY: 宋体">为</span>
								<span lang="EN-US">
										<font face="Times New Roman">coordCount,d</font>
								</span>
								<span style="FONT-FAMILY: 宋体">为</span>
								<span lang="EN-US">
										<font face="Times New Roman">dimensions</font>
								</span>
								<span style="FONT-FAMILY: 宋体">相应值。</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">        int mk = 30; //</font>
								</span>
								<span style="FONT-FAMILY: 宋体">想要群聚的数目</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span style="FONT-FAMILY: 宋体">   根据群聚数目定义</span>
								<span lang="EN-US">
										<font face="Times New Roman">mk</font>
								</span>
								<span style="FONT-FAMILY: 宋体">个群聚类对象</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">      mProtoClusters = new ProtoCluster[mK];//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">见</span>
								<span lang="EN-US">
										<font face="Times New Roman">ProtoCluster</font>
								</span>
								<span style="FONT-FAMILY: 宋体">类说明</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">   //</font>
								</span>
								<span style="FONT-FAMILY: 宋体">首先随机选取</span>
								<span lang="EN-US">
										<font face="Times New Roman">mk</font>
								</span>
								<span style="FONT-FAMILY: 宋体">个原始资料点作为群聚类</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">     mProtoClusters[i]= new ProtoCluster (coordinates[j] );//i</font>
								</span>
								<span style="FONT-FAMILY: 宋体">依此为</span>
								<span lang="EN-US">
										<font face="Times New Roman">0</font>
								</span>
								<span style="FONT-FAMILY: 宋体">到</span>
								<span lang="EN-US">
										<font face="Times New Roman">mk</font>
								</span>
								<span style="FONT-FAMILY: 宋体">的值；</span>
						</font>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">j</font>
								</span>
								<span style="FONT-FAMILY: 宋体">为</span>
								<span lang="EN-US">
										<font face="Times New Roman">0</font>
								</span>
								<span style="FONT-FAMILY: 宋体">到</span>
								<span lang="EN-US">
										<font face="Times New Roman">coordCount</font>
								</span>
								<span style="FONT-FAMILY: 宋体">的值</span>
						</font>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">
								<font size="3">  定义一个变量用于记录和跟踪每个资料点属于哪个群聚类</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman" size="3">    mClusterAssignments = new int[coordCount];</font>
						</span>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">    mClusterAssignments[j]=i;//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">表示第</span>
								<span lang="EN-US">
										<font face="Times New Roman">j</font>
								</span>
								<span style="FONT-FAMILY: 宋体">个资料点对象属于第</span>
								<span lang="EN-US">
										<font face="Times New Roman">i</font>
								</span>
								<span style="FONT-FAMILY: 宋体">个群聚类</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">   //</font>
								</span>
								<span style="FONT-FAMILY: 宋体">开始循环</span>
						</font>
				</p>
				<ul>
						<li>
								<font size="3">
										<span lang="EN-US">
												<font face="Times New Roman">  <font color="#ff0000"> //</font></font>
										</span>
										<span style="FONT-FAMILY: 宋体">
												<font color="#ff0000">依次调用计算每个群聚类的均值</font>
										</span>
								</font>
						</li>
				</ul>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">   mProtoClusters[i].updateCenter(mCoordinates);//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">计算第</span>
								<span lang="EN-US">
										<font face="Times New Roman">i</font>
								</span>
								<span style="FONT-FAMILY: 宋体">个聚类对象的均值</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman" size="3">
								</font>
						</span> </p>
				<ul>
						<li>
								<font size="3">
										<span lang="EN-US">
												<font face="Times New Roman">   <font color="#ff0000">//</font></font>
										</span>
										<span style="FONT-FAMILY: 宋体">
												<font color="#ff0000">依次计算每个资料点到中心点的距离，然后根据最小值划分到相应的群集类中；</font>
										</span>
								</font>
						</li>
				</ul>
				<p>
						<font color="#ff0000" size="3">
								<span style="FONT-FAMILY: 宋体">  采用距离平方差来表示资料点到中心点的距离；</span>
						</font>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">   //定义一个变量，来表示资料点到中心点的距离</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">   mDistanceCache = new double[<font face="Times New Roman" size="3">coordCount </font>][<font face="Times New Roman" size="3">mk</font>];</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">    //其中mDistanceCache[i][j]表示第i个资料点到第j个群聚对象中心点的距离；</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">    //距离算法描述():</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">     <font face="Times New Roman" size="3">a</font><font face="宋体" size="2">)</font>依次取出每个资料点对象double[] coord = <font face="Times New Roman" size="3">coordinates[i];</font></span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">
								<font face="Times New Roman" size="3">        b<font face="宋体" size="2">)再依次取出每个群聚类中的中心点对象double[] center = <font face="Times New Roman" size="3">mProtoClusters[j].mCenter;</font></font></font>
						</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">
								<font face="Times New Roman" size="3">        c)计算<font face="宋体" size="2">coord对象与center对象之间的距离 </font></font>
						</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">
								<font face="Times New Roman" size="3">
										<font face="宋体" size="2">     double distance(double[] coord, double[] center) {<br />        int len = coord.length;<br />        double sumSquared = 0.0;<br />        for (int i=0; i&lt;len; i++) {<br />            double v = coord[i] - center[i];<br />            sumSquared += v*v; //平方差<br />        }<br />        return Math.sqrt(sumSquared);<br />      } </font>
								</font>
						</span>
				</p>
				<p>
						<span style="FONT-FAMILY: 宋体">
								<font size="2">     d)循环执行上面的流程，把结果记录在mDistanceCache[i][j]中；</font>
						</span>
				</p>
				<ul>
						<li>
								<span lang="EN-US">
										<font face="Times New Roman" size="3">      //<font color="#ff0000">比较出最小距离，然后<font face="Times New Roman" size="3"></font><font face="宋体">根据最小距离重新对相应对象进行划分</font></font></font>
								</span>
						</li>
				</ul>
				<p>
						<span lang="EN-US">
								<font face="宋体" color="#ff0000" size="3">     依次比较每个资料点的 最短中心距离， <br /> <font color="#000000">     int nearestCluster(int ndx) {<br />        int nearest = -1;<br />        double min = Double.MAX_VALUE;   <br />        for (int c = 0; c &lt; mK; c++) {<br />                double d = mDistanceCache[ndx][c];<br />                if (d &lt; min) {<br />                    min = d;<br />                    nearest = c;<br />                }           <br />           }<br />        return nearest;<br />       }<br />  该方法返回该资料点对应的最短中心距离的群聚类的索引值；<br />  比较每个 nearestCluster[coordCount] 的值和mClusterAssignments[coordCount]<br />  的值是否相等，如果全相等表示所有的点已经是最佳距离了，直接返回；<br />  否则需要重新调整资料点和群聚类的关系，调整完毕后再重新开始循环；</font></font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="宋体" size="3">  调整时需要更新下列数据：</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="宋体" size="3">    a)更新<span lang="EN-US"><font face="Times New Roman">mProtoClusters[i</font></span></font>]中的<font face="Times New Roman" size="3">mCurrentMembership集合；</font></span>
				</p>
				<p>
						<span lang="EN-US">
								<span lang="EN-US">
										<font face="Times New Roman" size="3">       </font>b)更新<font face="宋体" size="3">mClusterAssignments[i]中对应的值；</font></span>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<span lang="EN-US">
										<font face="宋体" size="3">   然后重行开始循环</font>
								</span>
						</span>
				</p>
				<p>
						<font size="3">
								<strong>
										<span lang="EN-US">
												<font face="Times New Roman">
														<span>   </span>3</font>
										</span>
										<span style="FONT-FAMILY: 宋体">）</span>
								</strong>
								<span lang="EN-US">
										<font face="Times New Roman">ProtoCluster.java</font>
								</span>
								<span style="FONT-FAMILY: 宋体">是一个包含代表点的群聚类，该类有两个最主要的属性"代表点"和"群中心"；</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span>       </span>
												<span>  </span>int[] mCurrentMembership;//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">用于表示每个群聚包含的数据资料点集合</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>        </span>double[] mCenter;//</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">用于表示每个聚类对象的均值，也就是中心对象</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>       </span>
										<span>  </span>void updateCenter(double[][] coordinates) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>       </span>//</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">该方法计算</span>
						<font size="3">
								<span style="FONT-FAMILY: 宋体">聚类对象的均值</span>
								<span lang="EN-US">
										<font face="Times New Roman">;</font>
								</span>
						</font>
				</p>
				<p>
						<font size="3">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span>        </span>//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">根据</span>
								<span lang="EN-US">
										<font face="Times New Roman">mCurrentMembership</font>
								</span>
								<span style="FONT-FAMILY: 宋体">取得原始资料点对象</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">coord</font>
								</span>
								<span style="FONT-FAMILY: 宋体">，该<font size="3"></font>对象是</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">coordinates</font>
								</span>
						</font>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">的一个子集；然后取出该子集的均值；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">    取均值的算法很简单，可以把</span>
						<font color="#ff0000">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">coordinates</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">想象成一个</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">m*n</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">的距阵</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">,</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">每个均值就是每个纵向列的取和平均值</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">,</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">该值保</span>
						</font>
				</p>
				<p>
						<font color="#ff0000">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">    存在</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">mCenter</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">中</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>      </span>
										<span> </span>for (int i=0; i&lt; mCurrentMembership.length; i++) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>               </span>double[] coord = coordinates[mCurrentMembership[i]];</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>               </span>for (int j=0; j&lt;coord.length; j++) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>                        </span>mCenter[j] += coord[j];//</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">得到每个纵向列的和；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>              </span>
										<span> </span>} </font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>               f</span>
								</font>
						</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">or (int i=0; i&lt;mCenter.length; i++) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>                   </span>
										<span> </span>mCenter[i] /= mCurrentSize; //</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">对每个纵向列取平均值</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>       </span>
										<span>        </span>}</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">
										<span>           </span>}<span>  </span></font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span>
										<font face="Times New Roman">      参考文档</font>：<a href="http://www.javaworld.com/javaworld/jw-11-2006/jw-1121-thread.html"><font color="#047400">http://www.javaworld.com/javaworld/jw-11-2006/jw-1121-thread.html</font></a></span>
						</span>
				</p>
				<p> </p>
		</div>
<img src ="http://www.blogjava.net/flylijian/aggbug/83730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2006-11-27 10:46 <a href="http://www.blogjava.net/flylijian/archive/2006/11/27/83730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu6.06 下安装usb adsl详细步骤</title><link>http://www.blogjava.net/flylijian/archive/2006/10/22/76617.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Sun, 22 Oct 2006 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2006/10/22/76617.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/76617.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2006/10/22/76617.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/76617.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/76617.html</trackback:ping><description><![CDATA[花了我一个星期的时间，终于成功在ubuntu6.06下驱动usb adsl的猫成功上网，<br /><div style="text-align: left;">不敢独乐，特把安装步骤写下来，供还没上网成功的朋友参考！<br />一。系统ubuntu6.06, 版本2.6.15-23; usb adsl( 0572:cb00 Conexant)<br /> 使用uname -r 命令可以查到你的当前版本；使用lsusb可以查看你的usb情况<br />二。下载好全部的软件；<br />对于双系统的人，可以先在windows下下载全部所需要的软件然后转到ubuntu<br />     系统下再进行安装，原因很简单因为ubuntu下还不能上网，这个过程是很需要<br />     耐心的，我至少在windwos和ubuntu系统下切换不下20次；<br />三. 安装步骤<br />    1.由于ubuntu6.06缺省没有安装usb adsl驱动，所以必须重新配置；所以<br />       我索性下载了最新的linux内核文件(最新版本是2.6.18)进行编译;<br />       到http://www.kernel.org/ 下载linux-2.6.18.tar.bz2文件<br />    2.准备编译新的内核<br />        在编译内核时，需要先下载libncurses包，到google上可以下载到；<br />       1)解压缩 tar xjvf linux-2.6.18.tar.bz2 到/opt/linux-2.6.18/目录下<br />       2)在/opt/linux-2.6.18下运行下列命令<br />           a)make oldconfig (先产生缺省配置文件)<br />           然后一直按回车键即可<br />           b)make menuconfig(重新配置驱动模块)<br />           这里必须对usb相关模块进行选中，网上已经有好多人写过了；<br />           我的部分配置如下：<br />Code maturity level options ---&gt;<br />[*] Prompt for development and/or incomplete code/drivers<br />Bus options ---&gt;<br />PCI access mode(Any)<br />[*] PCI Express support<br />[M] PCI Express Hotplug driver<br />[*] Use polling mechanism for hot-plug events<br />[*] Legacy /proc/pci interface<br />PCI Hotplug Support ---&gt;<br />[M] Support for PCI Hotplug<br />[*] Use polling mechanism for hot-plug events<br />Networking optings ---&gt;<br />[*] Packet socket<br />[*] Unix domain sockets<br />[*] TCP/IP sockets<br />[*] IP:multicasting<br />[M] Asynchronous Transfer Mode (ATM)<br />[M] classical IP over ATM<br />[M] LAN Emulation support<br />[M] Multi-protocol over ATM support<br />[M] RFC1483/2684 Bridged protocols<br /><br />Device Drivers ---&gt;<br />Generic Driver Options ---&gt;<br />全选<br />Plug and Play support ---&gt;<br />[*] Plug and Play BIOS support<br />[*] Plug and Play BIOS /proc interface<br /><br />Network device support ---&gt;<br />ATM drivers ---&gt;<br />[M] ATM over TCP<br />[M] PPP support<br />[M] PPP over Ethernet<br />[M] PPP over ATM<br />[*] PPP multilink support<br />USB support ---&gt;<br />[*] Support for Host-side USB<br />[*] USB device filesystem<br />USB DSL modem support ---&gt;<br />[M] USB DSL modem support<br />[M] Speedtouch USB support<br />[M] Conexant AccessRunner USB support<br />[M] Other USB DSL modem support   <br /><br />c)然后退出保存配置文件<br />d)依次运行<br />    make<br />    make modules_install<br />    make install<br />3)如果运行成功，应该在/boot/下面可以看到vmlinuz-2.6.18<br />文件，然后还需要生成initrd.img-2.6.18 文件<br />  运行  mkinitramfs -o /boot/initrd.img-2.6.18 /lib/modules/2.6.18<br />4）修改/boot/grub/menu.lst<br />      把新的内核文件配置进去。<br />5）到这里内核已经编译成功了，重启系统后，运行uname -r， 如果显示2.6.18表示成功；<br />注意重启时，可能屏幕上没有任何东西（除非配置了splash）；可以不管它；<br /><br />3. 安装firmware<br />   1)http://sourceforge.net/cvs/?group_id=47406<br />    下面要用一个叫做cxacru-fw程序文件从 CnxEtU.sys 取出信息生成linux上面用的firmware文件            cxacru-fw.bin
<br />      因为在写这个文档的时候cxacru-fw只能通过cvs得到<br />     我没有cvs，所以我直接在在它的cvs web页面把几个文件的内容粘贴下来了；<br />      2) 直接运行make命令,生成 cxacru-fw<br />      在cxacru-fw目录下编译生成cxacru-fw，然后
<br />    # ./cxacru-fw CnxEtU.sys cxacru-fw.bin
<br />      拷贝cxacru-fw.bin到lib/firmware下
<br />   #cp cxacru-fw.bin /lib/firmware<br />     3)关于CnxEtU.sys文件网上说可以从windwos下copy该文件过来使用；可我使用了 windows下的文件<br />       怎么也无法编译成cxacru-fw.bin，后来从网上下载了一个CnxEtU.sys才好使；<br />      如果你和我的情况类似，可以从这里下载到该文件<br />     http://www.atlantis-land.com/firmware/1863_DriverWinMultiV099.085WAN.zip<br />        把1863_DriverWinMultiV099.085WAN.zip解开后，取出里面的CnxEtU.sys文件<br />      然后使用上面的命令生成cxacru-fw.bin文件,copy到/lib/firmware下；<br /><br />4. 配置自动启动脚本<br />        1）新建一个文本文件secrets,输入如下内容<br />    "username@isp" "*" "password"<br />           这里是输入你的帐号(username@isp)和密码(password)<br />   2)sudo install -m 600 secrets /etc/ppp/chap-secrets<br />     sudo install -m 600 secrets /etc/ppp/pap-secrets <br />   3)ppp over atm设置 <br />            新建一个文件  speedtch,内容如下<br />            noipdefault<br />                defaultroute<br />            #username@isp 为你的帐号名称<br />                user 'username@isp'<br />                noauth<br />                updetach<br />                usepeerdns<br />                plugin pppoatm.so<br />                #输入vpi和vci，我的是8.35<br />                 VPI.VCI <br />   4）sudo install -m 600 speedtch /etc/ppp/peers<br />         5)新建一个dail文件,内如如下<br /> #!/bin/bash<br />modprobe ppp_generic<br />modprobe pppoatm<br />count=0<br />while [[ $((count++)) -lt 40 ]]<br />do<br />  sync=$(dmesg | grep 'ADSL line: up')<br />  if [ ! -z "$sync" ]<br />  then<br />    pppd call speedtch<br />    exit 0<br />  fi<br />  sleep 1<br />done<br />echo "The SpeedTouch firmware did not load"<br /><br />运行下面命令<br />sudo install -m 744 dial /etc/init.d<br />sudo ln -s /etc/init.d/dial /etc/rc2.d/S95dial<br />sudo ln -sf /etc/ppp/resolv.conf /etc/resolv.conf<br /><br />5.最后重启机器，应该可以看到usb adsl的link灯会亮；<br />  启动后，此时用ifconfig -a命令会显示nas0和ppp0的相关信息。<br /> (注意在登录时由于系统会进行usb初始化及网络连接，登录会花较长时间，请耐心等候)<br />6.直接打开浏览器应该可以上网了；           </div><img src ="http://www.blogjava.net/flylijian/aggbug/76617.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2006-10-22 13:15 <a href="http://www.blogjava.net/flylijian/archive/2006/10/22/76617.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu6.06 nvidia(GeForce4 MX 440)下如何设置1440*900的分辨率</title><link>http://www.blogjava.net/flylijian/archive/2006/10/22/76615.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Sun, 22 Oct 2006 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2006/10/22/76615.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/76615.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2006/10/22/76615.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/76615.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/76615.html</trackback:ping><description><![CDATA[
		<span id="BlogViewId">1。<span>sudo gedit /etc/X11/xorg.xonf</span><br />2.  找到Section "Monitor"增加如下项目：<br />    Section "Monitor"<br />    Identifier     "L9VB4"<br />    Option         "DPMS"<br /><span style="color: rgb(0, 128, 128);">    HorizSync 28-72</span><br style="color: rgb(0, 128, 128);" /><span style="color: rgb(0, 128, 128);">    VertRefresh 43-60</span><br style="color: rgb(0, 128, 128);" /><span style="color: rgb(0, 128, 128);">    Modeline "1440x900" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync</span><br style="color: rgb(0, 128, 128);" /><span style="color: rgb(0, 128, 128);">    Option "IgnoreEDID" "1"</span><br />EndSection<br />3。找到Section "Device",增加如下项目<br />      Section "Device"<br />    Identifier     "NVIDIA Corporation NV18 [GeForce4 MX 440 AGP 8x]"<br />    Driver         "nvidia"<br /><span style="color: rgb(0, 128, 128);">     BusID "PCI:1:0:0"</span><br style="color: rgb(0, 128, 128);" /><span style="color: rgb(0, 128, 128);">    Option "NoLogo" "true"</span><br />EndSection<br />4.  重启系统即可。<br />     </span>
<img src ="http://www.blogjava.net/flylijian/aggbug/76615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2006-10-22 13:09 <a href="http://www.blogjava.net/flylijian/archive/2006/10/22/76615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Work Flow 学习笔记(二)</title><link>http://www.blogjava.net/flylijian/archive/2006/05/25/48012.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Thu, 25 May 2006 05:24:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2006/05/25/48012.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/48012.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2006/05/25/48012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/48012.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/48012.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: .				    												WfExecutionObject																																				WfExecutionObject 																是一个抽象类																		,																它定义了一些的共有的属性和方法...&nbsp;&nbsp;<a href='http://www.blogjava.net/flylijian/archive/2006/05/25/48012.html'>阅读全文</a><img src ="http://www.blogjava.net/flylijian/aggbug/48012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2006-05-25 13:24 <a href="http://www.blogjava.net/flylijian/archive/2006/05/25/48012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 如何部署web项目源码详解 </title><link>http://www.blogjava.net/flylijian/archive/2006/05/25/47957.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Thu, 25 May 2006 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2006/05/25/47957.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/47957.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2006/05/25/47957.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/47957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/47957.html</trackback:ping><description><![CDATA[
		<div>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman" color="#000000">                             Tomcat5.5.16 部署web项目源码详解</font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<font face="Times New Roman">
										<span lang="EN-US">Tomcat.5.5.16</span>
								</font>
								<span style="FONT-FAMILY: 宋体">安装</span>
								<span lang="EN-US">
										<font face="Times New Roman">web</font>
								</span>
								<span style="FONT-FAMILY: 宋体">项目时执行的代码主要是</span>
								<span lang="EN-US">
										<font face="Times New Roman">HostConfig</font>
								</span>
								<span style="FONT-FAMILY: 宋体">类，其中</span>
								<span lang="EN-US">
										<font face="Times New Roman">deployApps() </font>
								</span>
								<span style="FONT-FAMILY: 宋体">执行部署</span>
								<span lang="EN-US">
										<font face="Times New Roman">web</font>
								</span>
								<span style="FONT-FAMILY: 宋体">应用的功能；</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">protected void deployApps() {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
								</font>
						</span> </p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>File appBase = appBase();</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>File configBase = configBase();</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>// Deploy XML descriptors from configBase</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>     </span>
										<span>   </span>deployDescriptors(configBase, configBase.list());</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>// Deploy WARs, and loop if additional descriptors are found</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>deployWARs(appBase, appBase.list());</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>// Deploy expanded folders</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>        </span>deployDirectories(appBase, appBase.list());</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>  </span>
										<span>      </span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">
										<span>    </span>}<span>  </span></font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">从上面这段代码，我们可以知道</span>
								<span lang="EN-US">
										<font face="Times New Roman">tomcat</font>
								</span>
								<span style="FONT-FAMILY: 宋体">在部署</span>
								<span lang="EN-US">
										<font face="Times New Roman">web</font>
								</span>
								<span style="FONT-FAMILY: 宋体">项目是按如下顺序依次部署的；</span>
						</font>
				</p>
				<p>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<span>
												<font face="Times New Roman">1．<span style="FONT: 7pt 'Times New Roman'"><font size="3">    </font></span></font>
										</span>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">首先部署</span>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">$CATALINA_HOME/conf/Catalina/localhost</font>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">目录下面的</span>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">.xml</font>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">文件；</span>
								<span lang="EN-US" style="COLOR: red">
								</span>
						</b>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: teal">
								<font face="Times New Roman">deployDescriptors(configBase, configBase.list());</font>
						</span>
				</p>
				<p>
						<font face="Times New Roman">
								<b>
										<span lang="EN-US">
												<span>
														<font color="#000000">（1）<span style="FONT: 7pt 'Times New Roman'"><font size="3">      </font></span></font>
												</span>
										</span>
								</b>
								<b>
										<span lang="EN-US">
												<font color="#000000">configBase</font>
										</span>
								</b>
						</font>
						<font color="#000000">
								<b>
										<span style="FONT-FAMILY: 宋体">的值是通过调用</span>
								</b>
								<b>
										<span lang="EN-US">
												<font face="Times New Roman">configBase()</font>
										</span>
								</b>
								<b>
										<span style="FONT-FAMILY: 宋体">获取的，</span>
								</b>
								<b>
										<span lang="EN-US">
										</span>
								</b>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<span>
												<font color="#000000">   </font>
										</span>
										<span style="COLOR: green">
												<span>  </span>File file = new File(System.getProperty("catalina.base"), "conf");</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>    </span>
										<span>    </span>Container parent = host.getParent();</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>        </span>if ((parent != null) &amp;&amp; (parent instanceof Engine)) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>            </span>file = new File(file, parent.getName());</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>        </span>}</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">file = new File(file, host.getName());</font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">可以看出</span>
								<span lang="EN-US">
										<font face="Times New Roman">configBase</font>
								</span>
								<span style="FONT-FAMILY: 宋体">是由四部分内容组成</span>
								<span lang="EN-US">
										<font face="Times New Roman">; </font>
								</span>
						</font>
				</p>
				<p>
						<font face="Times New Roman">
								<span lang="EN-US" style="COLOR: red">System.getProperty("catalina.base")</span>
								<span lang="EN-US" style="COLOR: green">+ </span>
								<span lang="EN-US" style="COLOR: red">“conf” </span>
								<span lang="EN-US" style="COLOR: green">+ </span>
								<span lang="EN-US" style="COLOR: red">parent.getName()+host.getName()</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">parent.getName()</font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">和</span>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">host.getName()</font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">是分别取</span>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">server.xml</font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">中</span>
						<span lang="EN-US" style="COLOR: black">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">&lt;Engine name="Catalina" defaultHost="localhost"&gt;</font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">和</span>
						<span lang="EN-US" style="COLOR: black">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">&lt;Host name="localhost" appBase="webapps"<span>  </span>… </font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">对应的</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">name</font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">属性值；</span>
						<span lang="EN-US" style="COLOR: black">
						</span>
				</p>
				<p>
						<span style="COLOR: black; FONT-FAMILY: 宋体">由此可以得出</span>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">configBase</font>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">的值为</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">$CATALINA_HOME/conf/Catalina/localhost </font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">
								</font>
						</span> </p>
				<p>
						<font face="Times New Roman">
								<span lang="EN-US" style="COLOR: red">
										<span>        </span>
								</span>
								<span lang="EN-US">
										<font color="#000000">(2) </font>
								</span>
						</font>
						<font color="#000000">
								<b>
										<span style="FONT-FAMILY: 宋体">按文件名顺序依次读取</span>
								</b>
								<b>
										<span lang="EN-US">
												<font face="Times New Roman">configBase</font>
										</span>
								</b>
								<b>
										<span style="FONT-FAMILY: 宋体">目录下面的</span>
								</b>
								<b>
										<span lang="EN-US">
												<font face="Times New Roman">xml</font>
										</span>
								</b>
								<b>
										<span style="FONT-FAMILY: 宋体">文件部署</span>
								</b>
								<b>
										<span lang="EN-US">
												<font face="Times New Roman">web</font>
										</span>
								</b>
								<b>
										<span style="FONT-FAMILY: 宋体">应用；</span>
								</b>
								<b>
										<span lang="EN-US">
										</span>
								</b>
						</font>
				</p>
				<p>
						<font color="#000000">
								<b>
										<span lang="EN-US">
												<font face="Times New Roman">
														<span>        </span>
														<span>   </span>
												</font>
										</span>
								</b>
								<span style="FONT-FAMILY: 宋体">第一步，首先获取文件名（不包含</span>
								<span lang="EN-US">
										<font face="Times New Roman">.xml</font>
								</span>
								<span style="FONT-FAMILY: 宋体">）作为上下文路径</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<span>
												<font color="#000000">              </font>
										</span>
										<span style="COLOR: green">
												<span>  </span>String nameTmp = files[i].substring(0, files[i].length() - 4);</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                </span>String contextPath = "/" + nameTmp.replace('#', '/');</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>      </span>
										<span>     </span>
								</font>
						</span>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">第二步，解析</span>
								<span lang="EN-US">
										<font face="Times New Roman">xml</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件，分析</span>
								<span lang="EN-US">
										<font face="Times New Roman">docBase</font>
								</span>
								<span style="FONT-FAMILY: 宋体">的值；</span>
						</font>
				</p>
				<p>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">    </span>
						</font>
						<span style="COLOR: red; FONT-FAMILY: 宋体">注意这里的</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">docBase</font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">的判断很重要，采用和以前版本完全不同的做法；</span>
						<span lang="EN-US">
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#000000">
												<span> </span>
												<span>                                 </span>
										</font>
										<span style="COLOR: green">
												<span> </span>if (!docBase.isAbsolute()) {</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                    </span>
										<span>    </span>docBase = new File(appBase(), context.getDocBase());</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>               </span>
										<span>     </span>
										<span> </span>}</font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">                  </font>
										</span>
								</span>
								<span style="FONT-FAMILY: 宋体">首先判断</span>
								<span lang="EN-US">
										<font face="Times New Roman">docBase</font>
								</span>
								<span style="FONT-FAMILY: 宋体">是否为绝对路径，如果不是绝对路径，在改为</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#000000">
												<span>     </span>
												<span>                 </span>
										</font>
										<span style="COLOR: red">$CATALINA_HOME/webapps+docBase</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">
										<span>   </span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman">
												<span>                </span>
												<span>     </span>// If external docBase, register .xml as redeploy first</font>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#000000">
												<span>               </span>
												<span>    </span>
										</font>
										<span style="COLOR: green">
												<span> </span>if(!docBase.getCanonicalPath().startsWith(appBase().getAbsolutePath())) </span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman">{</font>
								</font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<font face="Times New Roman">//</font>
								</span>
								<span style="FONT-FAMILY: 宋体">这个判断很重要，这里是判断如果</span>
								<span lang="EN-US">
										<font face="Times New Roman">docBase</font>
								</span>
								<span style="FONT-FAMILY: 宋体">路径是以</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">$ CATALINA_HOME/webapps+docBase</font>
						</span>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">开头的字符串，则忽略掉了</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#000000">
												<span>                    </span>
												<span>     </span>
										</font>
										<span style="COLOR: green">
												<span> </span>isExternal = true;</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                   </span>
										<span>       ...</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                    </span>
										<span>   </span>if (docBase.getAbsolutePath().toLowerCase().endsWith(".war")) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>            </span>
										<span>            </span>
										<span>    </span>isWar = true;</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                    </span>
										<span>   </span>}</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman">
												<span>                </span>
												<span>   </span>} <font color="#008000">else{</font></font>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#008000">
												<span>       </span>// Ignore specified docBase</font>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#008000">
												<span>     </span>context.setDocBase(null);</font>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#008000">}</font>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<font color="#008000">
												<span>           </span>
												<span style="COLOR: red">
												</span>
										</font>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<span>
										<font face="Times New Roman">          </font>
								</span>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">从上面可以看出，</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">&lt;Context path="/xxxx" docBase="xxxx" .</font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">中</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">docBase </font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">只有为绝对路径并且该路径不是以</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">$CATALINA_HOME/webapps</font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">开头，才会生效；否则就忽略掉了；</span>
						<span lang="EN-US" style="COLOR: red">
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">
								</font>
						</span> </p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">
								</font>
						</span> </p>
				<p>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<span>
												<font face="Times New Roman">2．<span style="FONT: 7pt 'Times New Roman'"><font size="3">    </font></span></font>
										</span>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">接下来部署</span>
						</b>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">$CATALINA_HOME/webapps/</font>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">目录下以。</span>
						</b>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">War</font>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">结尾的文件</span>
						</b>
						<b>
								<span lang="EN-US" style="COLOR: red">
								</span>
						</b>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">deployWARs(appBase, appBase.list());</font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<font face="Times New Roman">(1)</font>
								</span>
								<span style="FONT-FAMILY: 宋体">首先仍是把文件名</span>
								<span lang="EN-US">
										<font face="Times New Roman">(</font>
								</span>
								<span style="FONT-FAMILY: 宋体">不用</span>
								<span lang="EN-US">
										<font face="Times New Roman">.war)</font>
								</span>
								<span style="FONT-FAMILY: 宋体">作为其应用的上下文路径</span>
								<span lang="EN-US">
										<font face="Times New Roman">;</font>
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<span>
												<font color="#000000">  </font>
										</span>
										<span style="COLOR: green">
												<span> </span>
												<span> </span>if (files[i].toLowerCase().endsWith(".war")) {</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                </span>// Calculate the context path and make sure it is unique</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                </span>String contextPath = "/" + files[i];</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                </span>int period = contextPath.lastIndexOf(".");</font>
						</span>
				</p>
				<p>
						<font face="Times New Roman">
								<span lang="EN-US" style="COLOR: green">
										<span>        </span>
								</span>
								<span lang="EN-US">
										<font color="#000000">(2) </font>
								</span>
						</font>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">接下来判断以该上下文路径</span>
								<span lang="EN-US">
										<font face="Times New Roman">contextPath</font>
								</span>
								<span style="FONT-FAMILY: 宋体">是否已经装载过了，如果是则直接退出；</span>
						</font>
						<span lang="EN-US">
								<font face="Times New Roman">
										<span>
												<font color="#000000">   </font>
										</span>
										<span style="COLOR: green">
												<span> </span>if (deploymentExists(contextPath))</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>            </span>
										<span>         </span>return;</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<span>
										<font face="Times New Roman">       </font>
								</span>
						</span>
						<font color="#000000">
								<b>
										<span style="FONT-FAMILY: 宋体">（</span>
								</b>
								<b>
										<span lang="EN-US">
												<font face="Times New Roman">3</font>
										</span>
								</b>
								<b>
										<span style="FONT-FAMILY: 宋体">）</span>
								</b>
								<span style="FONT-FAMILY: 宋体">继续判断以该上下文命名的部署文件是否存在，如</span>
								<span lang="EN-US">
										<font face="Times New Roman">war</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件为</span>
								<span lang="EN-US">
										<font face="Times New Roman">AAA.war,</font>
								</span>
								<span style="FONT-FAMILY: 宋体">则判断在</span>
								<span lang="EN-US">
										<font face="Times New Roman">$CATALINA_HOME/conf/Catalina/localhost/AAA.xml</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件是否存在，如果不存在继续执行以下操作；</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman">
										<span>
												<font color="#000000">          </font>
										</span>
										<span style="COLOR: green">
												<span> </span>
												<span> </span>File xml = new File</span>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>            </span>(configBase, file.substring(0, file.lastIndexOf(".")) + ".xml");</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>        </span>if (deployXML &amp;&amp; !xml.exists()) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>          </span>entry = jar.getJarEntry(Constants.ApplicationContextXml);</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>          </span>configBase.mkdirs();</font>
						</span>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">          </font>
										</span>
								</span>
								<span style="FONT-FAMILY: 宋体">。。。</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">      </font>
										</span>
								</span>
								<span style="FONT-FAMILY: 宋体">先从</span>
								<span lang="EN-US">
										<font face="Times New Roman">wart</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件中读取</span>
								<span lang="EN-US">
										<font face="Times New Roman">META-INF/context.xml</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件，然后把它</span>
								<span lang="EN-US">
										<font face="Times New Roman">copy</font>
								</span>
								<span style="FONT-FAMILY: 宋体">到</span>
								<span lang="EN-US">
										<font face="Times New Roman">
										</font>
								</span>
						</font>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span>      </span>$CATALINA_HOME/conf/Catalina/localhost/AAA.xml,</font>
								</span>
								<span style="FONT-FAMILY: 宋体">注意</span>
								<span lang="EN-US">
										<font face="Times New Roman">war</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件部署文件必须为</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">context.xml</font>
						</span>
						<span style="FONT-FAMILY: 宋体">
								<font color="#000000">，且在</font>
						</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">META-INF</font>
						</span>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">目录下；</span>
								<span lang="EN-US">
										<font face="Times New Roman">
												<span>   </span>
										</font>
								</span>
						</font>
				</p>
				<p>
						<font color="#000000">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman"> </font>
										</span>
								</span>
								<span style="FONT-FAMILY: 宋体">（</span>
								<span lang="EN-US">
										<font face="Times New Roman">4</font>
								</span>
								<span style="FONT-FAMILY: 宋体">）接下来操作和上面类似，部署该</span>
						</font>
						<font color="#000000">
								<span lang="EN-US">
										<font face="Times New Roman">web</font>
								</span>
								<span style="FONT-FAMILY: 宋体">应用；</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">3. </font>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">最后是以</span>
						</b>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">$CATALINA_HOME/webapps</font>
								</span>
						</b>
						<b>
								<span style="COLOR: red; FONT-FAMILY: 宋体">目录下的文件夹为目标按文件夹名顺序进行部署；</span>
						</b>
						<b>
								<span lang="EN-US" style="COLOR: red">
								</span>
						</b>
				</p>
				<p>
						<font face="Times New Roman">
								<b>
										<span lang="EN-US" style="COLOR: red">
												<span>  </span>
										</span>
								</b>
								<b>
										<span lang="EN-US" style="COLOR: green">
												<span> </span>
										</span>
								</b>
								<span lang="EN-US" style="COLOR: green">
										<span> </span>deployDirectories(appBase, appBase.list());</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: black">
								<span>
										<font face="Times New Roman">（1）<span style="FONT: 7pt 'Times New Roman'"><font size="3">       </font></span></font>
								</span>
						</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体">同样先把该文件夹名作为上下文路径进行部署；</span>
						<span lang="EN-US" style="COLOR: black">
						</span>
				</p>
				<p>
						<font face="Times New Roman">
								<span lang="EN-US" style="COLOR: black">
										<span>         </span>
								</span>
								<span lang="EN-US" style="COLOR: green">
										<span> </span>
										<span>  </span>File dir = new File(appBase, files[i]);</span>
						</font>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>            </span>if (dir.isDirectory()) {</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
								</font>
						</span> </p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                </span>// Calculate the context path and make sure it is unique</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: green">
								<font face="Times New Roman">
										<span>                </span>String contextPath = "/" + files[i];</font>
						</span>
				</p>
				<p>
						<span lang="EN-US" style="COLOR: black">
								<font face="Times New Roman">
										<span>              </span>
										<b>
										</b>
								</font>
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<span>
										<font face="Times New Roman">
												<font color="#000000">（2）<span style="FONT: 7pt 'Times New Roman'"><font size="3">       </font></span></font>
										</font>
								</span>
						</span>
						<font color="#000000">
								<span style="FONT-FAMILY: 宋体">接下来的步骤就基本上是一样了，首先判断该上下文路径是否已经部署过，如果是则直接退出，否则和上面一样，读取</span>
								<span lang="EN-US">
										<font face="Times New Roman">META-INF/context.xml</font>
								</span>
								<span style="FONT-FAMILY: 宋体">文件进行部署；</span>
								<span lang="EN-US">
								</span>
						</font>
				</p>
				<p>
						<span style="COLOR: red; FONT-FAMILY: 宋体">注意这里和上面的</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">war</font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">文件部署稍微有点不同，就是它不会</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">copy </font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">部署文件</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">context.xml</font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">文件到</span>
						<span lang="EN-US" style="COLOR: red">
								<font face="Times New Roman">$CATALINA_HOME/conf/Catalina/localhost</font>
						</span>
						<span style="COLOR: red; FONT-FAMILY: 宋体">中去；</span>
						<span lang="EN-US" style="COLOR: red">
						</span>
				</p>
				<p>
						<span lang="EN-US">
								<font face="Times New Roman" color="#000000">
								</font>
						</span> </p>
				<p>
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman">
												<span>
												</span>
										</font>
								</font>
						</span> </p>
				<p>
						<b>
								<span lang="EN-US" style="COLOR: red">
										<font face="Times New Roman">
										</font>
								</span>
						</b> </p>
		</div>
<img src ="http://www.blogjava.net/flylijian/aggbug/47957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2006-05-25 09:33 <a href="http://www.blogjava.net/flylijian/archive/2006/05/25/47957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Work Flow 学习笔记</title><link>http://www.blogjava.net/flylijian/archive/2006/05/25/47950.html</link><dc:creator>飞入绝境</dc:creator><author>飞入绝境</author><pubDate>Thu, 25 May 2006 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/flylijian/archive/2006/05/25/47950.html</guid><wfw:comment>http://www.blogjava.net/flylijian/comments/47950.html</wfw:comment><comments>http://www.blogjava.net/flylijian/archive/2006/05/25/47950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flylijian/comments/commentRss/47950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flylijian/services/trackbacks/47950.html</trackback:ping><description><![CDATA[
		<div>
				<font size="2"> </font>
		</div>
		<div>
				<h1>
						<font color="#000000">
								<font size="2">
										<span lang="EN-US">
												<font face="Times New Roman">
														<span>                </span>
														<span>     </span>Work Flow 
</font>
										</span>
										<span style="font-family: 宋体;">学习笔记</span>
								</font>
						</font>
				</h1>
				<h3>
						<font face="Times New Roman">
								<font size="2">
										<span lang="EN-US">
												<span>
														<font color="#000000">1.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">    
</span></font>
												</span>
										</span>
										<span lang="EN-US">
												<font color="#000000">WfRequester</font>
										</span>
								</font>
						</font>
				</h3>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<b>
												<span style="font-family: Arial;" lang="EN-US">WfRequester </span>
										</b>
										<span lang="EN-US">
												<font face="Times New Roman">is the interface that has a direct concern with the 
execution and results</font>
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">of a workflow process - it represents the request for some work to be 
done. Its</font>
								</font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">performer, a <i>WfProcess, </i>is expected to handle its request and 
communicate significant</font>
								</font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">status changes; in particular to inform the requester when it has 
completed performing</font>
								</font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">the requested work. A single requester can have many processes associated 
with it.</font>
								</font>
						</span>
				</p>
				<span lang="EN-US">
						<font color="#000000">
								<font face="Times New Roman" size="2">
										<div> </div>
										<div>   <img style="width: 468px; height: 167px;" src="http://tk.files.storage.msn.com/x1pmAkndzHuOfey0rxh3ckUxMenVPTLUBYl4QxZtOfLXf1u74cZImT8P1Y_Qaadn7G9F39il6WNn7844aXH0ei7c1ebdBDdKDLfUptsCxzOcHdje5hAK7rjumnZ_SVEkKH3693sMSNMZMU" /></div>
										<div> </div>
										<div> </div>
								</font>
						</font>
				</span>
				<p align="left">
						<span lang="EN-US">
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
						</span>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-family: 宋体;">说明：</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfRequester</font>
										</span>
										<span style="font-family: 宋体;">接口是一个和工作流流程的执行及结果有直接关系的接口；它代表了对一些工作执行的请求；它的一个主要功能是把</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">链接到一个其它应用；其中</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfRequester</font>
										</span>
										<span style="font-family: 宋体;">会关联到多个</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcee,</font>
										</span>
										<span style="font-family: 宋体;">当</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">发生</span>
										<span lang="EN-US">
												<font face="Times New Roman">complete</font>
										</span>
										<span style="font-family: 宋体;">、</span>
										<span lang="EN-US">
												<font face="Times New Roman">terminate</font>
										</span>
										<span style="font-family: 宋体;">、</span>
										<span lang="EN-US">
												<font face="Times New Roman">abort </font>
										</span>
										<span style="font-family: 宋体;">事件时会通过回调</span>
										<span lang="EN-US">
												<font face="Times New Roman">receiveEvent()</font>
										</span>
										<span style="font-family: 宋体;">方法来通知</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfRequest</font>
										</span>
										<span style="font-family: 宋体;">；在</span>
										<span lang="EN-US">
												<font face="Times New Roman">receiveEvent(event)</font>
										</span>
										<span style="font-family: 宋体;">方法中，参数</span>
										<span lang="EN-US">
												<font face="Times New Roman">event</font>
										</span>
										<span style="font-family: 宋体;">是一个</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfEventAudit</font>
										</span>
										<span style="font-family: 宋体;">对象，其中</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfEventAudit</font>
										</span>
										<span style="font-family: 宋体;">中有一个方法</span>
										<span lang="EN-US">
												<font face="Times New Roman">source(),</font>
										</span>
										<span style="font-family: 宋体;">通过这个方法我们可以得知是哪个</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfExecutionObject</font>
										</span>
										<span style="font-family: 宋体;">对象触发了事件源；得到了</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfExcutionObject</font>
										</span>
										<span style="font-family: 宋体;">即</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">我们也进而</span>
								</font>
						</font>
						<font color="#000000">
								<font size="2">
										<span style="font-family: 宋体;">得到了和这个</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">相关联的其它应用；</span>
										<span lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-family: 宋体;">主要步骤</span>
										<span lang="EN-US">
												<font face="Times New Roman">:</font>
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<font size="2">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">
														<font color="#000000">(1)<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">    </span></font>
												</font>
										</span>
								</span>
								<font color="#000000">
										<span style="font-family: 宋体;">自定义一个自己的类或接口，如</span>
										<span lang="EN-US">
												<font face="Times New Roman">GenericRequester,</font>
										</span>
										<span style="font-family: 宋体;">这个</span>
										<span lang="EN-US">
												<font face="Times New Roman">GenericRequester</font>
										</span>
										<span style="font-family: 宋体;">类代表用户自定义的一个请求者；</span>
										<span lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<font size="2">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">
														<font color="#000000">(2)<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">    </span></font>
												</font>
										</span>
								</span>
								<font color="#000000">
										<span style="font-family: 宋体;">在启动</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">是，把这个请求者和</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">进行绑定注册到</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfRequester</font>
										</span>
										<span style="font-family: 宋体;">中；</span>
										<span lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000" face="Times New Roman" size="2"> </font>
						</span>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-family: 宋体;">在</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfReuester</font>
										</span>
										<span style="font-family: 宋体;">的</span>
										<span lang="EN-US">
												<font face="Times New Roman">registerProcess()</font>
										</span>
										<span style="font-family: 宋体;">就是做这个功能，主要代码如下</span>
										<span lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">protected Map performers = null;</font>
								</font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">public void registerProcess(WfProcess process, Map context, 
GenericRequester requester){</font>
								</font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman">
												<font size="2">
														<span>              <font color="#ff0000"></font></span>
														<font color="#ff0000">performers.put(process, 
requester);</font>
												</font>
										</font>
								</font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000" face="Times New Roman" size="2"> </font>
						</span>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman" size="2">}</font>
								</font>
						</span>
				</p>
				<p align="left">
						<font size="2">
								<span lang="EN-US">
										<span>
												<font face="Times New Roman">
														<font color="#000000">(3)<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">    </span></font>
												</font>
										</span>
								</span>
								<font color="#000000">
										<span style="font-family: 宋体;">当工作流程在执行的过程中发生</span>
										<span lang="EN-US">
												<font face="Times New Roman">complete</font>
										</span>
										<span style="font-family: 宋体;">、</span>
										<span lang="EN-US">
												<font face="Times New Roman">terminate</font>
										</span>
										<span style="font-family: 宋体;">、</span>
										<span lang="EN-US">
												<font face="Times New Roman">abort </font>
										</span>
										<span style="font-family: 宋体;">事件时会回调</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfRequest</font>
										</span>
										<span style="font-family: 宋体;">中的</span>
										<span lang="EN-US">
												<font face="Times New Roman">receiveEvent()</font>
										</span>
										<span style="font-family: 宋体;">方法：</span>
										<span lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span lang="EN-US">
								<font color="#000000">
										<font face="Times New Roman">
												<font size="2">
														<span>    </span>
														<span> </span>
														<font color="#ff0000">requester.receiveEvent(audit);</font>
												</font>
										</font>
								</font>
						</span>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-family: Arial;" lang="EN-US">
												<span>
														<font face="Arial">(4)</font>
														<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">   </span>
												</span>
										</span>
										<span style="font-family: 宋体;">在</span>
										<span style="font-family: Arial;" lang="EN-US">receiveEvent()</span>
										<span style="font-family: 宋体;">中首先根据</span>
										<span style="font-family: Arial;" lang="EN-US">WfEventAudit</span>
										<span style="font-family: 宋体;">的</span>
										<span style="font-family: Arial;" lang="EN-US">source()</span>
										<span style="font-family: 宋体;">获取触发事件的</span>
										<span style="font-family: Arial;" lang="EN-US">WfProcess</span>
										<span style="font-family: 宋体;">对象；</span>
										<span style="font-family: Arial;" lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span style="font-family: Arial;" lang="EN-US">
								<font color="#000000" size="2">receiveEvent(WfEventAudit event){</font>
						</span>
				</p>
				<p align="left">
						<font size="2">
								<span style="font-family: Arial;" lang="EN-US">
										<font face="Arial">
												<font color="#000000">
														<span>        </span>//</font>
										</font>
								</span>
								<font color="#000000">
										<span style="font-family: 宋体;">获取事件源</span>
										<span style="font-family: Arial;" lang="EN-US">process</span>
										<span style="font-family: 宋体;">对象</span>
										<span style="font-family: Arial;" lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span style="font-family: Arial;" lang="EN-US">
								<font color="#ff0000" size="2">WfProcess<span><font face="Arial">  </font></span>process = (WfProcess) 
event.source();</font>
						</span>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-family: Arial;" lang="EN-US">//</span>
										<span style="font-family: 宋体;">根据</span>
										<span style="font-family: Arial;" lang="EN-US">prcocess</span>
										<span style="font-family: 宋体;">对象获取在注册时绑定的自定义请求者</span>
										<span lang="EN-US">
												<font face="Times New Roman">GenericRequester</font>
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span style="font-family: Arial;" lang="EN-US">
								<font color="#000000" size="2">GenericRequester <span><font face="Arial"> </font></span>req = 
(GenericRequester) performers.get(process);</font>
						</span>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-family: Arial;" lang="EN-US">//</span>
										<span style="font-family: 宋体;">执行自定义请求者的方法</span>
										<span style="font-family: Arial;" lang="EN-US">
										</span>
								</font>
						</font>
				</p>
				<p align="left">
						<span style="font-family: Arial;" lang="EN-US">
								<font color="#ff0000" size="2">req.receiveResult(process.result());</font>
						</span>
				</p>
				<p align="left">
						<span style="font-family: Arial;" lang="EN-US">
								<font color="#000000" size="2">}</font>
						</span>
				</p>
				<p align="left">
						<font color="#000000">
								<font size="2">
										<span style="font-size: 14pt; font-family: 宋体;">其它：在这里</span>
										<span lang="EN-US">
												<font face="Times New Roman">GenericRequester</font>
										</span>
										<span style="font-family: 宋体;">也可是一个</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">或</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfActivity</font>
										</span>
										<span style="font-family: 宋体;">对象，这样可以在</span>
										<span lang="EN-US">
												<font face="Times New Roman">WfProcess</font>
										</span>
										<span style="font-family: 宋体;">完成操作后又启动另一个子流程或某个活动；</span>
										<span style="font-size: 14pt; font-family: Arial;" lang="EN-US">
												<font face="Arial">
														<span>    
</span>
												</font>
										</span>
								</font>
						</font>
				</p>
				<p>
						<span lang="EN-US">
								<font color="#000000" face="Times New Roman" size="2"> </font>
						</span>
				</p>
		</div>
		<div>
				<font size="2"> </font>
		</div>
		<div>
				<font size="2"> </font>
		</div>
		<div>
				<font size="2"> </font>
		</div>
		<div>
				<font size="2"> </font>
		</div>
<img src ="http://www.blogjava.net/flylijian/aggbug/47950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flylijian/" target="_blank">飞入绝境</a> 2006-05-25 09:11 <a href="http://www.blogjava.net/flylijian/archive/2006/05/25/47950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>