﻿<?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-Free Monkey-文章分类-Open Source</title><link>http://www.blogjava.net/anymobile/category/5738.html</link><description>Make Anything Mobile!</description><language>zh-cn</language><lastBuildDate>Thu, 13 Mar 2008 03:33:07 GMT</lastBuildDate><pubDate>Thu, 13 Mar 2008 03:33:07 GMT</pubDate><ttl>60</ttl><item><title>Windows 2003下配置Apache虚拟主机</title><link>http://www.blogjava.net/anymobile/articles/122026.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 04 Jun 2007 17:55:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/122026.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/122026.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/122026.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/122026.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/122026.html</trackback:ping><description><![CDATA[<p>作者：徐建祥（<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#110;&#101;&#116;&#112;&#105;&#114;&#97;&#116;&#101;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">netpirate@gmail.com</a>）<br>时间：2007-6-4<br>网址：<a href="http://www.anymobile.org/">http://www.anymobile.org</a></p>
<p>这篇文章介绍了Apache虚拟主机的配置方法，可以看作上一篇文章（<span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><a href="http://www.blogjava.net/anymobile/articles/112982.html"><u><font color=#800080>Windows 2003<span lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang=EN-US>下配置</span></span>Apache<span lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang=EN-US>代理</span></span>Tomcat<span lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang=EN-US>集群</span></span></font></u></a></span>）的后续。</p>
<p>1、需求：只有一台固网IP的服务期，要求不同的域名可以使用不同的技术，ASP、PHP、J2EE等。当然，主要以J2EE的处理为主。</p>
<p>2、解决方法：一个Apache服务（A1）充当虚拟主机，第二个Apache服务（A2）解析PHP脚本，第三个Apache服务（A3）实现Tomcat集群的代理，另外，使用IIS解析ASP程序。<br><br>结构图如下：<br><img height=303 alt="" src="http://www.blogjava.net/images/blogjava_net/anymobile/ApacheProxy.jpg" width=492 border=0><br><br>3、软件安装：Apache 2.2程序一套（D:\Apache\Apache2.2）；Tomcat 5.5 安装程序拷贝2份；IIS使用Win2003自带的。</p>
<p>4、安装步骤：<br><br>4.1 安装Apache2.2<br><br>4.2 修改A1的配置文件，conf/httpd.conf，支持虚拟主机</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Include&nbsp;conf/extra/httpd-vhosts.conf<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>LoadModule&nbsp;proxy_module&nbsp;modules/mod_proxy.so<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>LoadModule&nbsp;proxy_http_module&nbsp;modules/mod_proxy_http.so</span></div>
<p><br>4.3 修改虚拟主机配置文件，conf/extra/httpd-vhosts.conf</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#&nbsp;Virtual&nbsp;hosts<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">VirtualHost&nbsp;</span><span style="COLOR: #ff0000">*:80</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPreserveHost&nbsp;On<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPass&nbsp;/&nbsp;http://127.0.0.1:81/asp/<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPassReverse&nbsp;/&nbsp;http://127.0.0.1:81/asp/<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;www.asp.com<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">VirtualHost</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">VirtualHost&nbsp;</span><span style="COLOR: #ff0000">*:80</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPass&nbsp;/&nbsp;http://www.php.com:82/<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPassReverse&nbsp;/&nbsp;http://www.php.com:82/<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;www.php.com<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">VirtualHost</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">VirtualHost&nbsp;</span><span style="COLOR: #ff0000">*:80</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPass&nbsp;/&nbsp;http://www.j2ee.com:83/<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPassReverse&nbsp;/&nbsp;http://www.j2ee.com:83/<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;www.j2ee.com<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">VirtualHost</span><span style="COLOR: #0000ff">&gt;</span></div>
<p><br>4.4 修改A2的配置文件，conf/httpd2.conf，支持PHP<br>&nbsp;监听82端口，配置略。<br><br>4.5 修改A3的配置文件，conf/httpd3.conf，支持代理Tomcat负载均衡<br>&nbsp;监听83端口，配置略，参考上一篇文章。<br><br>4.6 修改两个Tomcat配置文件，支持集群<br>&nbsp;略，参考上一篇文章。<br><br>4.7 修改IIS，监听81端口。<br><br>4.8 开启所有的服务</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">cd&nbsp;D:\Apache\Apache2.2\bin<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>httpd.exe&nbsp;-w&nbsp;-n&nbsp;"Apache2"&nbsp;-k&nbsp;start<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>httpd.exe&nbsp;-w&nbsp;-n&nbsp;"Apache2"&nbsp;-f&nbsp;conf/httpd2.conf<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>httpd.exe&nbsp;-w&nbsp;-n&nbsp;"Apache2"&nbsp;-f&nbsp;conf/httpd3.conf<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>D:\Apache\Tomcat&nbsp;S1\bin\startup.bat<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>D:\Apache\Tomcat&nbsp;S2\bin\startup.dat</span></div>
<p><br>配置完毕，下面就可以访问不同的域名了。<br><br>注：在具体的实践中，请将域名置换为相关的商业域名，另外，需要使用到host name的地方（如tomcat集群），代理转向处理地址，一定要写域名；其他情况，可以用本地ip地址加端口号的方法进行配置。<br>（全文完）</p>
<br>资料：<br><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><a href="http://www.blogjava.net/anymobile/articles/112982.html"><u><font color=#800080>Windows 2003<span lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang=EN-US>下配置</span></span>Apache<span lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang=EN-US>代理</span></span>Tomcat<span lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang=EN-US>集群</span></span></font></u></a>&nbsp;<a href="http://www.blogjava.net/anymobile/articles/112982.html">http://www.blogjava.net/anymobile/articles/112982.html</a><br>
<p class=apache>Apache HTTP Server 2.2中文手册 <a href="http://docs.huihoo.com/apache/httpd/2.2-cn/platform/windows.html">http://docs.huihoo.com/apache/httpd/2.2-cn/platform/windows.html</a></span></p>
Apache HTTP Server 2.2 VirtualHost Examples <a href="http://httpd.apache.org/docs/2.2/vhosts/examples.html">http://httpd.apache.org/docs/2.2/vhosts/examples.html</a><br><a href="http://blog.iecn.net/blog/html/do-showone-tid-1013.html"><font color=#000000>Apache下用rewrite实现动态二级域名解析</font></a>&nbsp; <a href="http://www.360doc.com/showweb/0/0/263162.aspx">http://www.360doc.com/showweb/0/0/263162.aspx</a><br>Apache服务器二级域名的完美实现（转载） <a href="http://www.360doc.com/showWeb/0/0/307889.aspx">http://www.360doc.com/showWeb/0/0/307889.aspx</a>
<img src ="http://www.blogjava.net/anymobile/aggbug/122026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2007-06-05 01:55 <a href="http://www.blogjava.net/anymobile/articles/122026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows 2003下配置Apache代理Tomcat集群</title><link>http://www.blogjava.net/anymobile/articles/112982.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 23 Apr 2007 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/112982.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/112982.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/112982.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/112982.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/112982.html</trackback:ping><description><![CDATA[作者：徐建祥（<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#110;&#101;&#116;&#112;&#105;&#114;&#97;&#116;&#101;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">netpirate@gmail.com</a>）<br>时间：2007-4-19<br>网址：<a href="http://www.anymobile.org/">http://www.anymobile.org</a>
<p>索引&nbsp;</p>
<p>0、工作原理<br>1、软件准备<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.1 软件条目<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.2 安装JDK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.3 安装Tomcat<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.4 安装Apache<br>2、配置Tomcat集群<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.1 修改Tomcat默认应用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.2 添加ROOT应用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.3 修改server.xml<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.4 修改web.xml<br>3、配置Apache HTTP代理<br>4、优化Tomcat配置<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.1 屏蔽HTTP Connector<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.2 配置虚拟主机<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.3 配置GBK编码<br>5、测试程序&nbsp;</p>
<p>0、工作原理&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; Apache（HTTP Server）2.2新增了代理服务器（Proxying）功能：新的代理均衡模块（mod_proxy_balancer）提供负载均衡服务；AJP 1.3（Apache JServ Protocol）替代jk/jk2等连接器与Tomcat通信。<br>&nbsp;&nbsp;&nbsp; 结合Tomcat的集群（Cluster）功能，服务器结构如下：</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=537>
            <pre><span style="COLOR: #008000">    Load Balancer</span>(Apache 2.2 Proxy)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #008000">Cluster1</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cluster2<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp; \<br>&nbsp;<span style="COLOR: #008000">Tomcat1 Tomcat2</span>&nbsp;Tomcat3 Tomcat4</pre>
            </td>
        </tr>
    </tbody>
</table>
<p>注：绿色部分为本文采用的配置情况。<br><br>1、&nbsp;软件准备<br><br>1.1&nbsp;&nbsp;&nbsp; 软件条目<br></p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513>
            <p>操作系统&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WinXP/Win2003</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513>
            <p>JDK_5.0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://java.sun.com/javase/downloads/index_jdk5.jsp">http://java.sun.com/javase/downloads/index_jdk5.jsp</a> (MSI Installer)<br>Apache_2.2.4 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://httpd.apache.org/download.cgi">http://httpd.apache.org/download.cgi</a> (MSI Installer)<br>Tomcat_5.5.23 &nbsp;&nbsp;&nbsp;&nbsp; <a href="http://tomcat.apache.org/download-55.cgi">http://tomcat.apache.org/download-55.cgi</a> (Core Zip)</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>1.2&nbsp;&nbsp;&nbsp; 安装JDK<br>安装至目录 D:\Java\jdk1.5.0 下，设置JAVA_HOME/CLASSPATH/PATH，略。<br><br>1.3&nbsp;&nbsp;&nbsp; 安装Tomcat<br>解压缩Zip文件至目录 D:\Apache\Tomcat 5.5.23_S1 下；待配好后，复制到D:\Apache\Tomcat 5.5.23_S2，修改相关的端口和路径。<br><br>1.4&nbsp;&nbsp;&nbsp; 安装Apache<br>安装至目录 D:\Apache\Apache2.2 下，可在Tomcat集群配置完成后再安装。</p>
<p>2、&nbsp;配置Tomcat集群</p>
<p>2.1 修改Tomcat默认应用</p>
<p>删除$CATALINA_HOME/webapps和$CATALINA_HOME/temp目录；<br>将文件夹$CATALINA_HOME/conf/Catalina改名为Standalone。</p>
<p>2.2 添加ROOT应用</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513>
            <p>$CATALINA_HOME/conf/Standalone/localhost/ROOT.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513>
            <p>&lt;?xml version=&#8221;1.0&#8221; encoding=&#8221;utf-8&#8221;?&gt;<br>&lt;Context path=&#8221;&#8221; docBase=&#8221;E:\Project\wwwroot&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; displayName=&#8221;Tomcat 1&#8221; debug=&#8221;0&#8221; privileged=&#8221;true&#8221;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; antiResourceLocking=&#8221;false&#8221; antiJARLocking=&#8221;false&#8221;&gt;</p>
            <p>&nbsp;&lt;!—Default set of monitored resources --&gt;</p>
            <p>&nbsp;&lt;WatchedResource&gt;WEB-INF/web.xml&lt;/WatchedResource&gt;</p>
            <p>&lt;/Context&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p><br>2.3 修改server.xml</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513 colSpan=4>
            <p>$CATALINA_HOME/conf/server.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=228>
            <p align=center>操作步骤</p>
            </td>
            <td vAlign=top width=96>
            <p align=center>默认</p>
            </td>
            <td vAlign=top width=96>
            <p align=center>Tomcat 1</p>
            </td>
            <td vAlign=top width=93>
            <p align=center>Tomcat 2</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=228>
            <p>2.3.1 修改Server端口</p>
            </td>
            <td vAlign=top width=96>
            <p>8005</p>
            </td>
            <td vAlign=top width=96>
            <p>10005</p>
            </td>
            <td vAlign=top width=93>
            <p>20005</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=228>
            <p>2.3.2 修改AJP Connector端口</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp; Apache JServ Protocol 1.3</p>
            </td>
            <td vAlign=top width=96>
            <p>8009</p>
            </td>
            <td vAlign=top width=96>
            <p>10009</p>
            </td>
            <td vAlign=top width=93>
            <p>20009</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=228>
            <p>2.3.3 修改HTTPConnector端口</p>
            </td>
            <td vAlign=top width=96>
            <p>8080</p>
            </td>
            <td vAlign=top width=96>
            <p>10001</p>
            </td>
            <td vAlign=top width=93>
            <p>20001</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=228>
            <p>2.3.4 修改redirectPort端口</p>
            </td>
            <td vAlign=top width=96>
            <p>8443</p>
            </td>
            <td vAlign=top width=96>
            <p>10043</p>
            </td>
            <td vAlign=top width=93>
            <p>20043</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513 colSpan=4>
            <p>2.3.5 屏蔽Catalina，打开Standalone，并修改jvmRoute的值为Tomcat1/Tomcat2</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=228>
            <p>2.3.6打开Cluster，修改tcpListenPort</p>
            </td>
            <td vAlign=top width=96>
            <p>4001</p>
            </td>
            <td vAlign=top width=96>
            <p>10011</p>
            </td>
            <td vAlign=top width=93>
            <p>20011</p>
            </td>
        </tr>
    </tbody>
</table>
<p>2.4 修改web.xml&nbsp;</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513>
            <p>$CATALINA_HOME/conf/web.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513>
            <p>（添加）&lt;distributable/&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;或者</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513>
            <p>$CATALINA_HOME/conf/Standalone/*/ROOT.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513>
            <p>（设置）&lt;Context distributable="true" &#8230;/&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;设置集群，session共享。</p>
<p>3、&nbsp;配置Apache HTTP代理，实现负载均衡</p>
<p>有三种方法实现Tomcat的负载均衡：</p>
<p>a．&nbsp;使用JK本地连接器（Tomcat-Apache通信插件，JServ-&gt;JK-&gt;JK2-&gt;AJServP）；<br>b．&nbsp;使用2.x版本的Aache HTTP服务器的代理模块；<br>c．&nbsp;使用Tomcat的blancer web应用。</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=537>
            <p>$APACHE_HOME/conf/httpd.conf</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=537>
            <p># 添加下面这段代码<br>LoadModule proxy_module modules/mod_proxy.so<br>LoadModule proxy_ajp_module modules/mod_proxy_ajp.so<br>LoadModule proxy_balancer_module modules/mod_proxy_balancer.so<br>LoadModule proxy_http_module modules/mod_proxy_http.so<br><br>ProxyRequests Off<br><br>ProxyPass / balancer://myCluster/<br>&lt;Proxy balancer://myCluster/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BalancerMember ajp://localhost:10009 route=Tomcat1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BalancerMember ajp://localhost:20009 route=Tomcat2<br>&lt;/Proxy&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 至此，Apache和Tomcat已经安装、配置完毕，可以依次运行两个Tomcat（/bin/startup.bat）和Apache程序（Apache Monitor）。<br><br>注：<br>(1) 若系统设置了系统变量CATALINA_HOME，需修改/bin/startup.bat，屏蔽下面的代码：<br>#if not "%CATALINA_HOME%" == "" goto gotHome<br>(2) Apache只是一个代理服务器，所有的请求全部转至Tomcat处理，故启用ROOT应用。<br><br>4、&nbsp;优化Tomcat配置<br><br>4.1 屏蔽HTTP Connector</p>
<p>&nbsp;</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513>
            <p>&lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --&gt;<br>&lt;!--<br>&lt;Connector port="8080" &#8230;/&gt;<br>--&gt;</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513>
            <p>&lt;!-- Define a SSL HTTP/1.1 Connector on port 8443 --&gt;<br>&lt;!--<br>&lt;Connector port="8443" &#8230;/&gt;<br>--&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p><br>4.2 配置虚拟主机<br><br>4.2.1 编辑server.xml的Engine，添加Host信息</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=477>
            <p>$CATALINA_HOME/conf/server.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=477>
            <p>&lt;Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat1"&gt;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Host name="localhost" appBase="webapps" &#8230;&gt;&#8230; &#8230;&lt;/Host&gt;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Host name="www.site.com" appBase="webapps/www.site.com"/&gt;</p>
            <p>&nbsp;&nbsp;&nbsp; &lt;Host name="www.site.net" appBase="webapps/www.site.net"/&gt;</p>
            <p>&lt;/Engine&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>4.2.2 创建虚拟主机对应的Webapp目录</p>
<p>&nbsp;</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=477>
            <p>$CATALINA_HOME/webapps/www.site.com</p>
            <p>$CATALINA_HOME/webapps/www.site.net</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=477>
            <p>均为空目录</p>
            </td>
        </tr>
    </tbody>
</table>
<p>4.2.3 创建虚拟主机&nbsp;&nbsp;&nbsp; </p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=477>
            <p>$CATALINA_HOME/conf/Standalone/www.site.com/ROOT.xml</p>
            <p>$CATALINA_HOME/conf/Standalone/www.site.net/ROOT.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=477>
            <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;</p>
            <p>&lt;Context path="" docBase="E:\Project\{site name}" &#8230;&gt;</p>
            <p>&nbsp;&lt;WatchedResource&gt;WEB-INF/web.xml&lt;/WatchedResource&gt;</p>
            <p>&lt;/Context&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>另一个Tomcat Node也做类似的修改，并分别重启两个Tomcat。<br><br>4.3 配置GBK编码</p>
<p>&nbsp;</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=513>
            <p>$CATALINA_HOME/conf/server.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=513>
            <p>&nbsp;&nbsp;&nbsp; &lt;!-- Define an AJP 1.3 Connector on port 10009 --&gt;</p>
            <p>&nbsp;&nbsp;&nbsp; &lt;Connector port="10009" URIEncoding="GBK" </p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="10443" protocol="AJP/1.3" /&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p><br>5、测试程序&nbsp;</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=561>
            <p>init.jsp</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=561>
            <p>&lt;%</p>
            <p>session.setAttribute("name",request.getParameter("name"));</p>
            <p>out.println("success!" + session.getId());</p>
            <p>%&gt;</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=561>
            <p>testRoute.jsp</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=561>
            <p>&lt;%</p>
            <p>String test = session.getId() + " - " + session.getAttribute("name");</p>
            <p>System.out.println( new java.util.Date() + ":" + test);</p>
            <p>out.println( test );</p>
            <p>%&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>访问 <a href="http://localhost/init.jsp?name=HAHA">http://localhost/init.jsp?name=HAHA</a>（只须执行一次）<br>访问 <a href="http://localhost/testRoute.jsp">http://localhost/testRoute.jsp</a><br>访问多次就可以发现，两个Tomat服务器是均衡的，且session共享。<br>&nbsp;<img src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/o_Tomcat%20Cluster%201.JPG" border=0></p>
<p>另外，还可以设置路由JSESSIONID</p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=561>
            <p>$CATALINA_HOME/conf/server.xml</p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=561>
            <p>&lt;!-- sessionIdAttribute default attribute name is</p>
            <p>&nbsp;org.apache.catalina.cluster.session.JvmRouteOrignalSessionID.</p>
            <p>&nbsp;JSESSIONID.{orignal node id} &#224;</p>
            <p>&lt;Valve className="org.apache.catalina.cluster.session.JvmRouteBinderValve" </p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;enabled="true" sessionIdAttribute="takeoverSessionid"/&gt;</p>
            <p>&lt;ClusterListener className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" /&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;<img height=296 src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/o_Tomcat%20Cluster%202.JPG" width=703 border=0><br><br>参考资料<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache Proxy Module&nbsp;&nbsp;&nbsp; <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html">http://httpd.apache.org/docs/2.2/mod/mod_proxy.html</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache Balancer Module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html">http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tomcat 5.5 Load Balancer&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html">http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tomcat 5.5 Clustering/Session Replication&nbsp;&nbsp; <a href="http://tomcat.apache.org/.../cluster-howto.html">http://tomcat.apache.org/.../cluster-howto.html</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache Tomcat 5.5 Proxy&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html">http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html</a></p>
（全文完） <br>[补][推荐]Apache HTTP Server 与 Tomcat 的三种连接方式介绍(刘 冬@IBM) <a href="http://www-128.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html">http://www-128.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html</a> <img src ="http://www.blogjava.net/anymobile/aggbug/112982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2007-04-23 16:56 <a href="http://www.blogjava.net/anymobile/articles/112982.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts FAQ</title><link>http://www.blogjava.net/anymobile/articles/98791.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Thu, 08 Feb 2007 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/98791.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/98791.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/98791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/98791.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/98791.html</trackback:ping><description><![CDATA[
		<p>
		</p>
		<p>1/ 不支持嵌套标签<br />   如按钮的名称就不可以直接读取配置，另外标签的默认值是在struts类中写死了，如submit按</p>
		<p>钮的默认值就是"submit"<br />   &lt;html:input name="keywords" values="&lt;bean:message value="m_k"&gt;"/&gt;</p>
		<p>2/ radio按钮设置默认</p>
		<p>   2.1/ 在form构造函数中设置默认值<br />   2.2/ 在form的reset方法中设置默认值<br />   2.3/ 使用js脚本设置默认值<br />&lt;script&gt;<br /> document.all("sex")[0].checked=true;//第一个radio选中<br />&lt;/script&gt;</p>
		<p>3/ 配置资源文件</p>
		<p>   3.1/ web.xml(from 1.1)<br />   3.2/ struts-config.xml(from 1.2)</p>
		<p>   web.xml中的配置优先，解决多配置文件的方法：别名bundle(since 1.2)，建议使用3.2。</p>
		<p>   a. web.xml<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">web-app</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">servlet</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">servlet-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">action</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">servlet-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">servlet-class</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">org.apache.struts.action.ActionServlet</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">servlet-class</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">init-param</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">param-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<font color="#0000ff">application</font>
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">param-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">param-value</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<font color="#0000ff">org.anymobile.test.struts.ApplicationResources</font>
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">param-value</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">init-param</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">init-param</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">param-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">config</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">param-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">param-value</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">/WEB-INF/struts-config.xml</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">param-value</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">init-param</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       <img src="http://www.blogjava.net/images/dot.gif" /> <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">servlet</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     <img src="http://www.blogjava.net/images/dot.gif" /> <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">web-app</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<p>   b. struts-config.xml，如果web.xml配置了资源文件，可以加个资源文件，内容为空</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">message-resources </span>
				<span style="COLOR: #ff0000">parameter</span>
				<span style="COLOR: #0000ff">="org.anymobile.test.struts.ApplicationResources2"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">message-resources </span>
				<span style="COLOR: #ff0000">key</span>
				<span style="COLOR: #0000ff">="bundle2"</span>
				<span style="COLOR: #ff0000"> parameter</span>
				<span style="COLOR: #0000ff">="org.anymobile.test.struts.ApplicationResources2"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
		</div>
		<p>   c. /org/anymobile/test/struts/ApplicationResources.properties<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">
						<font color="#0000ff">hello.message</font> = Hello are you?</span>
		</div>
		<p>   d. java 程序</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">ActionMessage err </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> ActionMessage( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<font color="#0000ff">bundle2.</font>hello.message</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> );</span>
		</div>
		<p>   e. jsp 程序</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">bean:message bundle</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<font color="#0000ff">bundle2</font>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">hello.message</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">html:errors bundle</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<font color="#0000ff">bundle2</font>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
		</div>
		<p>4/ 与 gnujaxp.jar 冲突<br />   Tomcat启动报错；Web页面可以显示；提交后，*.do会报错。<br />   使用JFreeChart开源软件时，只添加jcommon.jar，jfreechart.jar两个包。</p>
		<p>5/ checkbox<br />   private boolean syaken = true;(default true,false)<br />   &lt;html:checkbox property="syaken"/&gt;<br />   &lt;input type="hidden" name="syaken" value="false"&gt;</p>
		<p>   private String type;(default 0,1)<br />   &lt;html:checkbox property="syaken"  value="1"/&gt;</p>
<img src ="http://www.blogjava.net/anymobile/aggbug/98791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2007-02-08 15:53 <a href="http://www.blogjava.net/anymobile/articles/98791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate FAQ</title><link>http://www.blogjava.net/anymobile/articles/98790.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Thu, 08 Feb 2007 07:51:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/98790.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/98790.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/98790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/98790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/98790.html</trackback:ping><description><![CDATA[<p>1/ 数据库驱动</p>
<p>&nbsp;&nbsp; 1.1/ Oracle<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jdbc驱动需要注意版本，class111.jar；o_jdbc.jar。<br>&nbsp;&nbsp; 1.2/ MS SQL Server<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意版本和网络配置（tcp和管道的权限）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 官方驱动：2000，3个jar包；2005，一个jar包。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jrds驱动：评价普遍比官方的好，注意各个版本。<br>&nbsp;&nbsp; 1.3/ MySQL</p>
<p>2/ 数据库连接/session</p>
<p>&nbsp;&nbsp; 2.1/ hibernate.cfg.xml配置jdbc驱动<br>&nbsp;&nbsp; 2.2/ hibernate.cfg.xml配置datasource<br>&nbsp;&nbsp; 2.3/ 在获取session时加载Connection<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struts的datasource<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; web server的datasource<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbcp的datasource</p>
<p>3/ 事务Transaction 与 commit<br>&nbsp; <br>&nbsp;&nbsp; 一次事务只可以提交一次，多次提交会报错。<br>&nbsp;&nbsp; javax.servlet.ServletException: JDBC commit failed</p>
<p>4/ 一张表转换成了2个对象，修正为一个对象</p>
<p>&nbsp;&nbsp; 4.1 修改*.hbm.xml，去除composite-id标签，将主键对应的key-property改为id，其它key-property改为property；<br>&nbsp;&nbsp; 4.2 删除*.java和Abstract*.java，将*Id.java和Abstract*Id.java分别重构为*.java和Abstract*.java；<br>&nbsp;&nbsp; 4.3 修改*DAO.jar，将findById的参数修正为主键的类型，注意与*.hbm.xml匹配。<br><br>修改前：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">hibernate-mapping</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">class&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="com.inc.xschool.entity.PositionInfo"</span> <span style="COLOR: #ff0000">&nbsp;table</span> <span style="COLOR: #0000ff">="POSITION_INFO"</span> <span style="COLOR: #ff0000">&nbsp;schema</span> <span style="COLOR: #0000ff">="dbo"</span> <span style="COLOR: #ff0000">&nbsp;catalog</span> <span style="COLOR: #0000ff">="xschool"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">composite-id&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="id"</span> <span style="COLOR: #ff0000">&nbsp;class</span> <span style="COLOR: #0000ff">="com.inc.xschool.entity.PositionInfoId"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">key-property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="positionId"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="java.lang.Long"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">column&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="POSITION_ID"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">key-property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">key-property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="positionName"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="java.lang.String"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">column&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="POSITION_NAME"</span> <span style="COLOR: #ff0000">&nbsp;length</span> <span style="COLOR: #0000ff">="50"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">key-property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">key-property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="custId"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="java.lang.String"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">column&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="CUST_ID"</span> <span style="COLOR: #ff0000">&nbsp;length</span> <span style="COLOR: #0000ff">="50"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">key-property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">composite-id</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">class</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">hibernate-mapping</span> <span style="COLOR: #0000ff">&gt;</span> </div>
<br>修改后：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">hibernate-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">class&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="com.inc.xschool.entity.PositionInfo"</span><span style="COLOR: #ff0000">&nbsp;table</span><span style="COLOR: #0000ff">="POSITION_INFO"</span><span style="COLOR: #ff0000">&nbsp;schema</span><span style="COLOR: #0000ff">="dbo"</span><span style="COLOR: #ff0000">&nbsp;catalog</span><span style="COLOR: #0000ff">="xschool"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">id&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="positionId"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="java.lang.Long"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">column&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="POSITION_ID"</span><span style="COLOR: #ff0000">&nbsp;precision</span><span style="COLOR: #0000ff">="2"</span><span style="COLOR: #ff0000">&nbsp;scale</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">generator&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="assigned"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">generator</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">id</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="positionName"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="java.lang.String"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">column&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="POSITION_NAME"</span><span style="COLOR: #ff0000">&nbsp;length</span><span style="COLOR: #0000ff">="50"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="custId"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="java.lang.String"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">column&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="CUST_ID"</span><span style="COLOR: #ff0000">&nbsp;length</span><span style="COLOR: #0000ff">="50"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">hibernate-mapping</span><span style="COLOR: #0000ff">&gt;</span></div>
<p>5/ 递增字段（整型）<br>&nbsp;&nbsp; 5.1 Oracle&nbsp;&nbsp;&lt;generator class="sequence"&gt;SEQ_NAME&lt;/generator&gt;<br>&nbsp;&nbsp; 5.2 MySQL&nbsp;&nbsp;&lt;generator class="increment"/&gt;<br>&nbsp;&nbsp; 5.3 SQL SERVER&nbsp;&lt;generator class="identity"/&gt;</p>
<p>6/ MS SQL SERVER Exception</p>
<p>6.1 [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes<br>jdbc bug,text字段的值设为了空或''，改成' '即可，2005中也许修正此bug。</p>
<p>6.2 [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode. <br>在手工事务模式 (AutoCommit=false) 下，如果使用直接 (SelectMethod=direct) 模式，当您尝试对使用 JDBC 驱动程序的 SQL Server 数据库执行多个语句时，将会出现此问题。直接模式是该驱动程序的默认模式。 <br>url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=whm;SelectMethod=cursor</p>
<p>6.3 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.<br>&nbsp;&nbsp;&nbsp; com.microsoft.sqlserver.jdbc.SQLServerException: 到主机&nbsp; 的 TCP/IP 连接失败。 </p>
<p>客户端：10.170.10.2; WinXP SP2; SQL Server 2000(SP4)<br>服务端：10.170.10.3; Win2003 Server; SQL Server 2000(SP4)<br><br>1/ Microsoft SQL Server 2000 Driver for JDBC(Service Pack 1)<br>msbase.jar;mssqlserver.jar;msutil.jar</p>
<p>Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();<br>String url&nbsp; = "jdbc:microsoft:sqlserver://10.170.10.3:1433;DatabaseName=xschool";</p>
<p>java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.<br>&nbsp;at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.sqlserver.tds.TDSConnection.&lt;init&gt;(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)<br>&nbsp;at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)<br>&nbsp;at java.sql.DriverManager.getConnection(DriverManager.java:512)<br>&nbsp;at java.sql.DriverManager.getConnection(DriverManager.java:171)<br>&nbsp;at com.inc.xchool.test.TestJDBC.main(TestJDBC.java:31)</p>
<p>2/ Microsoft SQL Server 2005 JDBC Driver<br>sqljdbc.jar</p>
<p>Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();<br>String url&nbsp; = "jdbc:sqlserver://10.170.10.3:1433;DatabaseName=xschool";</p>
<p>com.microsoft.sqlserver.jdbc.SQLServerException: 到主机&nbsp; 的 TCP/IP 连接失败。 java.net.ConnectException: Connection timed out: connect<br>&nbsp;at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)<br>&nbsp;at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)<br>&nbsp;at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)<br>&nbsp;at java.sql.DriverManager.getConnection(DriverManager.java:512)<br>&nbsp;at java.sql.DriverManager.getConnection(DriverManager.java:171)<br>&nbsp;at com.inc.xchool.test.TestJDBC.main(TestJDBC.java:34)</p>
<p>3/ Win的数据源(ODBC)，系统DSN<br>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();<br>可以建立连接</p>
<p>解决方法：在10.3的防火墙设置中开通1433的TCP权限。<br><img alt="SQL SERVER TCP 1433" src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/o_tcp1433.jpg"><br><br>6.4 org.eclipse.core.internal.resources.ResourceException: A resource exists with a different case: /ok/hibernate.reveng.xml.<br>状况：新建了2个web项目，一个叫ok，一个叫okadmin，都添加了hibernate关联，后者反转数据库结构的时候，eclipse在.log中留下以上的log。<br>解决方法：临时remove另外一个项目。<br><br>6.5 ORA-01461 can bind a LONG value only for insert into a LONG column<br>状况：JDBC驱动与连接的Oracle数据库版本不一致。<br>解决方法：置换JDBC驱动为Oracle系统自带的。</p>
<img src ="http://www.blogjava.net/anymobile/aggbug/98790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2007-02-08 15:51 <a href="http://www.blogjava.net/anymobile/articles/98790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于Struts和Hibernate的轻量级J2EE应用</title><link>http://www.blogjava.net/anymobile/articles/91870.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Thu, 04 Jan 2007 16:35:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/91870.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/91870.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/91870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/91870.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/91870.html</trackback:ping><description><![CDATA[
		<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作者：徐建祥（</span>
						<span lang="EN-US" style="COLOR: #4b4b4b">
								<a href="mailto:netpirate@gmail.com">
										<font face="Times New Roman" color="#1a8bc8">netpirate@gmail.com</font>
								</a>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时间：</span>
						<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
						<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="3" month="1" year="2007">
								<span lang="EN-US">
										<font face="Times New Roman">2007-01-03</font>
								</span>
						</st1:chsdate>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">网址：</span>
						<span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: #4b4b4b; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
								<a href="http://www.anymobile.org/">http://www.anymobile.org</a>
						</span>
				</p>
		</span>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'"></span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">项目介绍</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">××××项目是基于……（背景，范畴，术语）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'"></span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统设计</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了降低系统的耦合性，提高系统的实用性和灵活性，对系统的页面逻辑、业务逻辑和数据逻辑进行分层。集合当前的</span>
				<span lang="EN-US">Web</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">技术，在</span>
				<span lang="EN-US">Java</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境下，采用实现了</span>
				<span lang="EN-US">MVC</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式的</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和实现了数据持久化的</span>
				<span lang="EN-US">Hibernate</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的开源框架组合，</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">Hibernate</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中整合</span>
				<span lang="EN-US">EhCache</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，对数据进行缓存。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本系统的体系结构如下：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<span lang="EN-US">
						<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?>
						<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
								<v:stroke joinstyle="miter">
								</v:stroke>
								<v:formulas>
										<v:f eqn="if lineDrawn pixelLineWidth 0">
										</v:f>
										<v:f eqn="sum @0 1 0">
										</v:f>
										<v:f eqn="sum 0 0 @1">
										</v:f>
										<v:f eqn="prod @2 1 2">
										</v:f>
										<v:f eqn="prod @3 21600 pixelWidth">
										</v:f>
										<v:f eqn="prod @3 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @0 0 1">
										</v:f>
										<v:f eqn="prod @6 1 2">
										</v:f>
										<v:f eqn="prod @7 21600 pixelWidth">
										</v:f>
										<v:f eqn="sum @8 21600 0">
										</v:f>
										<v:f eqn="prod @7 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @10 21600 0">
										</v:f>
								</v:formulas>
								<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
								</v:path>
								<o:lock aspectratio="t" v:ext="edit">
								</o:lock>
						</v:shapetype>
						<img src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/o_StrutsHibernate.gif" />
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其中，应用表示层基于</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，业务逻辑层包含了供应用程序调用的业务逻辑规则，以帮助应用程序完成业务操作，数据持久层基于</span>
				<span lang="EN-US">Hibernate</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，采用 <span lang="EN-US">DAO</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang="EN-US">Data Access Object</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）模式操作数据库，</span>应用服务器采用</span>
				<span lang="EN-US">Tomcat</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'"></span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">详细设计</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本系统具有多个模块，但各个模块的基本设计原理相同，下面将逐个描述。</span>
				<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">……</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">4、<span style="FONT: 7pt 'Times New Roman'"></span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据库设计</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">……</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">5、<span style="FONT: 7pt 'Times New Roman'"></span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发示例</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">5.1 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发环境</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>WinXP</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>JDK <st1:chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.2</st1:chsdate></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Eclipse <st1:chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.2.1</st1:chsdate> SDK</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">MyEclipse 5.0GA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				<span lang="EN-US">Struts 1.2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；</span>
				<span lang="EN-US">Hibernate 3.1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">Tomcat 5.5</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">5.2 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">新建</span>
				<span lang="EN-US">Web Project</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>File-&gt;New Project-&gt;MyEclipse-&gt;J2EE Projects-&gt;Web Project</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">5.3 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关联</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>MyEclipse-&gt;Add Struts Capabilities</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">5.4 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立数据库浏览</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Window-&gt; Preferences-&gt;MyEclipse-&gt;Database Explorer-&gt;New Driver</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Window-&gt;Customize Perspective-&gt;Commands</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，选上</span>
				<span lang="EN-US">Profile</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Profile</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">窗口，</span>
				<span lang="EN-US">Connection it</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">5.5 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">建立</span>
				<span lang="EN-US">Hibernate</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关联</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>MyEclipse-&gt;Add Hibernate Capabilities</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">5.6 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置应用服务器</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Window-&gt; Preferences-&gt; Application Server-&gt;Tomcat 5</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，选择</span>
				<span lang="EN-US">Enable</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，浏览</span>
				<span lang="EN-US">Tomcat</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的安装目录，浏览</span>
				<span lang="EN-US">JDK</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的安装目录</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">右键点击</span>
				<span lang="EN-US">Project</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">MyEclipse-&gt; Add and Remove Project Deployment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，点击</span>
				<span lang="EN-US">Add</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Server</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择</span>
				<span lang="EN-US">Tomcat 5</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Finish</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-para-margin-left: 2.0gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击</span>
				<span lang="EN-US">Run server</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，切换到</span>
				<span lang="EN-US">Web Browser</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">窗口，就可以访问了。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<o:p> <img src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/o_StrutsHibernateEclipse.jpg" /><br /></o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参考文档</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Eclipse-&gt;Help-&gt;Help Contents-&gt;<st1:place w:st="on"><st1:placename w:st="on">MyEclipse</st1:placename><st1:placename w:st="on">Learning</st1:placename><st1:placetype w:st="on">Center</st1:placetype></st1:place>-&gt;J2EE Application Development-&gt;Getting Started-&gt;Struts Development</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Eclipse-&gt;Help-&gt;Help Contents-&gt;<st1:place w:st="on"><st1:placename w:st="on">MyEclipse</st1:placename><st1:placename w:st="on">Learning</st1:placename><st1:placetype w:st="on">Center</st1:placetype></st1:place>-&gt;Spring/Hibernate Development-&gt;Getting Started-&gt;Hibernate Development</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Struts-Hibernate-Integration-Tutorial http://www.laliluna.de/download/struts-hibernate-integration-tutorial-en.pdf</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
		</p>&lt;全文完&gt;<img src ="http://www.blogjava.net/anymobile/aggbug/91870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2007-01-05 00:35 <a href="http://www.blogjava.net/anymobile/articles/91870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Contributing to Eclipse（2）－－Eclipse 插件</title><link>http://www.blogjava.net/anymobile/articles/64934.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 21 Aug 2006 17:38:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/64934.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/64934.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/64934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/64934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/64934.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">1、Eclipse </span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">法则(Eclipse Rule)</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">扩展者(</span>
						<span lang="EN-US">Extender)</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">――添加插件</span>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">贡献法则（</span>
				<span lang="EN-US">Contribution Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：一切皆是贡献。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">遵循法则（</span>
				<span lang="EN-US">Conformance Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：插件必须遵循预期的接口。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">共享法则（</span>
				<span lang="EN-US">Sharing Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：增加，不要取代。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有样学样法则（</span>
				<span lang="EN-US">Monkey See/Monkey Do Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：遇到问题时，首先复制类似插件的结构。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相关性法则（</span>
				<span lang="EN-US">Relevance Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：只有在操作有可能成功时菜显示你所贡献的操作。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">整合法则（</span>
				<span lang="EN-US">Integration Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：要整合，不要分裂。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">责任法则（</span>
				<span lang="EN-US">Responsibility Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：明确指出你所开发的插件时问题的源头。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">针对</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">契约编程法则（</span>
				<span lang="EN-US">Program to API Contract Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：首先检查</span>
				<span lang="EN-US">Eclipse API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">契约，然后针对契约编程。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Other</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">法则（</span>
				<span lang="EN-US">Other Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：让用户可以选择所有东西，但把那些通常不用于当前视角的选项放在</span>
				<span lang="EN-US">Other…</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对话框中。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>IResource</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">适配法则（</span>
				<span lang="EN-US">Adapt to IResource Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：应该尽量为领域对象定义</span>
				<span lang="EN-US">IResource</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">适配器。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分层法则（</span>
				<span lang="EN-US">Strata Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：将语言无关的功能与特定于具体语言的功能分开，将核心性能与</span>
				<span lang="EN-US">UI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分开。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户连贯性法则（</span>
				<span lang="EN-US">User Continuity Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：在多次会话之间，应该保持</span>
				<span lang="EN-US">UI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">状态一致。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">促成者(</span>
						<span lang="EN-US">Enabler</span> </b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)</span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">――发布扩展点</span>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US">
								<span style="mso-tab-count: 1">       </span>
						</span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">邀请法则（</span>
				<span lang="EN-US">Invitation Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：尽可能的邀请别人为你的作品作出贡献，发布扩展点。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">懒加载法则（</span>
				<span lang="EN-US">Lazy Loading Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：只有在真正需要的时候才加载插件。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安全平台法则（</span>
				<span lang="EN-US">Safe Platform Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：作为扩展点的提供者，你必须保护好自己，不要让扩展者的误操作给你造成损失。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">公平竞争法则（</span>
				<span lang="EN-US">Fair Play Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：所有使用者遵守同样的游戏规则，包括我自己。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">明确扩展法则（</span>
				<span lang="EN-US">Explicit Extension Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：明确说明平台的什么地方可供扩展。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发散性法则（</span>
				<span lang="EN-US">Diversity Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：一个扩展点接纳多个扩展。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">良好防御法则（</span>
				<span lang="EN-US">Good Fences Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：如果要交出程序的控制权，首先保护好你自己。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户决定法则（</span>
				<span lang="EN-US">User Arbitration Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：如果有多个选择，由用户决定使用哪一个。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">明确</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">法则（</span>
				<span lang="EN-US">Explicit API Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：将</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与插件内部使用的类分开。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">稳定性法则（</span>
				<span lang="EN-US">Stability Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：如果你已经开始邀请其它人作出贡献，就不要再改变游戏规则。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保守</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">法则（</span>
				<span lang="EN-US">Defensive API Rule</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：只暴露你有信心的</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，但同时也应该做好准备暴露更多的</span>
				<span lang="EN-US">API</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，因为使用者会要求你这样做。（不含</span>
				<span lang="EN-US">internal</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的包被认为是公开的、允许后续的扩展者使用的；不含</span>
				<span lang="EN-US">internal</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的包，则不是打算拿到插件外使用的。）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发布者(</span>
						<span lang="EN-US">Publisher</span>)</b>
				<b style="mso-bidi-font-weight: normal">
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">――发布插件</span>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<span style="mso-tab-count: 1">       </span>
		</span>
		<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">许可法则（</span>
		<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">License Rule</span>
		<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">）：每项贡献品都应该提供许可证。<br /><br /><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><strong>2、Eclipse </strong></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'"><strong>插件(Plug-in)</strong></span><br /><br /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">何时需要一个插件类</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">       </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每个插件都由一个插件类来代表。插件类是一个</span><span lang="EN-US"><font face="Times New Roman">Singleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其中提供了一些钩子方法，可以对插件的什么周期事件作出响应。可以在插件第一次加载时读入所需的资源，也可以在插件停止时做必要的清理工资。另外，插件还负责提高一些共享信息。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">投影（</span><span lang="EN-US"><font face="Times New Roman">Shadow</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）的世界</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman"><span style="mso-tab-count: 1">       </span>Eclipse</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台启动时会将所有插件清单文件读入一个插件注册表中，为每个插件创建一个投影。此时不会加载插件本身，只加载它们的描述信息。（</span><span lang="EN-US"><font face="Times New Roman">Platform.getPluginRegistry()</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发插件时，不要在项目属性中修改构建</span><span lang="EN-US"><font face="Times New Roman">classpath</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，始终在清单文件中修改。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US"><font face="Times New Roman">Eclipse</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，每个插件都有自己的类加载器（</span><span lang="EN-US"><font face="Times New Roman">class loader</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）和自己的类查找路径（</span><span lang="EN-US"><font face="Times New Roman">classpath</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），后者将继承该插件所导入的其它插件的</span><span lang="EN-US"><font face="Times New Roman">classpath</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。当插件的类加载器加载插件的第一个类时，就会激活该插件。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件类加载器</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">1、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件类加载器的上级加载器，</span><span lang="EN-US"><font face="Times New Roman">Eclipse</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的引导加载器，</span><span lang="EN-US"><font face="Times New Roman">boot.jar</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">2、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件本身的类加载器，</span><span lang="EN-US"><font face="Times New Roman">plugin.xml</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">清单文件中的</span><span lang="EN-US"><font face="Times New Roman">&lt;run-time&gt;</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素中描述的类。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相依插件的类加载器，如果插件依赖于其它插件，在类查找时，会在内部使用一个</span><span lang="EN-US"><font face="Times New Roman">URL</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类加载器。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">4、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不包括应用程序类</span><span lang="EN-US"><font face="Times New Roman">/</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统</span><span lang="EN-US"><font face="Times New Roman">CLASSPATH</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量的加载器。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">加载扩展的全过程</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">1、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从</span><span lang="EN-US"><font face="Times New Roman">Eclipse</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台取得扩展点。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">2、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">取得以在此扩展点上注册的扩展（实现</span><span lang="EN-US"><font face="Times New Roman">IExtension</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口）。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于每个扩展，取出其中以</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方式声明的配置元素（实现</span><span lang="EN-US"><font face="Times New Roman">IConfigurationElement</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口）。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">4、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于每个配置元素，根据该元素</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明中</span><span lang="EN-US"><font face="Times New Roman">class</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性的值创建一个对象，确保定义的属性完整、有效。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">5、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将新创建的扩展对象保存到一个集合中，而不是直接返回一个扩展对象。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">理想的开发策略：</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">1、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">信心：在增加新性能或修改旧结构时，不比担心对原代码造成破坏。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">2、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">学习：快速而自信地学习</span><span lang="EN-US"><font face="Times New Roman">Eclipse</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地新领域。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设计：鼓励自己和同事认真考虑设计，尤其是代码地外在接口，然后去考虑如何实现。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">测试驱动开发（</span><span lang="EN-US"><font face="Times New Roman">Test-Driven Development, TDD</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）的开发循环：</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">1、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编写欲添加功能的测试。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">2、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">针对这个测试引用到、暂未存在的类和方法，创建一段空的占用程序，使测试通过编译。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现测试，测试测试应该失败。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman">4、<span style="FONT: 7pt 'Times New Roman'">  </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">尽量对实现代码加以清扫，例如去除其中的重复代码。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件的测试策略</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">       </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从审美的角度，每个插件应该尽可能少的依赖其它插件；从实用的角度，以测试驱动的方式开发插件的每个部分。应该首先创建测试插件，让它依赖于新插件，以便完全用测试来驱动新插件的开发。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作副本（</span><span lang="EN-US"><font face="Times New Roman">working copy</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）是</span><span lang="EN-US"><font face="Times New Roman">Eclipse JDT</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引入的一个概念，是原有的编译单元在内存中的复制品。让用户修改时，操作的实际是</span><span lang="EN-US"><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编辑器所创建的工作副本；当用户保存编译单元时，</span><span lang="EN-US"><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编辑器才把副本提交到文件系统，此时对编译单元的修改才会以</span><span lang="EN-US"><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素变化增量的形式广播出去。（</span><span lang="EN-US"><font face="Times New Roman">JavaUI.getWorkingCopyManager()</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">视角，定义了（一组）视图和编辑器的排列方式，工作台页面的布局，解决某个完整问题的环境。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">降低插件的维护成本：良好的异常处理和错误报告机制；提供联机帮助文档（</span><span lang="EN-US"><font face="Times New Roman">Eclipse</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US"><font face="Times New Roman">help</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">扩展点的扩展）。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"> </font></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分段（</span><span lang="EN-US"><font face="Times New Roman">fragment</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）使开发者能够向现有的插件中添加代码和资源。（</span><span lang="EN-US"><font face="Times New Roman">fragment.xml</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分段的用途：</span></p><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><font face="Times New Roman"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">  </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为插件提供额外的字符串翻译（语言包）。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">  </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为现有组件提供特定于平台的内容。</span></p></font></span></span></span>
<img src ="http://www.blogjava.net/anymobile/aggbug/64934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-08-22 01:38 <a href="http://www.blogjava.net/anymobile/articles/64934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Contributing to Eclipse（1）－－Eclipse SDK</title><link>http://www.blogjava.net/anymobile/articles/64933.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 21 Aug 2006 17:34:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/64933.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/64933.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/64933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/64933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/64933.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 14pt">Contributing to Eclipse<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Principles</span>,<span lang="EN-US" style="FONT-SIZE: 12pt">Patterns</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</span><span lang="EN-US" style="FONT-SIZE: 12pt">and Plug-Ins<o:p></o:p></span></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">[</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">美</span>
				<span lang="EN-US">] Erich Gamma, Kent Beck </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">著</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 105pt; mso-char-indent-count: 10.0">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">    熊节</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">译</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每个人都需要别人的关心和帮助，每个人也同样需要关心和帮助别人。<br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每天花</span>
				<span lang="EN-US">
						<font face="Times New Roman">6</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个小时读代码，再用一个小时写代码。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">学习</span>
				<span lang="EN-US">
						<font face="Times New Roman">Eclipse</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的方法，浏览</span>
				<span lang="EN-US">
						<font face="Times New Roman">org.eclipse.core.runtime</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的源代码。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font face="Times New Roman"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">全书分四个循环：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">1、<span style="FONT: 7pt 'Times New Roman'"><font size="3">  </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第零循环：做好插件开发的准备，然后以最快速度开发一个小插件――从构思到实现。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">2、<span style="FONT: 7pt 'Times New Roman'"><font size="3">  </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一循环：介绍插件的内容和测试用例，开发并部署用于运行单元测试的插件。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'"><font size="3">  </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二循环：在基本功能之外，为插件加上一个完整</span>
				<span lang="EN-US">
						<font face="Times New Roman">Eclipse</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件的所应该具有的特性。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">4、<span style="FONT: 7pt 'Times New Roman'"><font size="3">  </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第三循环：纵览</span>
				<span lang="EN-US">
						<font face="Times New Roman">Eclipse</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的设计，着重之处其中值得尽早关注的地方。（设计模式及实现）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font face="Times New Roman">
										<br />大家谈论的Eclipse，通常都是指的Eclipse Software Development kit（SDK），包括java integrated development environment （IDE）和最好的基于Eclipse 平台的单一开发产品的工具。<br /> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse SDK </span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">是几个有影响的Eclipse项目的集合体，包括众多扩展点和符合相同接口的扩展。<br />Eclipse IDE 搭建了一个完全由组件组成的环境，并且始终保证快速启动。<br /><br /><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">的三层体系结构：<br /></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">1、<span style="FONT: 7pt 'Times New Roman'">  </span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台(</span>
				<span lang="EN-US">
						<font face="Times New Roman">Platform</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)：定义了通用的、独立于编程语言的基础设施。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Times New Roman">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
						</span>
						<span lang="EN-US">Java</span>
				</font>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发工具(</span>
				<span lang="EN-US">
						<font face="Times New Roman">Java Development Tools</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</span>
				<span lang="EN-US">
						<font face="Times New Roman">JDT</font>)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：基于</span>
				<span lang="EN-US">
						<font face="Times New Roman">Eclipse</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，功能齐备的</span>
				<span lang="EN-US">
						<font face="Times New Roman">Java IDE</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'">  </span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件开发环境(</span>
				<span lang="EN-US">
						<font face="Times New Roman">Plug-in Development Environment</font> </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</span>
				<span lang="EN-US">
						<font face="Times New Roman">PDE)</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：对</span>
				<span lang="EN-US">
						<font face="Times New Roman">JDT</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行了扩展，提供了对插件开发的支持。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<br />
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">Platform，主要包括独立于用户界面的核心(</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Core</span>)<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">层和</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">UI</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">(</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">User Interface</span>)<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">层，以及 Team 和 Help 组件。<br /><br /><img src="http://www.eclipse.org/articles/Whitepaper-Platform-3.1/images/eclipse-platform-arch.gif" /><br />Figure 1 - Eclipse Platform architecture<br /><br /></span></p>
		<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
				<span style="mso-list: Ignore">
						<font face="Times New Roman">
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">运行时(</span>
										<span lang="EN-US">Runtime)</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：定义了插件的基础设施，在启动时发现所有可用的插件，并负责管理插件的加载。</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作区(</span>
										<span lang="EN-US">Workspace)</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：负责一个或多个顶级项目。</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标准窗体组件工具包(</span>
										<span lang="EN-US">Standard Widget Toolkit</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</span>
										<span lang="EN-US">SWT)</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：提供了图形展示功能，并定义了一组标准的窗体组件。</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">4、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span lang="EN-US">JFace</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：一组较小的</span>
										<span lang="EN-US">UI</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，建立在</span>
										<span lang="EN-US">SWT</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之上，提供对常用</span>
										<span lang="EN-US">UI</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">任务的支持。</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">5、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作台(</span>
										<span lang="EN-US">Workbench)</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：定义了</span>
										<span lang="EN-US">Eclipse</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
										<span lang="EN-US">UI</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">聚合体，其核心要素是编辑器、视图和视角。</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
										<span lang="EN-US">
												<o:p>
												</o:p>
										</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">6、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">团队支持(</span>
										<span lang="EN-US">Team Support</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)：</span>
										<span lang="EN-US">Eclipse</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台允许</span>
										<span lang="EN-US">workspace</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的项目建立在版本和配置管理的团队知识库之上。平台含有扩展点和可以实现新的团队知识库插件的知识库供给</span>
										<span lang="EN-US">API</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。多个团队知识库可以和平共存在平台中，</span>
										<span lang="EN-US">Eclipse</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台包含了对</span>
										<span lang="EN-US">CVS</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的支持。</span>
								</p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
										<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
												<span style="mso-list: Ignore">7、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帮助(</span>
										<span lang="EN-US">Help</span>)<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span><span lang="EN-US">Eclipse</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台的帮助机制允许定义和捐赠文档到一个或多个在线手册的工具。比如，通过一个工具捐赠了帮助风格文档的用户手册，</span><span lang="EN-US">API</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文档（如果有多个）捐赠给一个独立的编程指南。</span></p>
								<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
								</p>
						</font>
				</span>
		</span>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<br />资源：<br /><br />Eclipse Corner Articles              <a href="http://www.eclipse.org/articles/">http://www.eclipse.org/articles/</a></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">Eclipse Platform Technical Overview  <a href="http://www.eclipse.org/articles/Whitepaper-Platform-3.1/eclipse-platform-whitepaper.html">http://www.eclipse.org/articles/Whitepaper-Platform-3.1/eclipse-platform-whitepaper.html</a></p>
<img src ="http://www.blogjava.net/anymobile/aggbug/64933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-08-22 01:34 <a href="http://www.blogjava.net/anymobile/articles/64933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java与XML（2）－－Apache XMLBeans</title><link>http://www.blogjava.net/anymobile/articles/63562.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 14 Aug 2006 17:33:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/63562.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/63562.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/63562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/63562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/63562.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于</span>
				<span lang="EN-US">XML</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是元标记语言，</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素由起始标记、结束标记和二者之间的数据组成，广泛运用于数据存储和交换。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span lang="EN-US">XMLBeans</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">简介</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">
				<span lang="EN-US">XMLBeans==XML+JavaBeans</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，是一种</span>
				<span lang="EN-US">XML-Java</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型绑定技术，提供了完整的</span>
				<span lang="EN-US">XML Schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">Infoset</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">支持。由</span>
				<span lang="EN-US">BEA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">公司发明，于</span>
				<span lang="EN-US">2003</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</span>
				<span lang="EN-US">9</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月捐赠给</span>
				<span lang="EN-US">Apache</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">软件基金会的</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">项目组，目前的最新版本为</span>
				<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
				<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">
						<span lang="EN-US">2.2.0</span>
				</st1:chsdate>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">
				<span lang="EN-US">XMLBeans</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过编译</span>
				<span lang="EN-US">XML Schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，把</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例和底层架构映射为</span>
				<span lang="EN-US">JavaBeans</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风格的对象，开发人员通过</span>
				<span lang="EN-US">getter</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">setter</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">访问器轻松检索、定位和操作</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据文件。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span lang="EN-US">XMLBeans</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作步骤</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">
				<span lang="EN-US">3.1 <span style="mso-tab-count: 1">  </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">准备</span>
				<span lang="EN-US">XML Schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">XML Schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件是一个</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据文件的约束文件，它定义了</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的结构和元素，以及对元素和结构的约束。二者相当于数据表结构与数据的关系。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">XML Spy</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以通过</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件生成</span>
				<span lang="EN-US">Schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，或者使用</span>
				<span lang="EN-US">Workshop</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等软件创建。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -24pt; mso-list: l1 level2 lfo2; tab-stops: list 41.95pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.2<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">利用</span>
				<span lang="EN-US">scomp</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来生成</span>
				<span lang="EN-US">Java Classes</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">scomp</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span>
				<span lang="EN-US">XMLBeans</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的一个编译工具，通过</span>
				<span lang="EN-US">schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件生成相应的</span>
				<span lang="EN-US">XML Bean</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类和元数据，在其安装目录下的</span>
				<span lang="EN-US">bin</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">scomp</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令的语法如下：</span>
				<span lang="EN-US">scomp [opts] [dirs]* [schema.xsd]* [service.wsdl]* [config.xsdconfig]*</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主要的参数说明：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">-src [dir]</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　　　　</span>
				<span lang="EN-US">-- </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生成的</span>
				<span lang="EN-US">Java </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源码存放目录</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">-srconly</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　　　　　</span>
				<span lang="EN-US">-- </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只生成</span>
				<span lang="EN-US">Java </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源码，不编译、产生</span>
				<span lang="EN-US">Jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">-out [jarFileName]</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　</span>
				<span lang="EN-US">-- </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生成的</span>
				<span lang="EN-US">Jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，缺省是</span>
				<span lang="EN-US">xmltypes.jar</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">-compiler</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　　　　 </span>
				<span lang="EN-US">-- Java</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编译器的路径，即</span>
				<span lang="EN-US">Javac</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的位置</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">schema.xsd</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span> <span lang="EN-US"><span style="mso-spacerun: yes">     </span>-- XML Schema</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的路径</span></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">config.xsdconfig</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　</span>
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>-- xsdconfig</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的路径</span>
				<span lang="EN-US">, </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主要用来制定生成的</span>
				<span lang="EN-US">Java Classes</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的文件名规则和</span>
				<span lang="EN-US">Package</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">名称，否则</span>
				<span lang="EN-US">package name </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将以</span>
				<span lang="EN-US">schema</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">xmlns</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为准。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span lang="EN-US">
				</span>
		</p>
		<div align="right">
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 92.97%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 26px; BACKGROUND-COLOR: #eeeeee">
						<div align="left">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<span style="COLOR: #000000">scomp </span>
								<span style="COLOR: #808080">-</span>
								<span style="COLOR: #000000">src .</span>
								<span style="COLOR: #808080">/</span>
								<span style="COLOR: #000000">src </span>
								<span style="COLOR: #808080">-</span>
								<span style="COLOR: #000000">out baiduweb.jar WebSearchSchema.xsd </span>
						</div>
				</div>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd"> </p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -24pt; mso-list: l1 level2 lfo2; tab-stops: list 41.95pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.3<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">读取</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据文件</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-para-margin-left: 2.0gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将生成的</span>
				<span lang="EN-US">jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包添加到项目的</span>
				<span lang="EN-US">libraries/classpath</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，新建一个</span>
				<span lang="EN-US">java</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -24pt; mso-list: l1 level2 lfo2; tab-stops: list 41.95pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.4<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">写</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据文件</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -24pt; mso-list: l1 level2 lfo2; tab-stops: list 41.95pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.5<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据文件</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -24pt; mso-list: l1 level2 lfo2; tab-stops: list 41.95pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.6<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">删除</span>
				<span lang="EN-US">XML </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结点</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -24pt; mso-list: l1 level2 lfo2; tab-stops: list 41.95pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.7<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查询</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">(</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">未完待续</span>
				<span lang="EN-US">)<br /><br />资源：<br /><a href="http://xmlbeans.apache.org/sourceAndBinaries/index.html" target="_blank">Apache XMLBeans</a>——XMLBeans官方网站<br /><a href="http://dev2dev.bea.com.cn/techdoc/2005031005.html">Configuring XMLBeans</a> by <a href="http://dev2dev.bea.com.cn/author/149.html">Hetal Shah</a> 2005-03-10<br /><a class="ab" href="http://dev2dev.bea.com.cn/techdoc/20060713845.html">XMLBeans 2.0 —— 一位Java开发人员的视点</a><span class="col777777"> by <a href="http://dev2dev.bea.com.cn/author/542.html">Jacob Danner</a>, <a href="http://dev2dev.bea.com.cn/author/543.html">Raj Alagumalai</a> 2006-07-13</span><br />　　了解Apache XMLBeans 2.0中的一些新特性，包括XPath/Xquery集成以及对泛型的支持。</span>
		</p>
<img src ="http://www.blogjava.net/anymobile/aggbug/63562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-08-15 01:33 <a href="http://www.blogjava.net/anymobile/articles/63562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java与XML（1）－－XML数据与解析器</title><link>http://www.blogjava.net/anymobile/articles/57838.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Wed, 12 Jul 2006 09:29:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/57838.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/57838.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/57838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/57838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/57838.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">XML是原标记语言，在Java中广泛应用于数据存储和交换。<br /><br /></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">1、配置文件</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<br />1.1 Windows风格<br /><br />文件名：<span lang="EN-US">config.properties</span></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据格式：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
				</span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">[Product]<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Name=小秘书 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[IM] <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />;  所有的文字在实际使用中都会进行相应替换,替换规则如下:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />;  $peeruin$ ---&gt; 替换为对方的uin  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />;  AllInOne在线<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Text0=$peernick$开通了小秘书自动应答服务,是否与其[link=open peeruin=$peeruin$ selfuin=$selfuin$ from=6]小秘书[/link]聊聊?</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">访问方式：</span>
				<span lang="EN-US">Product.Name</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如：</span>
				<span lang="EN-US">QQ</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> <br /></o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">1.2 OO风格<br /><br />文件名：</span>
				<span lang="EN-US">config.xml</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据格式：</span>
		</p>
		<span lang="EN-US">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<span style="COLOR: #0000ff">&lt;?</span>
								<span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF-8"</span>
								<span style="COLOR: #0000ff">?&gt;</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">&lt;</span>
								<span style="COLOR: #800000">prop</span>
								<span style="COLOR: #0000ff">&gt;</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">&lt;</span>
								<span style="COLOR: #800000">product</span>
								<span style="COLOR: #0000ff">&gt;</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">&lt;</span>
								<span style="COLOR: #800000">name</span>
								<span style="COLOR: #0000ff">&gt;</span>
								<span style="COLOR: #000000">value</span>
								<span style="COLOR: #0000ff">&lt;/</span>
								<span style="COLOR: #800000">name</span>
								<span style="COLOR: #0000ff">&gt;</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
								<span style="COLOR: #0000ff">&lt;/</span>
								<span style="COLOR: #800000">product</span>
								<span style="COLOR: #0000ff">&gt;</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">&lt;/</span>
								<span style="COLOR: #800000">prop</span>
								<span style="COLOR: #0000ff">&gt;</span>
						</div>
				</span>
		</span>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">访问方式：</span>
				<span lang="EN-US">product.name</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如：</span>
				<span lang="EN-US">Jive</span>
				<br />
				<br />2、XML解析器<br /><br />2.1 DOM<br /><br />DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合，允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构。由于它是基于信息层次的，因而 DOM 被认为是基于树或基于对象的。<br /><br />用 DOM 解析模型的优点是编程容易，可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档，所以对性能和内存的要求比较高，尤其是遇到很大的 XML 文件的时候。由于它的遍历能力，DOM 解析器常用于 XML 文档需要频繁的改变的服务中。<br /><br />2.2 SAX<br /><br />SAX 解析器采用了基于事件的模型，它在解析 XML 文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。只是在读取数据时检查数据，不需要将数据存储在内存中，对内存的要求通常会比较低。但用 SAX 解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。<br /><br />2.3 JDOM<br /><br />JDOM 自身不包含解析器，它通常使用 SAX2 解析器来解析和验证输入 XML 文档。<br />JDOM 的目的是成为 Java 特定文档模型，仅使用具体类而不使用接口，API 大量使用了 Collections 类，简化了与 XML 的交互，并且比使用 DOM 实现更快。<br /><br />2.4 DOM4J<br /><br />DOM4J 合并了许多超出基本 XML 文档表示的功能，包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">DOM4J 是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。<br /><br />3、DTD vs. XML Schema<br /><br />XML Schema 指定 XML Schema 定义语言，该语言提供了描述 XML 1.0 文档结构和限制其内容的工具，其中包括那些利用 XML Namespace 的工具。模式语言自身用 XML 1.0 表示并使用名称空间，它在很大程度上重构了 XML 1.0 DTD 具有的能力，并在一定程度上扩展了这些能力。<br /></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<br />DTD 的局限性:<br />　　<br />□ 对于复杂需求通常很难使用内容模型。<br />□ 不支持名称空间。<br />□ 对模块化和重用的支持非常有限。<br />□ 不支持对声明扩展或继承。<br />□ 编写、维护和读取大型 DTD 以及定义系列相关模式都很困难。<br />□ 没有嵌入式、结构化自我文档编制(self-documentation)(只有 可用)。<br />□ 内容和属性声明不能依靠属性或元素上下文(许多 XML 语言用到这一点，但它们的 DTD 必须“允许过多东西”)。<br />□ 只能使用一个简单的标识属性机制(换句话说，没有唯一性作用域)。<br />　　<br />XML Schema 的局限性:<br />　　<br />□ XML Schema 比较复杂;只需要偶尔使用 XML 的程序员可能觉得它难得有些过头。<br />□ XML Schema 不能请求特定的根元素(因此，即使验证最简单的文档也要求额外的信息)。<br />□ 当描述混合内容时，根本无法约束字符数据。<br />□ 内容和属性声明不能依靠属性或元素上下文(这也是 DTD 的主要问题)。<br />□ 不能离开声明指定缺省值。<br />□ 元素缺省值只能是字符数据(不包含标记)。<br /></p>
<img src ="http://www.blogjava.net/anymobile/aggbug/57838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-07-12 17:29 <a href="http://www.blogjava.net/anymobile/articles/57838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java NIO 开源项目</title><link>http://www.blogjava.net/anymobile/articles/55987.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Fri, 30 Jun 2006 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/55987.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/55987.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/55987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/55987.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/55987.html</trackback:ping><description><![CDATA[<li><a href="http://mina.apache.org/">Apache MINA</a>
<p>Apache <abbr title="Multipurpose Infrastructure for Network Applications">MINA</abbr> is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract &#183; event-driven &#183; asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.</p>
<p>Apache MINA is often called:</p>
<ul>
    <li>NIO framework &#183; library,
    <li>client &#183; server framework &#183; library, or
    <li>a networking &#183; socket library. </li>
</ul>
</li>
<p>--updated 2008/03/12</p>
<li><a href="http://jniosocket.sourceforge.net/"><font color="#666666"><strong>Raining Sockets</strong> </font></a>- Raining Sockets is a non-blocking sockets framework which eases the job of creating a highly scalable application that can receive and send over 10000 socket connections. The SocketBlaster (NIO based Load Tester) and Server (very basic NIO Server) program (both extended from NioSocket.java) have been successfully tested with 13000 connections on 2 Xeon machines. The Raining HTTP Server is an NIO based HTTP Server that aims at implementing most of HTTP 1.1 <br />
<br />
<li><a href="http://reattore.sourceforge.net/"><strong><font color="#666666">Reattore</font> </strong></a>- Reattore is a simple single threaded HTTP server written in Java. Unlike most Java server applications, Reattore uses the socket channel features added in Java 1.4 to serve all requests from one thread, instead of spawning each request off to a new thread. In theory this provides better performance and allows the system to degrade well under high load. <br />
<br />
<li><a href="http://www.ubermq.com/"><strong><font color="#666666">UberMQ</font> </strong></a>- UberMQ is a clean room implementation of the Java Message Service specification. JMS is a part of the Java 2 Enterprise Edition. We wrote UberMQ because many of the established JMS vendors have turned their back on the core tenets of distributed computing: fast and simple. Our technology is implemented with Java NIO, allowing you to scale your message traffic without thousands of threads and the associated performance penalties. <br />
<br />
<li><a href="http://java.twistedmatrix.com/eio/"><strong><font color="#666666">EIO</font> </strong></a>- The EIO package (which stands for "Event Input/Output") offers a networking API in Java that is efficient and very simple. This provides a third alternative to the two two major Java networking APIs: the traditional one-thread-per-connection model (java.net), and the new non-blocking model (java.nio). EIO provides a simplified wrapper around java.nio. <br />
<br />
<li><a href="http://www.muleumo.org/"><font color="#666666"><strong>Mule</strong> </font></a>- Mule is a light-weight, event-driven component technology. It is highly scalable, using ideas from SEDA.<br />
<br />
<li><a href="http://jroller.com/page/pyrasun/20040426#emberio_dispelling_nio_myths"><strong><font color="#666666">EmberIO</font> </strong></a>- EmberIO is an I/O event system centered around Java 1.4 NIO. Supports both request-process-response models and many asynchronous models. Configurable thread pooling mechanisms and event processing models.<br />
<br />
<li><a href="http://bamboo-dht.org/"><font color="#666666"><strong>Bamboo DHT</strong> </font></a>- A distributed hash table, or DHT, is a building block for peer-to-peer applications. At the most basic level, it allows a group of distributed hosts to collectively manage a mapping from keys to data values, without any fixed hierarchy, and with very little human assistance. This building block can then be used to ease the implementation of a diverse variety of peer-to-peer applications such as file sharing services, DNS replacements, web caches, etc. <br />
<br />
<li><a href="http://lsd.student.utwente.nl/jicarilla/jicarillahttp"><font color="#666666"><strong>JicarillaHTTP</strong> </font></a>- A componentized, scriptable, event-based webserver, based on the JDK 1.4 New I/O (nio) package. <br />
<br />
<li><a href="http://nbserver.sourceforge.net/index.html"><strong><font color="#666666">NBServer</font> </strong></a>- A framework that takes most of the pain out of writing non-blocking network servers in Java 1.4. It'll shield you from low-level details of output buffering, selector management etc. leaving you to concentrate solely on writing the network protocol. <br />
<br />
<li><a href="http://jade.dautelle.com/"><font color="#666666"><strong>JADE Stuct/Union</strong> </font></a>- JavaTM classes for direct interoperability with C/C++ applications. Base classes analogous to C/C++ struct &amp; union (same storage layout, alignment rules, bit-field support, etc.) Memory sharing between Java applications and native libraries. Direct encoding/decoding of streams for which the structure is defined by legacy C/C++ code. Serialization/deserialization of Java objects (complete control, e.g. no class header). Mapping of Java objects to physical addresses (with JNI). <br />
<br />
<li><a href="http://www.kowari.org/"><strong><font color="#666666">Kowari</font> </strong></a>- The storage engine of Kowari is a transactional triplestore known as the XA Triplestore. ll relevant fields of in-memory and on-disk data structures are 64 bits wide. System crashes caused by power failures and some types of hardware fault will not cause data corruption. The on-disk data structures of the triplestore are designed to be kept in a consistent state at all times while minimizing the overhead required to achieve this. NIO file channels allow multiple threads to concurrently read and write different parts of the same file without having to use thread synchronization to protect the current file position. On 32 bit platforms the amount of virtual memory that is available for mapping files is usually limited to less than 2 GB. <br />
<br />
<li><a href="http://gleamynode.net/dev/projects/netty2/"><strong><font color="#666666">Netty2</font> </strong></a>- Netty 2 provides an easy event-based API (like Swing) to develop high-performance, maintainable TCP/IP server/client application. Netty handles many essential features such as readiness selection, thread pooling, and buffer reuse which are required to build high- performance and capacity network applications. </li>
<img src ="http://www.blogjava.net/anymobile/aggbug/55987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-06-30 16:51 <a href="http://www.blogjava.net/anymobile/articles/55987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Cache 开源项目</title><link>http://www.blogjava.net/anymobile/articles/55186.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 26 Jun 2006 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/55186.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/55186.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/55186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/55186.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/55186.html</trackback:ping><description><![CDATA[
		<p>
		</p>
		<p>
				<strong>Java Caching System</strong>
				<br />　　JCS(Java Caching System)是一个用分布式的缓存系统，是基于服务器的java应用程序。它是通过提供管理各种动态缓存数据来加速动态web应用。 <br />　　JCS和其他缓存系统一样，也是一个用于高速读取，低速写入的应用程序。 <br />　　动态内容和报表系统能够获得更好的性能。 <br />　　如果一个网站，有重复的网站结构，使用间歇性更新方式的数据库（而不是连续不断的更新数据库），被重复搜索出相同结果的，就能够通过执行缓存方式改进其性能和伸缩性。 <br />官方网站 <a href="http://jakarta.apache.org/turbine/jcs/">http://jakarta.apache.org/turbine/jcs/</a></p>
		<p>
				<strong>EHCache </strong>
				<br />　　EHCache 是一个纯java的分布式缓存，支持磁盘存储，它具有以下特性：快速，简单，为Hibernate2.1充当可插入的缓存，最小的依赖性，全面的文档和测试。 <br />官方网站 <a href="http://ehcache.sourceforge.net/">http://ehcache.sourceforge.net/</a></p>
		<p>
				<strong>OSCache</strong>
				<br />　　OSCache是一个广泛采用的高性能的J2EE缓存框架，OSCache能用于任何Java应用程序的普通的缓存解决方案。 <br />　　OSCache有以下特点： <br />　　缓存任何对象，你可以不受限制的缓存部分jsp页面或HTTP请求，任何java对象都可以缓存。 <br />　　拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。 <br />　　永久缓存--缓存能随意的写入硬盘，因此允许昂贵的创建（expensive-to-create）数据来保持缓存，甚至能让应用重启。 <br />支持集群--集群缓存数据能被单个的进行参数配置，不需要修改代码。 <br />缓存记录的过期--你可以有最大限度的控制缓存对象的过期，包括可插入式的刷新策略（如果默认性能不需要时）。 <br />官方网站 <a href="http://www.opensymphony.com/oscache/">http://www.opensymphony.com/oscache/</a></p>
		<p>
				<strong>Cache4J</strong>
				<strong>
				</strong>
		</p>
		<p>　　Cache4J是一个接口简单，可以快速上手，基于BSD许可的开源缓存软件。<br />　　Cache4J有以下特点：<br />　　暂只只是内存缓存；<br />　　多线程环境设计；<br />　　2种实现：synchronized, blocking；<br />　　支持LFU, LRU, FIFO算法。<br />　　支持磁盘存储，分布式引用，以及LFU2, LRU2等算法将是Cache4J接下来要实现的功能；另外，该软件的使用指南和API文档均是俄文。<br />官方网站：<a href="http://cache4j.sourceforge.net/">http://cache4j.sourceforge.net/</a></p>
		<p>
				<strong>JCache(FKache)</strong>
				<br />　　JCache是个开源程序，正在努力成为JSR-107开源规范，JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。 <br />官方网站 <a href="http://jcache.sourceforge.net/">http://jcache.sourceforge.net/</a></p>
		<p>
				<strong>ShiftOne</strong>
				<br />　　ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Javalib，就像一个轻量级的配置缓存工作状态的框架。 <br />官方网站 <a href="http://jocache.sourceforge.net/">http://jocache.sourceforge.net/</a></p>
		<p>
				<strong>SwarmCache</strong>
				<br />　　SwarmCache是一个简单且有效的分布式缓存，它使用IP multicast与同一个局域网的其他主机进行通讯，是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持     SwarmCache使用JavaGroups来管理从属关系和分布式缓存的通讯。 <br />官方网站 <a href="http://swarmcache.sourceforge.net/">http://swarmcache.sourceforge.net</a></p>
		<p>
				<strong>TreeCache / JBossCache</strong>
				<br />　　JBossCache是一个复制的事务处理缓存，它允许你缓存企业级应用数据来更好的改善性能。缓存数据被自动复制，让你轻松进行JBoss服务器之间的集群工作。JBossCache能够通过JBoss应用服务或其他J2EE容器来运行一个MBean服务，当然，它也能独立运行。 <br />　　JBossCache包括两个模块：TreeCache和TreeCacheAOP。 <br />　　TreeCache --是一个树形结构复制的事务处理缓存。 <br />　　TreeCacheAOP --是一个“面向对象”缓存，它使用AOP来动态管理POJO(Plain Old Java Objects) <br />　　注：AOP是OOP的延续，是Aspect Oriented Programming的缩写，意思是面向方面编程。 <br />官方网站 <a href="http://www.jboss.org/products/jbosscache">http://www.jboss.org/products/jbosscache</a></p>
		<p>
				<strong>WhirlyCache</strong>
				<br />　　Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。它能够通过缓存对象来加快网站或应用程序的速度，否则就必须通过查询数据库或其他代价较高的处理程序来建立。 <br />官方网站 <a href="https://whirlycache.dev.java.net/">https://whirlycache.dev.java.net/</a><br /><br /><strong>Jive Cache</strong><br />　　Jive论坛曾经是一个广受欢迎的开放源码的论坛项目，现在已经商业化了，它有很多值得我们学习的地方。jive 2.6.0 的缓存机制，把所要缓存的对象加到HashMap哈希映射表中，用两个LinkedListedlist双向链表分别维持着缓存对象和每个缓存对象的生命周期，如果一个缓存对象被访问到，那么就把它放到链表的最前面，然后不定时的把要缓存对象的对象加入链表中，把过期对象删除，如此反复。<br />官方网站 <a href="http://www.jivesoftware.com/">http://www.jivesoftware.com</a><br /><br /><strong>OFBiz Cache</strong><br /><span class="style7">　　OFBiz是一个非常著名的开源项目，提供了创建基于最新J2EE/XML规范和技术标准，构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。Ofbiz与Jive实现的Cache类似，只是Ofbiz中根本都不关心每个对象的Size，只关心总体的HashMap的Size；Jive为了实现双向联表，而在Ofbiz中用的是java.util.LinkedList。<br />官方网站 <a href="http://www.ofbiz.org/">http://www.ofbiz.org/</a></span></p>
		<p>
				<span class="style7">附：</span>cache4j_perfomance_tester对<span class="style7">几个常用Cache的性能测试报告：<br /></span></p>
		<pre>  [java] ---------------------------------------------------------------<br />  [java] java.version=1.4.2_09<br />  [java] java.vm.name=Java HotSpot(TM) Client VM<br />  [java] java.vm.version=1.4.2-54<br />  [java] java.vm.info=mixed mode<br />  [java] java.vm.vendor="Apple Computer, Inc."<br />  [java] os.name=Mac OS X<br />  [java] os.version=10.4.5<br />  [java] os.arch=ppc<br />  [java] ---------------------------------------------------------------<br />  [java] This test can take about 5-10 minutes. Please wait ...<br />  [java] ---------------------------------------------------------------<br />  [java] |GetPutRemoveT |GetPutRemove |Get |<br />  [java] ---------------------------------------------------------------<br />  [java] cache4j 0.4 |9410 |9053 |5865 |<br />  [java] oscache 2.2 |28076 |30833 |8031 |<br />  [java] ehcache 1.2 |8753 |7072 |3479 |<br />  [java] jcs 1.2.7.0 |8806 |9522 |4097 |<br />  [java] ---------------------------------------------------------------</pre>
<img src ="http://www.blogjava.net/anymobile/aggbug/55186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-06-26 17:17 <a href="http://www.blogjava.net/anymobile/articles/55186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置Apache，支持WAP OTA</title><link>http://www.blogjava.net/anymobile/articles/46103.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Sun, 14 May 2006 11:10:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/46103.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/46103.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/46103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/46103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/46103.html</trackback:ping><description><![CDATA[
		<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作者：徐建祥（<a href="mailto:netpirate@gmail.com"><font color="#1a8bc8">netpirate@gmail.com</font></a>）</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时间：</span>
						<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
						<st1:chsdate isrocdate="False" islunardate="False" day="5" month="1" year="2006" w:st="on">
								<span lang="EN-US">2004/12/15<br /></span>
						</st1:chsdate>
						<span lang="EN-US">
								<?xml:namespace prefix = o /?>
								<o:p>来自：<a href="http://www.anymobile.org">http://www.anymobile.org</a><br /></o:p>
						</span>
				</p>
		</span>
		<br />Apache 是一个优秀的应用服务器程序，已经提供了对<strong>一般</strong>WAP的支持。 
<p>如果你不确定你的Apache是否配置好了WAP支持，可以看一下Apache的配置文件"mime.types"。如果配置文件中这么一行：</p><p>text/vnd.wap.wml                                      wml</p><p>如果没有的话，也不用着急，加上这一行就行了。如果你要配置全面一些的话还要加上以下几行：</p><p>image/vnd.wap.wbmp                                 wbmp<br />text/vnd.wap.wmls                                     wmls<br />application/vnd.wap.wmlc                           wmlc<br />application/vnd.wap.wmlscriptc                   wmlsc<br />text/vnd.wap.wmlscript                              wsc<br />text/vnd.wap.wmlscript                              wmlscript</p><p>修改好以后，重新启动Apache就可以了。</p><p>如果要系统支持index.wml的话，还得配置Apache的httpd.conf，类似添加index.php的配置了，略。</p><p>只所以说支持的是一般WAP，像一些安装文件jar，jad，sis之类的安装文件就没有默认支持。</p><p>如果要使Apache支持OTA（WAP PUSH）下载的话，还得在mime.types中添加下面几行：</p><p>AddType image/vnd.nokia.ota-bitmap ota<br />AddType text/vnd.sun.j2me.app-descriptor jad<br />AddType application/java-archive jar<br />AddType application/vnd.Nokie.ringing-tone rng<br />AddType application/vnd.symbian.install sis</p><p>（不加的话，下载类似sis的安装文件会直接打开该文件，而不会直接执行。）</p><p>更详细的文件类型配置如下：<br />AddType text/vnd.sun.j2me.app-descriptor jad<br />AddType application/java-archive jar<br />AddType text/vnd.wap.wml wml<br />AddType audio/amr amr<br />AddType audio/midi mid<br />AddType audio/midi midi<br />AddType application/vnd.Nokie.ringing-tone rng<br />AddType application/vnd.symbian.install sis<br />AddType application/vnd.wap.wmlc wmlc<br />AddType text/vnd.wap.wmlscript wmls<br />AddType text/vnd.wap.wmlscript wmlsc<br />AddType application/vnd.wap.sic sic<br />AddType text/vnd.wap.si si<br />AddType text/vnd.wap.sl sl<br />AddType application/vnd.wap.slc slc<br />AddType text/x-vCalendar vcs<br />AddType text/v-vCard vcf<br />AddType application/vnd.nokia.gamedata nqd<br />AddType application/x-nokiagamedata ngd<br />AddType image/vnd.wap.wmbp wbmp<br />AddType image/x-bmp bmp<br />AddType image/x-epoc-mbm mbm<br />AddType image/vnd.nok-3dscreensaver n3a<br />AddType text/x-co-desc cod<br />AddType image/vnd.nok-oplogo-colornokia-op-logo nok<br />AddType application/x-pmd .pmd<br />AddType audio/vnd.qcelp .qcp<br />AddType application/x-smaf .mmf<br />AddType application/vnd.smaf </p><p>保存后，重启Apache，OK！</p><img src ="http://www.blogjava.net/anymobile/aggbug/46103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-05-14 19:10 <a href="http://www.blogjava.net/anymobile/articles/46103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Axis组件构建SOAP服务</title><link>http://www.blogjava.net/anymobile/articles/46102.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Sun, 14 May 2006 11:07:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/46102.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/46102.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/46102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/46102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/46102.html</trackback:ping><description><![CDATA[
		<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作者：徐建祥（<a href="mailto:netpirate@gmail.com"><font color="#1a8bc8">netpirate@gmail.com</font></a>）</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时间：</span>
						<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
						<st1:chsdate w:st="on" year="2006" month="1" day="5" islunardate="False" isrocdate="False">
								<span lang="EN-US">2004/09/03<br /></span>
						</st1:chsdate>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						<span lang="EN-US">
								<?xml:namespace prefix = o /?>
								<o:p>来自：http://www.anymobile.org<br /><br />soap 应用结构图：<br /><img src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/o_SOAP.jpg" /><br /></o:p>
						</span>
				</p>
		</span>
		<br />1、安装App Server 
<div>     Tomcat/JRun...</div><div>2、安装/解压Axis组件/包</div><div>     Tomcat：将Axis解压到webapps下</div><div>     JRun：将Axis随便解压到某个目录下，然后将Axis发布成Server的一个Web Application</div><div>3、<font face="宋体"><a href="http://localhost:8080/axis/">http://localhost:8080/axis/</a> 可以正常访问了吧</font></div><div><font face="宋体">   <a href="http://localhost:8080/axis/services/">http://localhost:8080/axis/services/</a> 发现少了几个包?按照提示到google上搜了下载，^_^</font></div><div>jaf-1_0_2.zip <br />See <a href="http://java.sun.com/products/javabeans/glasgow/jaf.html">http://java.sun.com/products/javabeans/glasgow/jaf.html</a><br />javamail1_1_3.zip<br />See <a href="http://xml.apache.org/security/">http://xml.apache.org/security/</a><br />jaxrpc.jar and saaj.jar 。。。 。。。</div><div>4、在Axis上添加个Service<br />a. {Axis}/WEB-INF/deploy.wsdd：</div><div><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">deployment </span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://xml.apache.org/axis/wsdd/"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    xmlns:java</span><span style="COLOR: #0000ff">="http://xml.apache.org/axis/wsdd/providers/java"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">service </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="PhoenixService"</span><span style="COLOR: #ff0000"> provider</span><span style="COLOR: #0000ff">="java:RPC"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="className"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="com.newpalm.phoenixservice.PhoenixService"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="allowedMethods"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="*"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">service</span><span style="COLOR: #0000ff">&gt;</span></div></div><div>b. {Axis}/WEB-INF/server-config.wsdd<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">service </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="PhoenixService"</span><span style="COLOR: #ff0000"> provider</span><span style="COLOR: #0000ff">="java:RPC"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="allowedMethods"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="*"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="className"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="com.newpalm.phoenixservice.PhoenixService"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">service</span><span style="COLOR: #0000ff">&gt;</span></div>c. 访问<span style="COLOR: #008000; FONT-FAMILY: 宋体"><a href="http://***.**.**.**:8100/axis/services/PhoenixService?wsdl">http://localhost:8080/axis/services/PhoenixService?wsdl</a>，<font color="#000000">看到什么了，嗬嗬</font></span><br />5、如果PhoenixService.java中有个简单的hello方法，返回一个字串</div><div>访问<a href="http://***.**.**.**:8100/axis/services/PhoenixService?method=hello&amp;chm=Jane">http://<font face="宋体">localhost:8080</font>/axis/services/PhoenixService?method=hello&amp;chm=Jane</a> ，正常</div><div>再访问 <a href="http://localhost:8080/axis/services/PhoenixService?method=hello&amp;chm">http://<font face="宋体">localhost:8080</font>/axis/services/PhoenixService?method=hello&amp;chm</a>=徐，无法显示了，<font face="宋体">:")</font></div><div>嗬嗬，这时候就需要创建一个SOAP Client测试用了</div><div>6、使用JBuilder9创建SOAP Client：</div><div>new-&gt;web services-&gt;import a web service</div><div>输入上面的wsdl地址，一路next即可。看看PhoenixServiceServiceTestCase.java的main方法。</div><div>（注，以PhoenixService为例）</div><div>7、可能你准备传输的是一个对象，这时候就要用到新的配置和对象序列化（implements java.io.Serializable），如：</div><div> </div><div><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">typeMapping <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #ff0000">deserializer</span><span style="COLOR: #0000ff">="org.apache.axis.encoding.ser.BeanDeserializerFactory"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  encodingStyle</span><span style="COLOR: #0000ff">=http://schemas.xmlsoap.org/soap/encoding/ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #ff0000">qname</span><span style="COLOR: #0000ff">="ns1:Memo"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  serializer</span><span style="COLOR: #0000ff">="org.apache.axis.encoding.ser.BeanSerializerFactory"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  type</span><span style="COLOR: #0000ff">="java:com.newpalm.phoenixservice.Theme"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  xmlns:ns1</span><span style="COLOR: #0000ff">="phoenixservice.newpalm.com"</span><span style="COLOR: #ff0000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">/&gt;</span></div><br /></div><div><span style="COLOR: #0000ff; FONT-FAMILY: 宋体"><font color="#000000"><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Theme </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> java.io.Serializable<br /><img id="Codehighlighter1_51_55_Open_Image" onclick="this.style.display='none'; Codehighlighter1_51_55_Open_Text.style.display='none'; Codehighlighter1_51_55_Closed_Image.style.display='inline'; Codehighlighter1_51_55_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_55_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_55_Closed_Text.style.display='none'; Codehighlighter1_51_55_Open_Image.style.display='inline'; Codehighlighter1_51_55_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_51_55_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_51_55_Open_Text"><span style="COLOR: #000000">{<img src="http://www.blogjava.net/images/dot.gif" />}</span></span></div><br />8、</font></span><span style="COLOR: #0000ff; FONT-FAMILY: 宋体"><font color="#000000">SOAP数据接口搞定！</font></span></div><img src ="http://www.blogjava.net/anymobile/aggbug/46102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-05-14 19:07 <a href="http://www.blogjava.net/anymobile/articles/46102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SVN(Subversion)－－源码版本控制工具</title><link>http://www.blogjava.net/anymobile/articles/34393.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Wed, 08 Mar 2006 16:57:00 GMT</pubDate><guid>http://www.blogjava.net/anymobile/articles/34393.html</guid><wfw:comment>http://www.blogjava.net/anymobile/comments/34393.html</wfw:comment><comments>http://www.blogjava.net/anymobile/articles/34393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anymobile/comments/commentRss/34393.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anymobile/services/trackbacks/34393.html</trackback:ping><description><![CDATA[<SPAN lang=EN-US><SPAN class=MsoHyperlink><SPAN style="mso-no-proof: yes">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt" align=center><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN><STRONG><FONT color=#000080 size=5>SVN(Subversion)－－源码版本控制工具</FONT><BR><BR></STRONG></SPAN><BR>
<P></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">作者：徐建祥（<A href="mailto:netpirate@gmail.com"><FONT color=#1a8bc8>netpirate@gmail.com</FONT></A>）<BR><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时间：</SPAN><?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chsdate IsROCDate="False" IsLunarDate="False" Day="5" Month="1" Year="2006" w:st="on"><SPAN lang=EN-US>2006/03/09<BR></P></SPAN></st1:chsdate>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o /><o:p>来自：http://www.anymobile.org</o:p></SPAN><BR><BR>1、何谓SVN ..........................................................................1<BR>2、安装使用TortoiseSVN ...........................................................1<BR>3、Eclipse的SVN 插件：Subclipse ...............................................2</SPAN></SPAN></SPAN><A name=_Toc124219583><SPAN lang=EN-US><FONT size=5><STRONG><BR><BR>1</STRONG></FONT></SPAN></A><FONT size=5><STRONG><SPAN style="mso-bookmark: _Toc124219583"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN></SPAN>何谓 SVN</STRONG></FONT><BR><BR>SVN (Subversion)，是开源的源码版本控制的工具，是CVS的极具竞争力的替代品。它支持CVS所缺少的一些重要特性，比如版本化的重命名、目录和元数据，还支持原子提交和通过HTTP/HTTPS的远程访问。越来越多的开源项目使用SVN来控制版本，Project JClaim 就是这样的开源软件。<BR><BR><STRONG><FONT size=5>2、安装使用 TortoiseSVN</FONT></STRONG><BR><BR>安装SVN&nbsp;客户端软件 TortoiseSVN 1.3.2，支持中文：<BR><BR>1、从TortoiseSVN网站(<SPAN lang=EN-US><A href="http://tortoisesvn.sourceforge.net/"><FONT color=#1a8bc8>http://tortoisesvn.sourceforge.net/</FONT></A></SPAN>)下载安装程序；<BR>2、安装到本地，并重启系统；<BR>3、右键点击某个文件夹，就可以看到如下的菜单；<BR><IMG alt="" hspace=0 src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/r_TortoiseSVN_03.jpg" align=baseline border=0><BR><BR>4、选择check out后出现选择框，以 JClaim 为例，输入svn地址<FONT face="Courier New"><A href="https://svn.sourceforge.net/svnroot/jclaim"><FONT color=#1a8bc8>https://svn.sourceforge.net/svnroot/jclaim</FONT></A>&nbsp;和本地存储地址；<BR><IMG alt="" hspace=0 src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/r_TortoiseSVN_01.jpg" align=baseline border=0><BR><BR></FONT>5、项目文件全部取出后，可以看到目录名的图标全部变了；<BR><IMG alt="" hspace=0 src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/r_TortoiseSVN_00.jpg" align=baseline border=0><BR><BR>SVN 中导出和取出的区别：<BR>导出(export)：只是把在SVN服务器上的源码复制一份，没有.svn文件夹。适用于发表源码包。<BR>取出(checkout)：是从SVN服务器把源码复制到本地机器上创建一份工作版本，目录内有.svn文件夹，见上图。<BR><BR>6、右键点击check out后的文件夹，右键菜单就换成了Update 和 Commit。<BR><IMG alt="" hspace=0 src="http://www.blogjava.net/images/blogjava_net/anymobile/8280/r_TortoiseSVN_04.jpg" align=baseline border=0><BR><BR>关于SVN的导入源码等操作，请参考下面这篇来自 openology.org 文章：<BR>在windows下运用Subversion(SVN)服务器 <A href="http://openology.org/blog/blogs/index.php/kc/2005/04/16/a_uwindowsac_ei_c_usubversion_svn_a_a_ia">http://openology.org/blog/blogs/index.php/kc/2005/04/16/a_uwindowsac_ei_c_usubversion_svn_a_a_ia</A><BR><BR><FONT size=5><STRONG>3、Eclipse的 SVN 插件：Subclipse<BR></STRONG></FONT><BR>Subclipse是Eclipse IDE的SVN插件，安装步骤如下：<BR><BR>打开 Eclipse的 Help -&gt; Software Updates -&gt;&nbsp;Find and Install... 菜单下，选择Search，查到要安装的新特性，并以&nbsp;<A href="http://subclipse.tigris.org/update">http://subclipse.tigris.org/update</A> 作为URL添加New Remote site，一路Next即可完成安装。<BR><BR>其它配置，暂略。<BR><BR>资源：<BR><BR>SVG.org <A href="http://subversion.tigris.org/">http://subversion.tigris.org/</A><BR></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 2"><SPAN lang=EN-US><A href="http://tortoisesvn.sourceforge.net/downloads?PHPSESSID=0b3f4efc43bfff837a754ec895da9cde"><SPAN style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none">TortoiseSVN</SPAN></A> <st1:chsdate IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899" w:st="on">1.3.2&nbsp;<A href="http://tortoisesvn.sourceforge.net/">http://tortoisesvn.sourceforge.net/</A><BR></st1:chsdate></SPAN><SPAN lang=EN-US>Subversion (Version Control for Source Code)&nbsp;<A href="http://sourceforge.net/docs/E09"><FONT color=#1a8bc8>http://sourceforge.net/docs/E09</FONT></A></SPAN></P><img src ="http://www.blogjava.net/anymobile/aggbug/34393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anymobile/" target="_blank">Xu Jianxiang</a> 2006-03-09 00:57 <a href="http://www.blogjava.net/anymobile/articles/34393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>