<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>lk215215</title>
    <description></description>
    <link>http://lk215215.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Oracle中rownum的使用</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/214822" style="color:red;">http://lk215215.javaeye.com/blog/214822</a>&nbsp;
          发表时间: 2008年07月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Oracle中的rownum可以使用来取一定区间的数据，在实际应用中常在分页中使用到，但是在使用中存在的一些问题需要注意.<br />例如:数据库中存在20条数据。<br />a. select * from × where rownum >=1;<br />b. select * from × where rownum >=2;<br />c. select * from × where rownum &lt;=10;<br />a. 语句执行返回结果为20条数据.<br />b. 语句执行返回结果为0条数据.<br />c. 语句执行返回结果为10条数据.<br />有上面执行结果可以看出语句b中使用rownum不正确.分析得知rownum为输出时产生的顺序编号,<br />第一条数据rownum为1不满足条件未输出,第二条数据rownum重新开始计算由1重新开始.所以导致了b语句执行的结果为0条数据.
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/214822#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Jul 2008 10:52:38 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/214822</link>
        <guid>http://lk215215.javaeye.com/blog/214822</guid>
      </item>
      <item>
        <title>配置不同网络IP</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/174407" style="color:red;">http://lk215215.javaeye.com/blog/174407</a>&nbsp;
          发表时间: 2008年03月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          （1）在公司时，首先修改笔记本的网络设置，然后在“命令行提示符”中输入：<br /><br />　　netsh -c interface dump > c：\configs\officeinterface.txt<br /><br />　　这样就将办公室的网络设置保存到了C：\Configs\Officeinterface.txt文件中。<br /><br />（2）回到家后，再次修改笔记本的网络设置，然后在“命令行提示符”中输入：<br /><br />　　netsh -c interface dump > c：\configs\homeinterface.txt<br /><br />　　这样就把家里的网络设置保存到了c：\configs\ homeinterface.txt文件中。<br /><br />（3）这样再加到公司时，只需在“命令行提示符”中输入：<br /><br />　　netsh -f c：\configs\officeinterface.txt<br /><br />　　笔记本的网络设置就变成适合公司的设置了。而回到家时，只要输入：<br /><br />　　netsh -f c：\configs\homeinterface.txt<br /><br />　　则又改回家里的网络设置。
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/174407#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 21 Mar 2008 10:34:07 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/174407</link>
        <guid>http://lk215215.javaeye.com/blog/174407</guid>
      </item>
      <item>
        <title>ORACLE--SQL*PLUS的环境命令</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/164990" style="color:red;">http://lk215215.javaeye.com/blog/164990</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、环境设置命令<br />  1、SET命令<br />  使用SET命令可以改变SQL*PLUS环境特征参数的值。其命令格式是：SET&lt;选项>&lt;值或开关状态>其中选项是指环境参数的名称，&lt;值或开关状态>指该参数被设置成ON还是OFF，或是某个具体的值。<br />  例1、设置自动提交状态。<br />  SQL>SET AUTOCOMMIT ON<br />  下面给出几个常用的环境参数设置（其中有下划线者为系统的缺省值）：<br />  （1）SET AUTOCOMMIT{OFF|ON|IMMEDIATE}<br />  OFF——关闭自动提交功能。<br />  ON或IMM——打开自动提交功能。<br />  （2）SET ECHO{OFF|ON}<br />  ON——SQL*PLUS执行命令文件时，将命令本身显示在屏幕上。<br />  OFF——执行命令文件时，命令本身不显示在屏幕上。<br />  （3）SET FEEDBACK{OFF|ON}<br />  ON——查询结束时，给出查询结果的记录数信息。<br />  OFF——查询结束时，没有查询结果的记录数信息。<br />  （4）SET HEADING {OFF|ON}<br />  ON——各列的标题（包括文字和下划线）在结果报表上显示。<br />  OFF——各列的标题不在报表上显示。<br />  （5）SET LINESIZE{80|n}<br />  该项设置SQL*PLUS的行宽，即一行所能显示的最大字符数。当用SQL*PLUS命令制图报表标题为居中或右对齐时，系统在计算标题的合适位置时也要用到这个参数。该参灵敏的缺省值为80个字符，最大值为999。<br />  （6）SET PAGESIZE{14|n}<br />  该参数设置每页输出的行数，包括TTITLE（头标题）、BTITLE（底标题）、COLUMN（列标题）和空行。该项缺省值是每页14行。<br />  （7）SET PAUSE{OFF|ON|text}<br />  ON——在显示输出每一页后，等待用户按RETURN键继续显示。<br />  OFF——表示每页显示之间不停顿。<br />  Text——在显示每一页后停顿，等待用户按RETUNR键，并在屏幕下方显示text的提示信息。<br />  （8）SET BUFFER {buffer}<br />  设置{buffer}为当前的命令缓冲区。通常情况下，SQL缓冲区为当前命令缓冲区。<br />  例2、建立名为A的缓冲区：<br />  SQL>SET BUFFER A<br />由于SQL缓冲区只能存放一条SQL命令，所以可以用SET BUFFER命令设置其他命令缓冲区，来存放多条SQL命令和SQL*PLUS命令。<br />  用户可以使用SQL*PLUS的行编辑——LIST，DEL，APPEND，CHANGE等命令对该缓冲区中的所有行操作，也可以用SAVE命令将该缓冲区中的内容保存到一个文件中，并可以用GET命令将文件中的内容取回到缓冲区。但该命令缓冲区不能直接执行SQL或SQL*PLUS命令，而是通过将其中的内容保存到文件中，再使用START命令来完成。不论是来自于命令行还是命令文件，只要执行一个SQL命令，命令缓冲区就被自动置回为SQL缓冲区。但其他缓冲区中的内容依然存在，可以再次使用SET BUFFER命令进入所需要的缓冲区。SET命令更详细的说明可以参见本套书的第二册《ORACLE7技术手册》的SQL*PLUS命令一章。SET命令对环境特征参数的改变只在本次会话期间内有效，即一旦退出SQL*PLUS，再进入时，你所设置的参数值全部恢复成系统的缺省值。如果需要经常设置某些参数，可以在该用户的当前目录下建立名为LOGIN.SQL的文件，并将参数设置命令写入其中。此外还可以将SQL命令、PL/SQL过程块或SQL*PLUS命令定入该文件中。每次用户启动SQL*PLUS，系统都会自动寻找用户当前路径下的LOGIN.SQL文件，并执行文件中的内容。若对已有的LOGIN.SQL文件进行了修改，原有的内容将会保存在LOGIN.OLD文件中。用户可以通过LOGIN.SQL文件来设置自己的SQL*PLUS环境。<br />   2、SHOW命令<br />    SHOW命令可以显示SQL*PLUS的一个或全部特征参数的值。其命令格式是：<br />    SHOW{ALL|选项}<br />  例3、<br />    SQL>SHOW ALL<br />    该命令显示SQL*PLUS全部环境参数的值。<br />  例4、<br />    SQL>SHOW AUTOCOMMIT<br />    该命令显示自动提交状态的设置情况。<br />  例5、<br />    SQL>SHOW USER<br />    该命令将显示当前的用户标识，即当前的用户名。<br />  例6、<br />    SQL>SHOW TTITLE<br />    该命令显示当前报表使用的头标题的内容。
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/164990#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Feb 2008 10:01:37 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/164990</link>
        <guid>http://lk215215.javaeye.com/blog/164990</guid>
      </item>
      <item>
        <title>Oracle双机热备方法</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/164973" style="color:red;">http://lk215215.javaeye.com/blog/164973</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Standby Database<br />创建 Standby Database 要求<br />1 、 Primary 与 standby 数据库所在主机上的 oracle server 及操作系统版本必须相同，且具有相同的补丁；<br />2 、 primary 数据库必须为 archive mode ； Standby Database 也必须为 archive mode ；<br /><br />创建 standby 数据库<br />1 、 首先查看 Primary Database 的归档模式（ svrmgr>archive log list ）若为无归档模式，将数据库转换为自动归档方式，方法如下：<br />先关闭 Primary Database ：<br />svrmgr>shutdown immediate<br />再以 mount 方式启动 Primary Database ：<br />svrmgr>connect internal/password<br />svrmgr>startup mount<br />svrmgr>alter database &lt;dbname> archivelog<br />svrmgr>shutdown<br /><br />2 、 修改 init%oracle_sid%.ora 文件中的参数， 加入 :<br />log_archive_start = true # if you want automatic archiving<br />log_archive_dest=%ORACLE_HOME%\database\archive<br />log_archive_format = %ORACLE_SID%%S.%T 其中 log_archive_dest<br />是指归档日志文件存放的位置，可根据实际情况来设定，如 E 盘空间较<br />大，可以设为： log_archive_dest=e:\oracle\database\archive<br /><br />3 、 复制 Primary Database 的 init%oracle_sid%.ora 和对应的 Password 文件 到 Standby Database 上的目录 %oracle_home%\database ；根据实际情况修改 Standby Database 上的对应 init%oracle_sid%.ora 中的参数：<br />log_archive_dest ；<br /><br />4 、 在 Standby Database 位于的主机上创建实例，实例名称同 Primary Database, 例如：<br />Oradim80 –new –sid SID_NAME –intpwd oracle –startmode auto –pfile=c:\orant\database\init%oracle_sid%.ora;<br /><br />5 、 在 Primary Database 上为 Standby 创建 Controlfile, 将 controlfile 拷贝至 Standby Database 的确定位置，操作如下：<br />svrmgr>alter database create standby controlfile as &lt;filename>;<br /><br />6 、 在 Primary Database 上将联机日志归档，<br />svrmgr>alter system archive log current;<br /><br />7 、 关闭 Primary Database,<br />svrmgr>shutdown immediate<br /><br />8 、 从 Primary Database 上将所有数据文件、日志文件、归档日志文件（不包括控制文件）拷贝至 Standby Database 的确定位置；<br /><br />9 、 以 nomount 方式启动 Standby Database ：<br />svrmgr>startup nomount<br />svrmgr>alter database mount standby database[execlusive/parallel]<br /><br />10 、 同步 Standby Database ：<br />svrmgr>recover standby database;<br />11 、恢复 Primary Database 启动状态。<br />维护 standby 数据库<br /><br />1 、 将 primary 数据库所产生的 archive log 文件定期传到 standby 数据库的确定位置；手工的做恢复，使 standby 数据库与 primary 数据库保持同步。<br />svrmgr> set autorecovery on;<br />svrmgr> connect internal/password;<br />svrmgr> startup nomount pfile=&lt;c:\orant\database\initswcw.ora>;<br />svrmgr> alter database mount standby database;<br />svrmgr> recover standby database;<br />svrmgr> shutdown<br /><br />2 、 当 primary 数据库失败时，将 standby 数据库激活：取消 (cancel) 恢复执行以下操作：<br />svrmgr> connect internal/password;<br />svrmgr> startup nomount pfile=&lt;c:\orant\database\initswcw.ora>;<br />svrmgr> alter database mount standby database;<br />svrmgr>alter database activate standby database ；<br />shutdown standby 数据库；<br />svrmgr>shutdown immediate<br />重起 Standby Database ；<br />svrmgr>startup
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/164973#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Feb 2008 09:24:39 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/164973</link>
        <guid>http://lk215215.javaeye.com/blog/164973</guid>
      </item>
      <item>
        <title>Oracle优化经典文章---磁盘i/o和碎片篇</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/164971" style="color:red;">http://lk215215.javaeye.com/blog/164971</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          不平衡的磁盘I/O和撤消会妨碍性能。这里讨论如何正确定位和配置一些与Oracle数据库相关的物理数据文件。 主要讨论以下内容：<br />[1] 使用磁盘阵列<br />    选择合理的RAID方式。<br /><br />[2] 在可用的硬盘之间分布关键数据文件<br />    要特别注意的文件：system表空间、TEMPORARY表空间、回滚段或UNDO表空间、联机重做日志文件（最好放在最快的磁盘上）、放在ORACLE_HOME文件夹下的关键Oracle文件、经常被访问的表的数据文件、经常被访问的索引的数据文件<br /><br />    经验总结：把上面提到的数据文件分布在各个可用的磁盘上<br />              把数据文件和索引文件分开放置<br />              对于经常连接的表，把他们的数据和索引表空间分开<br />              把控制文件的多个备份存储到不同的磁盘和控制器上<br /><br />    避免I/O磁盘争用，用下面的查询确定文件的I/O问题<br />         select name,phyrds,phywrts,readtim,writetim<br />         from v$filestat a,v$dbfile b<br />         where a.file# = b.file#<br />         order by readtim desc<br />         说明：在磁盘上的物理写入和读取次数上如果出现很大的差别，就表明肯定有哪个磁盘负载过多！<br />    如果出现磁盘负载不平衡，可以通过移动数据文件来均衡文件I/O：<br />         alter tablespace tablespace_name offline;<br />         $cp /disk1/a.dbf /disk2/a.dbf;<br />         alter tablespace tablespace_name rename datafile '/disk1/a.dbf' to '/disk2/a.dbf';<br />         alter tablespace tablespace online;<br />         $rm /disk1/a.dbf<br /><br />[3] 使用本地托管的表空间<br /><br />[4] 在大型表上使用表分区<br /><br />[5] 使用索引分区<br />    索引分区与分区表拥有同样的优点。如果正确执行，则通过访问索引的小片段而不是整个表上的索引可以提高性能。<br /><br />[6] 了解碎片的概念以及如何消除碎片<br />    经验总结：使用本地托管的统一扩展表空间<br />              在字典托管的表空间中使用统一的扩展大小（除了SYSTEM表空间外）<br />              使扩展尺寸是数据库块尺寸的倍数<br />              不要在字典托管的表空间上设定除0以外的任何PCTINCRREASE值<br />              把表放在有合适扩展大小的表空间中<br />              正确设定PCTINCREASE<br />              避免使用跨越多个不连续的数据文件的位图索引<br /><br />[7] 使用撤消管理<br />    如果想使大量的INSERT、UPDATE、DELETE操作速度更快，可以增大日志文件大小（可以增加用于介质恢复的时间），并确保这些文件在最快的磁盘上。<br /><br />[8] 使用回滚段<br />    下面查询显示回滚信息：<br />        select a.name,b.extents,b.rssize,b.xacts,b.waits,b.gets,optsize,stauts<br />        from v$rollname a,v$rollstat b<br />        where a.usn = b.usn;<br />        说明：如果xacts（活动事务）经常超出1，就需要增加回滚段的数目，以避免可能出现的争用。<br />    把大的事务隔离到它们自己的回滚段上，用下面的语句：<br />        commit;<br />        set transation use rollback segment roll_segment_name;<br />        delete from big_table;<br />        commit;<br /><br />[9] 使用更简单的方法：undo表空间<br />    Oracle 9i新引入的功能。<br /><br />[10]通过内存排序来减少磁盘I/O<br /><br />[11]在不同的磁盘和控制器上存放多个控制文件<br /><br />[12]使用裸设备改善有写操作频繁的数据的I/O
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/164971#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Feb 2008 09:23:22 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/164971</link>
        <guid>http://lk215215.javaeye.com/blog/164971</guid>
      </item>
      <item>
        <title>FLEX:数字时钟</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/149416" style="color:red;">http://lk215215.javaeye.com/blog/149416</a>&nbsp;
          发表时间: 2007年12月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          首先，需要建一个Flex工程，打开mxml文件加入代码如下：<br />  <pre name="code" class="java">
  &lt;?xml version="1.0" encoding="utf-8"?>
  &lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
	&lt;mx:Text id="clock" text="" creationComplete="this.init();" 
       right="10" height="20" width="120" top="10"/>
    &lt;mx:Script>
    	&lt;![CDATA[
    	import flash.utils.Timer;
        import flash.events.TimerEvent;
 
        private var timer:Timer;
              
        private function init():void {
            this.timer = new Timer(1000);
            this.timer.addEventListener(TimerEvent.TIMER, this.resetNow);
            this.timer.start();
        }
        
        
        private function resetNow(event:TimerEvent):void {
            this.clock.text = new Date().toLocaleTimeString();
        }

    	]]&gt;
    &lt;/mx:Script>
&lt;/mx:Application>
  </pre> <br /> 即可实现数字时钟的效果，更新时间设置为1000ms（1s）
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/149416#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 19 Dec 2007 14:47:52 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/149416</link>
        <guid>http://lk215215.javaeye.com/blog/149416</guid>
      </item>
      <item>
        <title>Apache Ant使用指南</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/138298" style="color:red;">http://lk215215.javaeye.com/blog/138298</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="copy"><strong>版权声明：</strong>原创作品，允许转载，转载时请务必以超链接形式标明文章 <a href="http://zhangjunhd.blog.51cto.com/113473/26131" target="_blank" style="text-decoration: underline;">原始出处</a> 、作者信息和本声明。否则将追究法律责任。<a href="http://zhangjunhd.blog.51cto.com/113473/26131">http://zhangjunhd.blog.51cto.com/113473/26131</a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><em style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">本文是对</span><span lang="EN-US">Apache Ant</span></em><em style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">官方使用手册的理解、翻译和总结。</span><span lang="EN-US"><o:p></o:p></span></em></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">author: ZJ <st1:chsdate isrocdate="False" month="5" w:st="on" islunardate="False" day="9" year="2007">07-5-9</st1:chsdate></font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Blog: </font><font size="2" color="#800080"><a href="http://zhangjunhd.blog.51cto.com/" target="_blank">http://zhangjunhd.blog.51cto.com/</a></font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">1</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">．构建</span><span lang="EN-US">ant</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">环境</span><span lang="EN-US"><o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">要使用</span><span lang="EN-US">ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">首先要构建一个</span><span lang="EN-US">ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">环境，步骤很简单：</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">1)</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">安装</span><span lang="EN-US">jdk</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，设置</span><span lang="EN-US">JAVA_HOME ,PATH ,CLASS_PATH</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">2)</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">下载</span><span lang="EN-US">ant </span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">地址</span><span lang="EN-US"><a href="http://www.apache.org/" target="_blank">www.apache.org</a></span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">3)</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">解压</span><span lang="EN-US">ant </span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">你得到的是一个压缩包，解压缩它，并把它放在一个尽量简单的目录，例如</span><span lang="EN-US">D:\ant-1.7</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">4)</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">设置</span><span lang="EN-US">ANT_HOME PATH</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">中添加</span><span lang="EN-US">ANT_HOME</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">目录下的</span><span lang="EN-US">bin</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">目录。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">5)</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">测试一下你的设置。开始</span><span lang="EN-US">--&gt;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">运行</span><span lang="EN-US">--&gt;cmd</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">进入命令行</span><span lang="EN-US">--&gt;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">键入</span><span lang="EN-US"> ant </span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">回车</span><span lang="EN-US">,</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">如果看到</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Buildfile: build.xml does not exist!</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Build failed</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;"><font size="2">配置成功。</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">2</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">．</span><span lang="EN-US">ant</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">命令行使用举例</span><span lang="EN-US"><o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">1</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）</span><span lang="EN-US">ant</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">使用当前目录下的</span><span lang="EN-US">build.xml</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">运行</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，执行缺省的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">2</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）</span><span lang="EN-US">ant -buildfile test.xml</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">使用当前目录下的</span><span lang="EN-US">test.xml</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">运行</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，执行缺省的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">3</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）</span><span lang="EN-US">ant -buildfile test.xml dist</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">使用当前目录下的</span><span lang="EN-US">test.xml</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">运行</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，执行一个叫做</span><span lang="EN-US">dist</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">4</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）</span><span lang="EN-US">ant -buildfile test.xml -Dbuild=build/classes dist</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">使用当前目录下的</span><span lang="EN-US">test.xml</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">运行</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，执行一个叫做</span><span lang="EN-US">dist</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，并设定</span><span lang="EN-US">build</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性的值为</span><span lang="EN-US">build/classes</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">3</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">．编写</span><span lang="EN-US">build.xml <o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">buildfile</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是用</span><span lang="EN-US">XML</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">写的。每个</span><span lang="EN-US">buildfile</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">含有一个</span><span lang="EN-US">project</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US"> buildfile</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">中每个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">元素可以有一个</span><span lang="EN-US">id</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性，可以用这个</span><span lang="EN-US">id</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">值引用指定的任务。这个值必须是唯一的。（详情请参考下面的</span><span lang="EN-US">Task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">小节）</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">3.1Projects <o:p></o:p></font></span></u></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span lang="EN-US">project</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">有下面的属性：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Attribute</font></span></div>
            </td>
            <td valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(236, 233, 216); border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Description</font></span></div>
            </td>
            <td valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(236, 233, 216); border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Required</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">name</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;"><font size="2">项目名称</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">No</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">default</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">当没有指定</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">时使用的缺省</span><span lang="EN-US">target</span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Yes</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">basedir</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">用于计算所有其他路径的基路径。该属性可以被</span><span lang="EN-US">basedir property</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">覆盖。当覆盖时，该属性被忽略。如果属性和</span><span lang="EN-US">basedir property</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">都没有设定，就使用</span><span lang="EN-US">buildfile</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">文件的父目录。</span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">No</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">一个项目可以定义一个或多个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是一系列你想要执行的。执行</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">时，你可以选择执行哪个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。当没有给定</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">时，使用</span><span lang="EN-US">project</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">default</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性所确定的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">3.2Targets <o:p></o:p></font></span></u></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">可以依赖于其他的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。例如，你可能会有一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">用于编译程序，一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">用于生成可执行文件。你在生成可执行文件之前必须先编译通过，所以生成可执行文件的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖于编译</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">会处理这种依赖关系。</span> </font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">然而，应当注意到，</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">depends</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性只指定了</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">应该被执行的顺序－如果被依赖的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">无法运行，这种</span><span lang="EN-US">depends</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">对于指定了依赖关系的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">就没有影响。</span> </font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">会依照</span><span lang="EN-US">depends</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性中</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">出现的顺序（从左到右）依次执行每个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。然而，要记住的是只要某个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖于一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，后者就会被先执行。</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;target name=&quot;A&quot;/&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;target name=&quot;B&quot; depends=&quot;A&quot;/&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;target name=&quot;C&quot; depends=&quot;B&quot;/&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;target name=&quot;D&quot; depends=&quot;C,B,A&quot;/&gt;</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">假定我们要执行</span><span lang="EN-US">target D</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。从它的依赖属性来看，你可能认为先执行</span><span lang="EN-US">C</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，然后</span><span lang="EN-US">B</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，最后</span><span lang="EN-US">A</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">被执行。错了，</span><span lang="EN-US">C</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖于</span><span lang="EN-US">B</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，</span><span lang="EN-US">B</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖于</span><span lang="EN-US">A</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，所以先执行</span><span lang="EN-US">A</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，然后</span><span lang="EN-US">B</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，然后</span><span lang="EN-US">C</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，最后</span><span lang="EN-US">D</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">被执行。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">只能被执行一次，即时有多个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖于它（看上面的例子）。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">如果（或如果不）某些属性被设定，才执行某个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。这样，允许根据系统的状态（</span><span lang="EN-US">java version, OS, </span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">命令行属性定义等等）来更好地控制</span><span lang="EN-US">build</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的过程。要想让一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">这样做，你就应该在</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">元素中，加入</span><span lang="EN-US">if</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">（或</span><span lang="EN-US">unless</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）属性，带上</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">应该有所判断的属性。例如：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;target name=&quot;build-module-A&quot; if=&quot;module-A-present&quot;/&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;target name=&quot;build-own-fake-module-A&quot; unless=&quot;module-A-present&quot;/&gt;</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">如果没有</span><span lang="EN-US">if</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">或</span><span lang="EN-US">unless</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性，</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">总会被执行。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">可选的</span><span lang="EN-US">description</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性可用来提供关于</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的一行描述，这些描述可由</span><span lang="EN-US">-projecthelp</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">命令行选项输出。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">将你的</span><span lang="EN-US">tstamp task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">（见下文例子）作为一个所谓的初始化</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是很好的做法，其他的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖这个初始化</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。要确保初始化</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是出现在其他</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">依赖表中的第一个</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。在本手册中大多数的初始化</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的名字是</span><span lang="EN-US">&quot;init&quot;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span> </font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">有下面的属性：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Attribute</font></span></div>
            </td>
            <td valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(236, 233, 216); border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Description</font></span></div>
            </td>
            <td valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(236, 233, 216); border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Required</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">name</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的名字</span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Yes</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">depends</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">用逗号分隔的</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的名字列表，也就是依赖表。</span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">No</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">if</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="color: red; font-family: 宋体;">执行</span><span lang="EN-US" style="color: red;">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="color: red; font-family: 宋体;">所需要设定的属性名。</span><span lang="EN-US" style="color: red;"><o:p></o:p></span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">No</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">unless</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="color: red; font-family: 宋体;">执行</span><span lang="EN-US" style="color: red;">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="color: red; font-family: 宋体;">需要清除设定的属性名。</span><span lang="EN-US" style="color: red;"><o:p></o:p></span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">No</font></span></div>
            </td>
        </tr>
        <tr style="">
            <td valign="top" style="border-style: none solid solid; border-color: rgb(236, 233, 216) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 142pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">description</font></span></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">关于</span><span lang="EN-US">target</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">功能的简短描述。</span></font></div>
            </td>
            <td valign="top" style="border-style: none solid solid none; border-color: rgb(236, 233, 216) windowtext windowtext rgb(236, 233, 216); border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 142.05pt; background-color: transparent;" width="189">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">No</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">3.3Tasks <o:p></o:p></font></span></u></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">一个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是一段可执行的代码。</span> <span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">一个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">可以有多个属性（如果你愿意的话，可以将其称之为变量）。属性只可能包含对</span><span lang="EN-US">property</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的引用。这些引用会在</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">执行前被解析。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">下面是</span><span lang="EN-US">Task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的一般构造形式：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;name attribute1=&quot;value1&quot; attribute2=&quot;value2&quot; ... /&gt;</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">这里</span><span lang="EN-US">name</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的名字，</span><span lang="EN-US">attributeN</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是属性名，</span><span lang="EN-US">valueN</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是属性值。</span> <span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">有一套内置的（</span><span lang="EN-US">built-in</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，以及一些可选</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，但你也可以编写自己的</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span> <span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">所有的</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">都有一个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">名字属性。</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">用属性值来产生日志信息。</span> </font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">可以给</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">赋一个</span><span lang="EN-US">id</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;taskname id=&quot;taskID&quot; ... /&gt;</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">这里</span><span lang="EN-US">taskname</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的名字，而</span><span lang="EN-US">taskID</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">是这个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的唯一标识符。通过这个标识符，你可以在脚本中引用相应的</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。例如，在脚本中你可以这样：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;script ... &gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">task1.setFoo(&quot;bar&quot;);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;/script&gt;</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">设定某个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">实例的</span><span lang="EN-US">foo</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性。在另一个</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">中（用</span><span lang="EN-US">java</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">编写），你可以利用下面的语句存取相应的实例。</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">project.getReference(&quot;task1&quot;).</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">注意</span><span lang="EN-US">1</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">：如果</span><span lang="EN-US">task1</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">还没有运行，就不会被生效（例如：不设定属性），如果你在随后配置它，你所作的一切都会被覆盖。</span> </font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">注意</span><span lang="EN-US">2</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">：未来的</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">版本可能不会兼容这里所提的属性，因为很有可能根本没有</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">实例，只有</span><span lang="EN-US">proxies</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">3.4Properties <o:p></o:p></font></span></u></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">一个</span><span lang="EN-US">project</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">可以有很多的</span><span lang="EN-US">properties</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。可以在</span><span lang="EN-US">buildfile</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">中用</span><span lang="EN-US">property task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">来设定，或在</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">之外设定。一个</span><span lang="EN-US">property</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">有一个名字和一个值。</span><span lang="EN-US">property</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">可用于</span><span lang="EN-US">task</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的属性值。这是通过将属性名放在</span><span lang="EN-US">&quot;${&quot;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">和</span><span lang="EN-US">&quot;}&quot;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">之间并放在属性值的位置来实现的。例如如果有一个</span><span lang="EN-US">property builddir</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的值是</span><span lang="EN-US">&quot;build&quot;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，这个</span><span lang="EN-US">property</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">就可用于属性值：</span><span lang="EN-US">${builddir}/classes</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。这个值就可被解析为</span><span lang="EN-US">build/classes</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">内置属性：</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">如果你使用了</span><span lang="EN-US">&lt;property&gt; task </span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">定义了所有的系统属性，</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">允许你使用这些属性。例如，</span><span lang="EN-US">${os.name}</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">对应操作系统的名字。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">要想得到系统属性的列表可参考</span><span lang="EN-US">the Javadoc of System.getProperties</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">除了</span><span lang="EN-US">Java</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的系统属性，</span><span lang="EN-US">Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">还定义了一些自己的内置属性：</span><span lang="EN-US"> </span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">basedir project</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">基目录的绝对路径</span><span lang="EN-US"> (</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">与</span><span lang="EN-US">&lt;project&gt;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">basedir</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性一样</span><span lang="EN-US">)</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">ant.file buildfile</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的绝对路径。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">ant.version Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的版本。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">ant.project.name </span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">当前执行的</span><span lang="EN-US">project</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的名字；由</span><span lang="EN-US">&lt;project&gt;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">name</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">属性设定。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">ant.java.version Ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">检测到的</span><span lang="EN-US">JVM</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的版本；</span> <span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">目前的值有</span><span lang="EN-US">&quot;1.1&quot;, &quot;1.2&quot;, &quot;1.3&quot; and &quot;1.4&quot;</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">4</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">．</span><span lang="EN-US">ant</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">中的</span><span lang="EN-US">HelloWorld<o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">1</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）首先你要知道你要干什么，我现在想做的事情是：</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">-</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">编写一些程序</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">-</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">编译它们</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">-</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">把它打包成</span><span lang="EN-US">jar</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">包</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">-</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">把他们放在应该放置的地方</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">-</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">运行它们</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">这里为了简单起见，只写一个程序，就是</span><u><span lang="EN-US">HelloWorld.java</span></u><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">程序代码如下：</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">package test.ant;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">public class HelloWorld{</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">&nbsp;</span>public static void main(String[] args){</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US"><span style="">&nbsp; </span>System.out.println(&quot;Hello world</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">！</span><span lang="EN-US">&quot;);</span></font></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">&nbsp;</span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">}</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span lang="EN-US">2</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">）要运行</span><span lang="EN-US">ant</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">需要有一个</span><span lang="EN-US">build.xml</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">下边就是一个完整的</span><u><span lang="EN-US">build.xml</span></u><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">。</span></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&lt;project name=&quot;HelloWorld&quot; default=&quot;rerun&quot; basedir=&quot;.&quot;&gt;</font></span></</div></td></tr></tbody></table>
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/138298#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 Nov 2007 09:58:37 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/138298</link>
        <guid>http://lk215215.javaeye.com/blog/138298</guid>
      </item>
      <item>
        <title>四、使用Axis2传递简单Java对象（POJO）</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/138296" style="color:red;">http://lk215215.javaeye.com/blog/138296</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="copy"><strong>版权声明：</strong>原创作品，允许转载，转载时请务必以超链接形式标明文章 <a href="http://zhangjunhd.blog.51cto.com/113473/26053" target="_blank" style="text-decoration: underline;">原始出处</a> 、作者信息和本声明。否则将追究法律责任。<a href="http://zhangjunhd.blog.51cto.com/113473/26053">http://zhangjunhd.blog.51cto.com/113473/26053</a></div>
<div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: center;"><font size="2"><em style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">本文介绍如何使用</span><span lang="EN-US">Axis2</span></em><em style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">在</span><span lang="EN-US">Web Service</span></em><em style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">中传递</span><span lang="EN-US">Java</span></em><em style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">对象。</span><span lang="EN-US"><o:p></o:p></span></em></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">author: ZJ <st1:chsdate isrocdate="False" month="5" w:st="on" islunardate="False" day="7" year="2007">07-5-7</st1:chsdate></font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Blog: </font><font size="2" color="#800080"><a href="http://zhangjunhd.blog.51cto.com/" target="_blank">http://zhangjunhd.blog.51cto.com/</a></font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">在</span><span lang="EN-US">Axis2_1.2</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">版本中提供了传递</span><span lang="EN-US">Java</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">对象的功能（注：只有</span><span lang="EN-US">1.1/1.2</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">版本提供，更早的</span><span lang="EN-US">Axis2</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">版本没有此功能）。此项功能称为传输</span><span lang="EN-US">POJO(a Plain Old Java Object)</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">1.</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">引入一个简单的</span><span lang="EN-US">POJO- The Weather POJO<o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">Weather.java<o:p></o:p></font></span></u></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">package sample.pojo.data;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">public class Weather {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>float temperature;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>String forecast;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>boolean rain;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>float howMuchRain;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public void setTemperature(float temp) {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>temperature = temp;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public float getTemperature() {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>return temperature;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public void setForecast(String fore) {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>forecast = fore;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public String getForecast() {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>return forecast;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public void setRain(boolean r) {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>rain = r;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public boolean getRain() {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>return rain;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public void setHowMuchRain(float howMuch) {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>howMuchRain = howMuch;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public float getHowMuchRain() {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>return howMuchRain;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">}</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><em style=""><span lang="EN-US"><font size="2">Note that it's all just straight POJOs with field items and getter and setter methods for each field.<o:p></o:p></font></span></em></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">2.</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">基于此</span><span lang="EN-US">POJO</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">的</span><span lang="EN-US">service<o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">WeatherService.java<o:p></o:p></font></span></u></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">package sample.pojo.service;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">import sample.pojo.data.Weather;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">public class WeatherService{</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>Weather weather;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><font size="2">    </font></span></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>public void setWeather(Weather weather){</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">        </span>this.weather = weather;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>public Weather getWeather(){</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">        </span>return this.weather;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">}</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">3.</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">相应的</span><span lang="EN-US">services.xml<o:p></o:p></span></strong></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><service name="WeatherService" scope="application"></service></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span><description>Weather POJO Service</description></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span><messagereceivers></messagereceivers></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">        </span><messagereceiver></messagereceiver></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">            </span>mep=&quot;http://www.w3.org/2004/08/wsdl/in-only&quot;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>class=&quot;org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver&quot;/&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">        </span><messagereceiver></messagereceiver></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">            </span>mep=&quot;http://www.w3.org/2004/08/wsdl/in-out&quot;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>class=&quot;org.apache.axis2.rpc.receivers.RPCMessageReceiver&quot;/&gt;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span>
            <parameter name="ServiceClass"></parameter>
            </font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">        </span>sample.pojo.service.WeatherService</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">    </span></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"></font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">4.</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">打包与部署</span><span lang="EN-US"><o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;"><font size="2">将文件组织成：</font></span></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2">- WeatherService<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">   </span>- META-INF<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">     </span>- services.xml<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">   </span>- sample<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">     </span>- pojo<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">       </span>- data<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">         </span>- Weather.class<o:p></o:p></font></span></div>
            <div class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">       </span>- service<o:p></o:p></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-family: 宋体;"><font size="2"><span style="">         </span>- WeatherService.class</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">将其打包为</span><span lang="EN-US">WeatherService.aar</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">，并部署在</span><span lang="EN-US">Tomcat</span><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">上（详见 <strong><a href="http://zhangjunhd.blog.51cto.com/blog/113473/23690" class="subject" target="_blank"><font color="#000000">基于Tomcat5.0和Axis2开发Web Service应用实例</font></a></strong> ）。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">5</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">．测试</span><span lang="EN-US"><o:p></o:p></span></strong></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><u><span lang="EN-US"><font size="2">WeatherRPCClient.java<o:p></o:p></font></span></u></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">package sample.pojo.rpcclient;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">import javax.xml.namespace.QName;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">import org.apache.axis2.AxisFault;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">import org.apache.axis2.addressing.EndpointReference;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="FR" style=""><font size="2">import org.apache.axis2.client.Options;<o:p></o:p></font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">import org.apache.axis2.rpc.client.RPCServiceClient;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">import sample.pojo.data.Weather;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">public class WeatherRPCClient {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>public static void main(String[] args1) throws AxisFault {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>RPCServiceClient serviceClient = new RPCServiceClient();</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Options options = serviceClient.getOptions();</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>EndpointReference targetEPR = new EndpointReference(</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>&quot;http://localhost:8080/axis2/services/WeatherService&quot;);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>options.setTo(targetEPR);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>// Setting the weather</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>QName opSetWeather = new QName(&quot;http://service.pojo.sample/xsd&quot;,</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>&quot;setWeather&quot;);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Weather w = new Weather();</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>w.setTemperature((float) 39.3);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>w.setForecast(&quot;Cloudy with showers&quot;);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>w.setRain(true);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>w.setHowMuchRain((float) 4.5);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Object[] opSetWeatherArgs = new Object[] { w };</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>serviceClient.invokeRobust(opSetWeather, opSetWeatherArgs);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>serviceClient.invokeRobust(opSetWeather, opSetWeatherArgs);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>// Getting the weather</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>QName opGetWeather = new QName(&quot;http://service.pojo.sample/xsd&quot;,</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>&quot;getWeather&quot;);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Object[] opGetWeatherArgs = new Object[] {};</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Class[] returnTypes = new Class[] { Weather.class };</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Object[] response = serviceClient.invokeBlocking(opGetWeather,</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>opGetWeatherArgs, returnTypes);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>Weather result = (Weather) response[0];</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>if (result == null) {</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                     </span>System.out.println(&quot;Weather didn't initialize!&quot;);</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                     </span>return;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>// Displaying the result</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>System.out.println(&quot;Temperature<span style="">               </span>: &quot;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>+ result.getTemperature());</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>System.out.println(&quot;Forecast<span style="">                  </span>: &quot;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>+ result.getForecast());</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>System.out.println(&quot;Rain<span style="">                      </span>: &quot; + result.getRain());</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">              </span>System.out.println(&quot;How much rain (in inches) : &quot;</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">                            </span>+ result.getHowMuchRain());</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2"><span style="">       </span>}</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">}</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><strong style=""><span lang="EN-US">6</span></strong><strong style=""><span new="" times="" mso-hansi-font-family="" roman="" style="font-family: 宋体;">．结果</span><span lang="EN-US"><o:p></o:p></span></strong></font></div>
<table class="MsoTableGrid" cellspacing="0" border="1" style="border: medium none ; border-collapse: collapse;" cellpadding="0">
    <tbody>
        <tr style="">
            <td valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 426.1pt;" width="568">
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Temperature<span style="">               </span>: 39.3</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Forecast<span style="">                  </span>: Cloudy with showers</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">Rain<span style="">                 </span><span style=""> </span><span style="">   </span>: true</font></span></div>
            <div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">How much rain (in inches) <span style="">   </span>: 4.5</font></span></div>
            </td>
        </tr>
    </tbody>
</table>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="2"> </font></o:p></span></div>
<p>本文出自 &ldquo;<a href="http://zhangjunhd.blog.51cto.com/">子 孑</a>&rdquo; 博客，请务必保留此出处<a href="http://zhangjunhd.blog.51cto.com/113473/26053">http://zhangjunhd.blog.51cto.com/113473/26053</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://lk215215.javaeye.com/blog/138296#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 Nov 2007 09:57:40 +0800</pubDate>
        <link>http://lk215215.javaeye.com/blog/138296</link>
        <guid>http://lk215215.javaeye.com/blog/138296</guid>
      </item>
      <item>
        <title>三、使用Axis2的底层API开发Web Service</title>
        <author>lk215215</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lk215215.javaeye.com">lk215215</a>&nbsp;
          链接：<a href="http://lk215215.javaeye.com/blog/138295" style="color:red;">http://lk215215.javaeye.com/blog/138295</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="copy"><strong>版权声明：</strong>原创作品，允许转载，转载时请务必以超链接形式标明文章 <a href="http://zhangjunhd.blog.51cto.com/113473/25592" target="_blank" style="text-decoration: underline;">原始出处</a> 、作者信息和本声明。否则将追究法律责任。<a href="http://zhangjunhd.blog.51cto.com/113473/25592">http://zhangjunhd.blog.51cto.com/113473/25592</a></div>
<div><font size="2"><em>本文是在理解官方指南的基础上，用实例实现Axis2提供的4种调用机制，并给出测试结果。</em><br />
author: ZJ 07-3-13<br />
Blog: </font><font size="2"><a href="http://zhangjunhd.blog.51cto.com/" target="_blank">http://zhangjunhd.blog.51cto.com/</a></font></div>
<div>&nbsp;</div>
<div><font size="2"><strong>1．使用Axis2的底层API开发Web Service Server端</strong><br />
1.1创建一个WebService(取名为MyService)<br />
&nbsp;&nbsp;&nbsp; 在MyService中有两个operations,如下所示。</font></div>
<div style="border: 1px solid rgb(170, 170, 170); padding: 5px; background-color: rgb(211, 211, 211);">
<div><font size="2">public void ping(OMElement element){}//IN-ONLY模式。仅仅接收OMElement，并对其处理。<br />
public OMElement echo(OMElement element){}//IN_OUT模式。接收OMElemen，并返回OMElement。</font></div>
</div>
<div>&nbsp;</div>
<div><font size="2">1.2如何写Web Service<br />
1）创建实现服务的类。</font></div>
<div><font size="2">2）创建services.xml来解析这个Web Service。</font></div>
<div><font size="2">3）将其打包成一个*.aar文档（Axis Archive）。</font></div>
<div><font size="2">4）部署Web Service。</font></div>
<div>&nbsp;</div>
<div><font size="2">1.2.1 创建实现服务的类<br />
&nbsp;&nbsp;&nbsp; 此类中提供的方法必须与Web Service（在services.xml中声明）中的operations对应。除非你提供了数据绑定，否则所有的方法只能接收一个参数，其类型为OMElement。</font></div>
<div style="border: 1px solid rgb(170, 170, 170); padding: 5px; background-color: rgb(211, 211, 211);">
<div><font size="2">public class MyService{<br />
&nbsp; public void ping(OMElement element){...}<br />
&nbsp; public OMElement echo(OMElement element){...}<br />
}</font></div>
</div>
<div><font size="2" style="background-color: rgb(255, 255, 255);"><u>MyService.java</u></font></div>
<div style="border: 1px solid rgb(170, 170, 170); padding: 5px; background-color: rgb(211, 211, 211);">
<div><font size="2">package userguide.example1;</font></div>
<div><font size="2">import org.apache.axiom.om.OMElement;<br />
import org.apache.axis2.AxisFault;<br />
import javax.xml.stream.XMLStreamException;</font></div>
<div><font size="2">public class MyService {<br />
&nbsp;&nbsp;&nbsp; public OMElement echo(OMElement element) throws XMLStreamException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Praparing the OMElement so that it can be attached to another OM Tree.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //First the OMElement should be completely build in case it is not fully buil