<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JavaEye博客</title>
    <description>Java博客,Ruby on Rails博客,AJAX博客,Agile博客 -- JavaEye做最棒的软件开发交流社区</description>
    <link>http://www.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>IE浏览器无法查看源文件的8大原因 </title>
        <author>zlei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zlei.javaeye.com">zlei</a>&nbsp;
          链接：<a href="http://zlei.javaeye.com/blog/230873" style="color:red;">http://zlei.javaeye.com/blog/230873</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          IE浏览器无法查看源文件的8大原因 <br /><br />问：无论是使用Outlook还是IE，点击鼠标右键，在弹出的快捷菜单中都会有“查看源文件”这一选项，奇怪的是，在我的电脑上竟然无法显示该邮件或网页的源文件，虽然这并没有影响到该软件的正常使用。请问，这是不是因为我之前安装了Microsoft的某个升级版本或补丁程序而导致该功能自动屏蔽了呢？有没有办法可以重新启动该功能？要知道，无法查看源文件，这可是一件很麻烦的事情，特别是对于Outlook用户而言，更是如此。就拿我本人来说吧，每次收到的邮件中如果出现了URL链接，我都习惯先查看一下它的源文件，确定了它的安全之后，才会点击它。<br /><br />答：如果你不太确定收件箱中的某封电子邮件或某个需要浏览的网站页面是否附带了病毒时，可以通过“查看源文件”的方式，查看后台HTML源代码。如果源文件中显示的URL与真实的链接无法匹配，那说明该邮件或网页有问题。 如果“查看源文件”这一功能无法使用了，确实是件很麻烦的事情。导致该问题出现的原因有很多，下面将一一列举：<br /><br />第一类情况是，当浏览器的缓存被装满时，“查看源文件”功能将失效。如果你想确定自己的电脑是否属于这类情况，可以点击IE的“工具”菜单中的“Internet选项”　“常规”标签，然后，再点击“Internet临时文件”一栏中的“删除文件”按钮。<br /><br />第二类情况，当你打开某些特殊的浏览器窗口（比如说用JavaScript脚本语言编写的网页）时，“查看源文件”功能也会失效。如果你在浏览任何网页时，都无法“查看源文件”，那就不属于这类情况。<br /><br />第三类情况，当一个网页还没有被完全加载到桌面时，“查看源文件”功能也是不能使用的（在这种状态下，“文件”菜单中的“另存为”选项也是屏蔽的）。这也算不上是真正的问题。<br /><br />第四类情况，查看Windows文件夹，如果找不到Notepad.exe，将会导致“查看源文件”功能无法使用。<br /><br />第五类情况，如果TEMP（或TMP）环境变量指向某一个不存在的文件夹，也会导致“查看源文件”功能无法使用。打开命令提示符（command prompt）窗口，键入SET TEMP（或SET TMP），就可以查看到这些变量的值。<br /><br />第六类情况，通过注册表设置也可以限定命令行的有效性。首先，点击“开始”菜单，在运行对话框中键入“REGEDIT”，调出注册表编辑器，点击“HKEY_CURRENT_USERSoftware PoliciesMicrosoftInternet Explorer Restrictions”，在右边的窗格中找到一个名为NoViewSource的值，如果当前的数值数据设置为1，则双击它，将数值数据更改为0.<br /><br />第七类情况，通过查看注册表设置，你还会发现：如果指定的调用程序不正确，也将导致“查看源文件”功能失灵。调出注册表编辑器，点击“HKEY_LOCAL_MACHINESoftware MicrosoftInternet ExplorerView Source EditorEditor Name”，如果该键存在的话，右边窗格中所显示的默认的“数值名称”应该是记事本程序的完整路径，一般以“C：windowsnotepad.exe”的形式表示。如果该键不存在，先核实记事本程序的正确位置，然后双击默认键值，修改错误路径。<br /><br />第八类情况，组策略的设置也有可能会屏蔽“查看源文件”这一菜单项。从“开始”菜单中调出“运行”对话框，键入GPEDIT.MSC.如果桌面上弹出一个提示框，提示该文件名不正确，则说明“查看源文件”功能的失效与组策略的设置无关；否则，桌面上将会弹出一个“组策略编辑器”窗口，点击“User ConfigurationAdministr-ativeTemplatesWindows ComponentsInternet ExplorerBrowser”，在右边的窗格中找到View menu： Disable Source menu，如果这个键值被设置为“Enabled”，则将它更改为“Disabled”。
          <br/>
          <span style="color:red;">
            <a href="http://zlei.javaeye.com/blog/230873#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, 20 Aug 2008 22:19:52 +0800</pubDate>
        <link>http://zlei.javaeye.com/blog/230873</link>
        <guid>http://zlei.javaeye.com/blog/230873</guid>
      </item>
      <item>
        <title>从盖茨的“花钱”观谈起……</title>
        <author>皆 乐</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhanglei14616-163-com.javaeye.com">皆 乐</a>&nbsp;
          链接：<a href="http://zhanglei14616-163-com.javaeye.com/blog/230872" style="color:red;">http://zhanglei14616-163-com.javaeye.com/blog/230872</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          近日看到国内一位著名企业家对比尔·盖茨的评论，十分佩服他的成就和自信，他说得很好，“盖茨是个好榜样，但不是偶像。”中美国情不同，我们的企业家当然不必去盲目模仿人家。但他有一个说法，“对我们来说，现在学着花钱和捐钱还太早”恐怕可容商榷。<br /><br />　　他说：“对我们来讲，最容易做的事情可能就是把公司卖了，回家享受人生，我们都做得到。但今天，我们更应该利用自己的影响力和管理企业所获得的经验把企业做得更好，社会才会有更多的财富……所以，我觉得盖茨很好，但他不是最好。”他把盖茨提前“退休”和“裸捐”看成是“回家享受人生”，而他呢，还要继续为社会创造财富。创造财富当然很好，问题是，财富创造出来以后做什么呢？他很可能会说，当然要为大众改善生活。那是不是应该包括救死扶伤———慈善卫生，以及提高生活质量———文化教育？如果是，那正是盖茨等企业家所创立的公益基金会所做的主要两件大事。基金会当然并不创造财富，相反只会“花钱”，但正因为它们有一批“会”花钱的专家，才能把企业创造的钱财最有效地转化为社会大众可以直接利用的福利或文化资源。<br /><br />　　盖茨之所以才五十出头就离开企业，绝不是为了“回家享受人生”，恰恰是为了更好地“利用自己的影响力和管理企业所获得的经验”；只是他要做的已经不再是“把企业做得更好”，而是把帮助大众改善生活的事业做好。也许有人认为做公益事业太容易，即便也算是工作吧，跟“回家享受人生”差不了多少。事实上，公益事业未必比工商企业好做。中国改革开放三十年来，经济的飞速发展举世瞩目。我们也发现，卫生、教育、文化等直接关系到民生公益的领域，只怕比经济更难搞。盖茨是科技和经济方面的老手了，但他终于认识到全球公共卫生的问题严重，远不是用点业余时间所能解决的，因此这次下定决心卸去领导微软的职责，全心全意来攻公益的难关。<br /><br />　　也许还有人会认为中国的财富比起美国还差得太远，只有将财富积累到相当程度以后，才有可能来谈公益。但是，老百姓普遍反映的看病难、上学贵的问题，已经成了我国社会建设进程中的重大障碍，并不是在社会财富增长以后就会自然解决，也不是光用政府手段就能解决的。这些问题发达国家全都遇到过。企业家盖茨清醒地看到了财富的功能和局限，他“裸捐”以后在《时代》周刊发表了一篇长文说，市场经济创造了巨大的财富，大大改善了整个世界，但不可能做到改善每个人的境遇；企业做得好（Do well）并不等于做好事（Do good）；市场能帮助那些付得起钱的人，但还有很多付不起的人，谁来帮助他们呢？（《时代》2008年8月11日）这简直就像是给我们出的思考题。盖茨也并不认为企业家都应该像他那样辞去职务来为大众做好事，因为穷人并不都是在那儿伸手等待施舍。他举了一系列例子，例如孟加拉国的“穷人银行”和为肯尼亚农民服务的手机市场，说明企业也可以开发出穷人迫切需要的薄利多销的市场，把“做得好”和“做好事”结合起来。<br /><br />　　如果我们也有一批那样的企业家，既能把他们所创造的财富直接用于为大众造福，还能把他们办企业的聪明才智用到如何花钱上来，我们的社会一定会更加和谐美好。（
          <br/>
          <span style="color:red;">
            <a href="http://zhanglei14616-163-com.javaeye.com/blog/230872#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>Wed, 20 Aug 2008 22:16:17 +0800</pubDate>
        <link>http://zhanglei14616-163-com.javaeye.com/blog/230872</link>
        <guid>http://zhanglei14616-163-com.javaeye.com/blog/230872</guid>
      </item>
      <item>
        <title>游戏设计-Chapter1</title>
        <author>iamzealotwang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://iamzealotwang.javaeye.com">iamzealotwang</a>&nbsp;
          链接：<a href="http://iamzealotwang.javaeye.com/blog/230831" style="color:red;">http://iamzealotwang.javaeye.com/blog/230831</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small; color: #0000ff;">涉及方面：<span style="color: #ff0000;">面向对象思想在实际编程之中的运用</span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: small; color: #0000ff;">摘要：设计时候</span></p>
<p><span style="font-size: small; color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: small; color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&middot;<span style="color: #ff0000;">找出应用中可能需要变化的地方，把他们独立出来。不要和不需要变化的代</span></span><span style="font-size: small; color: #ff0000;">码放在一起&nbsp;</span></p>
<p><span style="font-size: small; color: #0000ff;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&middot;<span style="color: #ff0000;">针对接口编程，不是针对实现编程</span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: small; color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp; 首先游戏一定会有主角，以及怪兽。所以一定要建立Role类和Monster类 那角色和怪物必然固有的属性是Hp，以及MP了。介于此首先想到的是定义一个生物（Creature），让Role类和Monster类都继承与它 <br /></span></p>
<pre name="code" class="java">public Class Creature{
	private int hp;
	private int mp;
}

public Class Role extends Creature{
		private int exp;
}

public Class Monster{}
</pre>
<p><br /><br /><span style="font-size: small; color: #0000ff;">这个时候，突然想到，所有Role类和Monstar类必然要有名字，并且一定有攻击（Attack）以及被攻击的（BeAttack）方法。 <br /><br />既然这样可以采用更改Creature类达到目的 </span></p>
<p><span style="font-size: small; color: #0000ff;"><br />&nbsp;</span></p>
<pre name="code" class="java">public Class Creature{
		private int hp;
		private int mp;
		private String name;

		public void Attack(){
		// Do some things
		}
		public void BeAttack(){
		// Do some things
		}
}
</pre>
<p><br /><span style="font-size: small; color: #0000ff;">貌似解决了问题。 <br />不过里面还隐藏着另外的2个问题： <br />1：</span></p>
<p><span style="font-size: small; color: #0000ff;">当有更多的类继承自Creature时候就会发生问题，比如NPC。NPC是不应该有攻击以及被攻击的方法的。 </span></p>
<p><span style="font-size: small; color: #0000ff;"><br />错误的解决方法：&nbsp;&nbsp; 当然可以让NPC复写Attack方法以及BeAttack方法。 <br />仍然存在的问题：&nbsp;&nbsp; 当Creature的特性变多，或者继承Creature的类增多的时候 需要复</span><span style="font-size: small; color: #0000ff;">写以及更改的代码增多。维护起来有问题。 <br />正确的解决方法：&nbsp;&nbsp;&nbsp;将不变的属性以及方法封装，将易变的方法提取出来。即建立Attack类以及BeAttack类。 <br /><br /><span style="color: #ff0000;">设计原则：找出应用中可能需要变化的地方，把他们独立出来。不要和不需要变化的代码放在一起 <br /></span><br />2： <br />对于每个角色必然有不同的攻击方式，比如魔法师必然使用魔法攻击，刺客可能存在二刀流（即一次进行两次攻击），弓手可能实行远程攻击，战士使用普通攻击。 </span></p>
<p><span style="font-size: small; color: #0000ff;"><br />错误的解决方法： 对攻击里面加入switch case语句，对于每种不同的攻击方式给出不同</span><span style="font-size: small; color: #0000ff;">的效果 <br />仍然存在的问题： 假如新加入一个职业呢？德鲁伊...&amp;(*&amp;&amp;^^%* <br />正确的解决方法： 让Attack以及BeAttack变为接口，以不同的攻击方式去实现接口。 <br /></span></p>
<pre name="code" class="java">public interface Attack {
// Do some things
}

public interface BeAttack(){
// Do some things
}

public class SwordAttack implements Attack {}

public class MagicAttack implements Attack {}
</pre>
<p><br /><br /><br /><span style="font-size: small; color: #0000ff;">现在就可以很好的解决问题了。组装一下代码： <br /></span></p>
<pre name="code" class="java">public interface Attack {
// Do some things
}

public interface BeAttack(){
// Do some things
}

public class SwordAttack implements Attack {}
public class MagicAttack implements Attack {}


public Class Creature{
		private int hp;
		private int mp;
		private String name;
}

public Class Role extends Creature{
		private Attack attack;
		private BeAttack beAttack;
		private int exp;
}

public Class Monster extends Creature{
		private Attack attack;
		private BeAttack beAttack;
}
</pre>
<p><br /><span style="font-size: small; color: #0000ff;"><span style="color: #ff0000;">设计原则：针对接口编程，不是针对实现编程</span> <br /></span></p>
<p><span style="font-size: small; color: #0000ff;">这里指的是：Role 和Monstar 只包含Attack接口，而不是指定使用某种Attack，这样的好处是在运行中Attack的种类是可以改变的。</span></p>
<p><span style="font-size: small; color: #0000ff;">比如：当现在是剑士的时候可以使用SwordAttack，而当转职为魔法师时候就要使用MagicAttack。 <br />这也就是实现了初步的动态绑定。 <br /><br />按上面组装完成后执行测试代码： <br /></span></p>
<pre name="code" class="java">public class RoleTest {
	
	private static Role role;
	
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		role = new Role("崔斯特",100,100,0,new SwordAttack());
	}

	@Before
	public void setUp() throws Exception {
		System.out.println("===============测试开始============\n");
	}
	
	@After
	public void tearDown() throws Exception {
		System.out.println("\n===============测试结束============\n");
	}
	
	/**
	 * 目的：测试角色初始化，以及攻击方法
	 * 结果：成功
	 */
	@Test
	public void testRoleAttack(){
		System.out.println();
		System.out.println(role.toString());
		role.getAttack().attack();
	}
	
	/**
	 * 目的：测试角色运行时更换攻击方式
	 * 结果：成功
	 */
	@Test
	public void testRoleChangeAttackWays(){
		System.out.println("更换攻击方式前：");
		System.out.println(role.getAttack().toString());
		role.getAttack().attack();
		
		role.setAttack(new MagicAttack()); //更换攻击方式
		
		System.out.println("更换攻击方式后：");
		System.out.println(role.getAttack().toString());
		role.getAttack().attack();
	}
}
</pre>
<p><br /><br /><span style="color: #ff00ff;">执行结果： <br /><br />===============测试开始============ <br /><br /><br />崔斯特 现在的状态为： <br />血量：100 <br />魔法：100 <br />经验：0 <br /><br />使用大剑对单位造成攻击！ <br /><br />===============测试结束============ <br /><br />===============测试开始============ <br /><br />更换攻击方式前： <br />攻击方式：大剑攻击 <br />使用大剑对单位造成攻击！ <br />更换攻击方式后： <br />攻击方式：魔法攻击 <br />使用魔法对单位造成攻击！ <br /><br />===============测试结束============</span></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://iamzealotwang.javaeye.com/blog/230831#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, 20 Aug 2008 20:49:52 +0800</pubDate>
        <link>http://iamzealotwang.javaeye.com/blog/230831</link>
        <guid>http://iamzealotwang.javaeye.com/blog/230831</guid>
      </item>
      <item>
        <title>今天终于忍不住 把项目从 Rails2.0 升级到 Rails2.1 </title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/230784" style="color:red;">http://agi-alvin.javaeye.com/blog/230784</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          更新完 vendor/rails <br />更新完 一大堆的插件(这里最麻烦)<br /><br />本地测试过后,上传到服务器.时却遇到又有麻烦<br /><br />1. gem 要升级到 1.2 <br />2. 运行 mongrel 时提示 mongrel 找不到?? 奇怪我只是升级 gem 怎么 mongrel 没了<br />3. 重装吧 gem install mongrel<br />4. rake 也和 mongrel 一样 重装 gem install rake<br />5. 再次运行 mongrel_rails cluster::restart 出现<br /><pre name="code" class="java">
ERROR RUNNING 'cluster::restart': Plugin /cluster::restart does not exist in category /commands
Use help command to get help
</pre><br />6. 少插件 ?? google 来 google 去 终于找到了 <br />gem install mongrel_cluster  晕哦.<br /><br /><br />mongrel_rails cluster::restart<br />一切正常<br /><br />总结: gem 升级到 1.2 后可能造成已经装的 gem 系统找不到要重装(或者要重新识别一下)
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/230784#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>Wed, 20 Aug 2008 17:43:49 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/230784</link>
        <guid>http://agi-alvin.javaeye.com/blog/230784</guid>
      </item>
      <item>
        <title>JavaScript的灵活性</title>
        <author>贝特虫子</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liangshihong409-126-com.javaeye.com">贝特虫子</a>&nbsp;
          链接：<a href="http://liangshihong409-126-com.javaeye.com/blog/230761" style="color:red;">http://liangshihong409-126-com.javaeye.com/blog/230761</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近刚刚接触JS，发现太灵活了：<br />例如：<br />		var prms = {<br />			lstPractsId : g_CmnGrid.p_lstPractsId,<br />			practType : this.p_typeValue,<br />			displayId:this.fmPnl.getComponent('Displayid').getValue(),<br />			name : this.fmPnl.getComponent('Name').getValue(),<br />			nameEn : this.fmPnl.getComponent('NameEn').getValue(),<br />			unit : this.fmPnl.getComponent('Unit').getValue(),<br />			unitEn : this.fmPnl.getComponent('UnitEn').getValue(),<br />			spec : this.fmPnl.getComponent('Spec').getValue(),<br />			specEn : this.fmPnl.getComponent('SpecEn').getValue(),<br />			price : this.fmPnl.getComponent('Price').getValue()<br />		};<br />完全可以改写为：<br />		var prmsTmp;<br />		var prmsCmn = ['Displayid', 'Name', 'NameEn', 'Unit', 'UnitEn', 'Spec','SpecEn', 'Price'];<br />		var prms = {<br />			lstPractsId : g_CmnGrid.p_lstPractsId,<br />			practType : this.p_typeValue,<br />		};<br />		for (i = 0; i &lt; prmsCmn.length; i++) {<br />			prms[prmsCmn[i]] = this.fmPnl.getComponent(prmsCmn[i]).getValue();<br />}<br />省了我好几行代码...<br />动态语言真是个好东西...<br />应该好好学习...
          <br/>
          <span style="color:red;">
            <a href="http://liangshihong409-126-com.javaeye.com/blog/230761#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>Wed, 20 Aug 2008 16:54:20 +0800</pubDate>
        <link>http://liangshihong409-126-com.javaeye.com/blog/230761</link>
        <guid>http://liangshihong409-126-com.javaeye.com/blog/230761</guid>
      </item>
      <item>
        <title>约化儒略日(MJD)的javascript计算</title>
        <author>Cranberry</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cranberry.javaeye.com">Cranberry</a>&nbsp;
          链接：<a href="http://cranberry.javaeye.com/blog/230724" style="color:red;">http://cranberry.javaeye.com/blog/230724</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          儒略日(JD)是一种不用年、月的长期纪日法。它以倒推到公元前4713年1月1日格林尼治平时正午为起算日期，每天顺数而下。在<br />天文计算中还常采用约化儒略日(MJD)，其定义为 MJD = JD - 2400000.5 <br /><br /><br />引用自 javascript计算MJD<br /><br />var today=new Date();<br />var year=today.getYear();<br />var month=today.getMonth();<br />var day=today.getDate();<br />month+=1;<br />if ((month==1 ) || (month==2)){<br />   year-=1;<br />   month+=12<br />}<br />var A=Math.floor(year/100);     <br />var B=2-A+Math.floor(A/4);  <br />var C=Math.floor(365.25*year)  ;   <br />var D=Math.floor(30.6001*(month+1));<br />var JD=B+C+D+day+1720994.5;<br />var MJD=JD-2400000.5;<br /><br />alert(MJD);
          <br/>
          <span style="color:red;">
            <a href="http://cranberry.javaeye.com/blog/230724#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>Wed, 20 Aug 2008 15:33:58 +0800</pubDate>
        <link>http://cranberry.javaeye.com/blog/230724</link>
        <guid>http://cranberry.javaeye.com/blog/230724</guid>
      </item>
      <item>
        <title>Servlet 重导定向问题</title>
        <author>looxiaohu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://looxiaohu.javaeye.com">looxiaohu</a>&nbsp;
          链接：<a href="http://looxiaohu.javaeye.com/blog/230722" style="color:red;">http://looxiaohu.javaeye.com/blog/230722</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          response.sendRedirect 与 request.getRequestDispatcher(url).forward(request,response)区别 <br /><br />  服务器端进行转向的4种方法：   <br /><pre name="code" class="java">  1.   ServletContext的getRequestDispatcher()   
  2.   ServletContext的getNamedDispatcher()   
  3.   ServletRequest的getRequestDispatcher()   
  4.   ServletResponse的sendRedirect()进行转向。 </pre>  <br />  1.2.3   功能大于等于   forward() 重导功能<br /> 4.   sendRedirect()           <br />  使用forward方法，因为这些这样比较高效。只有在forward方法不能使用时（比如要转向到一个非本web应用），再使用ServletResponse的sendRedirect()方法。   <br />    <br />  &lt;jsp:fordward>与   sendRedirect   方法的比较   <br />  虽然   &lt;jsp:fordward>与   sendRedirect   方法，都可以将浏览器浏览的网页，重导至另一个网页，但是两者在原理上是不太相同。   <br />  a. &lt;jsp:fordward>   :   动作是利用伺服端，将资料输出至缓冲区的机制，在前一个网页尚未输出到客户端前，取消资料的输出，然后输出另一个网页的资料，达到重导浏览器的效果。   <br />  优点:   两网页间可以分享   request   对象内的变量。   <br />  b. sendRedirect   :   动作是透过   HTTP   协议的   Header   ，   对浏览器下达重导指令，因此，不牵涉到服务器端缓冲区的问题。   <br />  不过由于   sendRedirect   方法作用于客户端，所以重导前后网页无法分享存在于   request   对象内的变量。   <br />  Solution:   response.sendRedirect(“test.jsp?key=view”)   <br />  今天才搞清楚这个原理，ServletResponse就是在客户端响应返回数据，在这里ServletResponse不保留，request.setAttribute()的属性，如果用response.sendRedirect重导话，一些数据最好绑定到session里，数据一多，服务器吃不消，建议用ServletRequest来重导。
          <br/>
          <span style="color:red;">
            <a href="http://looxiaohu.javaeye.com/blog/230722#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>Wed, 20 Aug 2008 15:32:17 +0800</pubDate>
        <link>http://looxiaohu.javaeye.com/blog/230722</link>
        <guid>http://looxiaohu.javaeye.com/blog/230722</guid>
      </item>
      <item>
        <title>渴望一次旅行</title>
        <author>anglefly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://anglefly.javaeye.com">anglefly</a>&nbsp;
          链接：<a href="http://anglefly.javaeye.com/blog/230717" style="color:red;">http://anglefly.javaeye.com/blog/230717</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">&nbsp;&nbsp;&nbsp; 压抑，似乎已经很久了。从年初开始直到现在，仿佛经历了一场噩梦，却永远无法醒来。母亲走后，心情一直不好，总是不知不觉想起母亲的一颦一笑。可是无论如何，失去的已经失去。虽然自小农村长大，可是因为父母都比较开明，又因为长期接受无神论的教育，所以我心里明白母亲从此不复存在了。常常因为这样想着，感觉到痛得无法呼吸。有时我真希望真的有一个轮回的世界，生生世世，永不停息。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp; 或许安排一次旅行散散心是个不错的主意，昨天闲聊起来，我发现自己突然有一种渴望，渴望融入大自然之中。</span><span lang="EN-US"><span style="font-family: Times New Roman;">07</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">年元旦的云南之行，玉龙雪山上明净的天空让我至今记忆犹新。那种纯洁安静之美令人惊叹，也是我一直所渴望的。我不喜欢人多嘈杂的地方。虽然北京风景名胜不少，可是到处人山人海，让喜欢安静的我不胜烦躁。天南海北，我走过很多地方，城市的市区无论大小，在我眼里，区别不大，都是人来人往，熙熙攘攘。因此我宁愿躲在家里或者宾馆里，也不愿意出去逛街。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">&nbsp;&nbsp;&nbsp; 今年的十一不打算回家了。或许，去海边玩玩。似乎，可以迎着海风，一个人安安静静地沿着海边走，没有尽头。</span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://anglefly.javaeye.com/blog/230717#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>Wed, 20 Aug 2008 15:24:39 +0800</pubDate>
        <link>http://anglefly.javaeye.com/blog/230717</link>
        <guid>http://anglefly.javaeye.com/blog/230717</guid>
      </item>
      <item>
        <title>Maven仓库管理器的重要性</title>
        <author>juvenshun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://juvenshun.javaeye.com">juvenshun</a>&nbsp;
          链接：<a href="http://juvenshun.javaeye.com/blog/230713" style="color:red;">http://juvenshun.javaeye.com/blog/230713</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天在maven主题的irc中得知，又一个中国的ip被<a href="http://repo1.maven.org/maven2/" target="_blank">中央Maven仓库</a>
封了。原因我猜到了大半，但还是忍不住问一下，回答是：</p>
<div class="quote_title"> </div>
<div class="quote_div">他们消耗了很大的中央仓库带宽，会使之变慢。因此这些人不是良好的Maven公民。</div>
<p>&nbsp;</p>
<p>我也曾经在个人笔记本上直接使用中央Maven仓库，第一次build项目下载了很多东西，可这样并没有被封，说明中央仓库不是很苛刻的，那么是什么样的下载量导致中央仓库的管理员受不了呢？我猜测是某个公司吧，很多人用Maven构建项目，但是自己没有建立一个仓库管理服务器，有太多的重复下载，直接导致占用了很大的带宽。</p>
<p>&nbsp;</p>
<p>那么，请用Maven仓库管理器吧，为了别人，更为了自己。仓库管理器是干什么的？《Maven权威指南》中这样说明：</p>
<div class="quote_title"> </div>
<div class="quote_div">仓库管理器有两个服务目的：首先它的角色是一个高度可配置的介于你的组织与公开Maven仓库之间的代理，其次它为你的组织提供了一个可部署你组织内部生成的构件的地方。</div>
<p>&nbsp;</p>
<p>我略微解释下，首先它是代理，举个有点极端的例子，一百人的公司，每个人从公共Maven仓库下载100M的构件，那么消耗的带宽就是10G，开发者就难免会对着console的下载进程发愣，或者抱怨。还有，如果需要从5个公共仓库构件，那么每个开发者就需要自己配置POM或者settings，那么一共需要配置500次。最后，如果公司的IP对Maven中央仓库造成8G的下载量，那边的管理员为了能给更多人提供服务，只能无奈的封掉你的这个IP。因此这个公司需要维护一个Maven仓库管理器，它代理所有内部Maven的构件请求，并在服务器上维护一份缓存，该公司为所有的构件只向公共仓库请求一次，消耗公网带宽100M，内部请求完全通过LAN搞定，开发者看到进度条刷刷的闪，心情会比较好。此外，所有开发者只需要配置一个指向这个代理的仓库。公共服务器的配置，在仓库管理器维护，这也大大减少的时间。</p>
<p>&nbsp;</p>
<p>Maven仓库管理器的第二个功能是，为组织提供一个部署构件的公共地址，以便共享。一个项目可能分割成5个模块，模块之间相互有依赖，有了仓库管理器，模块A的SNAPSHOT版本可以随时发布到内部仓库上，模块B就能很方便的得到最新的模块A构件。此外，release版本的构件也能很方便的发布，供QA测试等等。</p>
<p>&nbsp;</p>
<p>如果不是一个人玩玩Maven而已，那么仓库管理器是必须的，<a href="nexus.sonatype.org" target="_self">Nexus</a>
是一个比较强大的仓库管理器，<a href="http://www.sonatype.com/book/reference_zh/public-book.html" target="_blank">Maven权威指南</a>
中第十六章详细介绍了仓库管理器和Nexus，翻译内容将于近几日发布。</p>
          <br/>
          <span style="color:red;">
            <a href="http://juvenshun.javaeye.com/blog/230713#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>Wed, 20 Aug 2008 15:18:23 +0800</pubDate>
        <link>http://juvenshun.javaeye.com/blog/230713</link>
        <guid>http://juvenshun.javaeye.com/blog/230713</guid>
      </item>
      <item>
        <title>Mule的经典实例LoanBroker的学习笔记</title>
        <author>islandoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://islandoo.javaeye.com">islandoo</a>&nbsp;
          链接：<a href="http://islandoo.javaeye.com/blog/230700" style="color:red;">http://islandoo.javaeye.com/blog/230700</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" align="center" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"><strong style="mso-bidi-font-weight: normal"><span style="font-size: 15pt; font-family: '微软雅黑','sans-serif';">Mule</span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: 15pt; font-family: '微软雅黑','sans-serif';">的经典实例<span lang="EN-US">LoanBroker</span>的学习笔记</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"><strong style="mso-bidi-font-weight: normal"><span style="font-size: 15pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">最近为了跟上公司发展，要学一下<span lang="EN-US">mule</span>。在了解了<span lang="EN-US">mule</span>的大概情况之后，便看了看<span lang="EN-US">mule</span>的发型包里的一个经典实例<span lang="EN-US">LoanBroker</span>，整理一下笔记，若有写得不准确的地方，还望各位大侠不吝赐教。</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; TEXT-ALIGN: center"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;</span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-char-indent-count: 0; mso-list: l1 level1 lfo1;"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span lang="EN-US">一&nbsp;&nbsp;&nbsp; 一，安装及部署</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-char-indent-count: 0; mso-list: l1 level1 lfo1;"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">1.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">Jdk</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">。最好<span lang="EN-US">1.5</span>版本以上吧，我比较超前，用的<span lang="EN-US">1.6.</span>安装完成之后配上环境变量。</span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-char-indent-count: 0; mso-list: l1 level1 lfo1;"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">Mule</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">。我下载的是<span lang="EN-US">1.4.4</span>，<span lang="EN-US">1.x</span>的差别不是很大，<span lang="EN-US">2.x</span>的不太了解。然后配上<span lang="EN-US">%MULE_HOME%</span>，把<span lang="EN-US">%MULE_HOME%\bin</span>加进<span lang="EN-US">path</span>变量中。</span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-char-indent-count: 0; mso-list: l1 level1 lfo1;"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">Maven</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">。<span lang="EN-US">Mule</span>的部署支持<span lang="EN-US">ant</span>和<span lang="EN-US">maven</span>，不过还是推荐<span lang="EN-US">maven</span>，<span lang="EN-US">ant</span>还是学生时代记忆了。我的<span lang="EN-US">maven</span>版本是<span lang="EN-US">2.0.7</span>。同样的配置<span lang="EN-US">%MAVEN_HOME%</span>，把<span lang="EN-US">%MAVEN_HOME%\bin</span>加入环境变量。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">二、<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 微软雅黑;">二、</span></span> </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">一些说明</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">简单的介绍一下这个应用。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span lang="EN-US"><img src="../../upload/picture/pic/20325/f7230b92-0ba0-385f-a194-cc3ffeb07ee5.jpg" height="282" alt="" width="554" /></span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<table class="MsoNormalTable" cellspacing="0" border="1" cellpadding="0" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 21pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid black; mso-border-insidev: .5pt solid black">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: small;"><strong><span style="font-family: 'Arial','sans-serif';">Component</span></strong></span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: small;"><strong><span style="font-family: 'Arial','sans-serif';">Description</span></strong></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">Loan Broker Service</span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">接受用户的</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">LoanRequest </span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">请求（它代表一个用户借款请求），</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">并且负责聚合返回的</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">LoanQuote</span><span style="font-size: 9pt; font-family: 宋体; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">（</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">表示单个银行的返回结果</span><span style="font-size: 9pt; font-family: 宋体; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial;">）。</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">Credit Agency Service</span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">检查用户的借款的数额是否符合要求</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">Credit Agency Gateway</span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">连接总线和<span lang="EN-US">CreditAaencyService</span>的纽带</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">Lender Service</span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">根据用户的信用和申请借款的数额来选择哪些银行接受此次请求。</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 5">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">Lender Gateway</span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">（同上上）</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes">
<td valign="top" width="130" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 97.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';">Banking Gateway</span></p>
</td>
<td valign="top" width="410" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ffffff; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt">
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">将<span lang="EN-US">loanRequest</span>请求发送到各个指定的银行。</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 2.0gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">这个实例的大概业务流程可以参照<span lang="EN-US">mule</span>的官方文档（<span lang="EN-US"><a href="http://www.mulesource.org/display/MULEINTRO/LoanBroker+ESB">http://www.mulesource.org/display/MULEINTRO/LoanBroker+ESB</a></span>），</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">三、<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="mso-list: Ignore"><span style="font-family: 微软雅黑;">三、</span></span></span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">样例演示</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">1.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span></span></span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">在<span lang="EN-US">%MULE_HOME%</span>目录打开命令行，输入<span lang="EN-US">mvn &ndash;Dmaven.test.skip=true,</span>因为单元测试的代码可能通不过编译，所以最好跳过。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">2.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">编译成功之后，在<span lang="EN-US">%MULE_HOME%\examples\loanbroker</span>目录下双击<span lang="EN-US">loanbroker.bat</span>文件。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">3.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">这个<span lang="EN-US">LoanBroker</span>提供了多个实现，选择<span lang="EN-US">1</span>，回车；</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l3 level1 lfo3">&nbsp;</p>
<p class="MsoListParagraph" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;<img src="../../upload/picture/pic/20327/5b023028-2680-3626-ba98-fdbab705fa6c.jpg" height="105" alt="" width="479" /></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">4.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">接着<span lang="EN-US">mule</span>的服务器就开启了，如果是第一次启动<span lang="EN-US">mule</span>的话，会有一堆的<span lang="EN-US">license</span>要你来确认，直接回车到底。下面这个页面是关于<span lang="EN-US">EJB</span>的配置，直接选<span lang="EN-US">1.</span></span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><img src="../../upload/picture/pic/20329/bc397f4a-3782-3e66-84e4-3f5c4a053ae7.jpg" height="161" alt="" width="554" /></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">5.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 微软雅黑;"><span style="font-size: 12pt;">EJB</span><span style="font-size: 12pt;">启动之后，便可以发送借款请求了。在这里选<span lang="EN-US">1</span>。然后输入我们的借款请求。</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><img src="../../upload/picture/pic/20331/14f49ff3-075b-3311-bdad-f23c161a00c0.jpg" height="218" alt="" width="480" />&nbsp;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">6.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span></span></span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes;">得到了此次异步调用的结果，如果想看看同步调用有什么不一样的话，可以将<span lang="EN-US">LoanBrokerApp</span>类中的<span lang="EN-US">loanBrokerApp.run(false)</span>改为<span lang="EN-US">true</span>。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><img src="../../upload/picture/pic/20333/f2bc356b-3ac3-3557-8cb1-971086d2e1a2.jpg" height="78" alt="" width="554" />&nbsp;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">四、<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="mso-list: Ignore"><span style="font-family: 微软雅黑;">四、</span></span></span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">步骤的解析</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l1 level1 lfo1"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">1.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 微软雅黑;"><span style="font-size: 12pt;">Maven</span><span style="font-size: 12pt;">编译部署后的结构图如下：</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span lang="EN-US"><img src="../../upload/picture/pic/20335/6214e5e0-cfff-38c1-9994-d8a95d055eb4.jpg" height="123" alt="" width="303" /></span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 60pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中我们只需要关注<span lang="EN-US">esb</span>，而<span lang="EN-US">bpm</span>和<span lang="EN-US">esn</span>我们不去管它。<span lang="EN-US">Creditagency</span>是个<span lang="EN-US">EJB</span>的工程，可以把它看做一个黑盒，不去管它。重点关注<span lang="EN-US">esb</span>和<span lang="EN-US">common</span>两个工程。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">2.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">Esb</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">工程中有一个很重要的文件&mdash;&mdash;<span lang="EN-US">mule</span>的配置文件<span lang="EN-US">loan-broker-esb-mule-config.xml</span>。这个配置文件的配置项无非分为两个部分。一个是<span lang="EN-US">mule</span>的<span lang="EN-US">model</span>的配置，比如，<span lang="EN-US">&lt;mule-descriptor/&gt;</span>它代表了一个<span lang="EN-US">UMO</span>组件的配置；另一个就是<span lang="EN-US">mule</span>的<span lang="EN-US">Transport</span>的配置，包括<span lang="EN-US">trasformer</span>，<span lang="EN-US">filer</span>，<span lang="EN-US">provider</span>的配置。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">当程序启动以后，由于我们选择的是<span lang="EN-US">1</span>（发送一个标准的借贷请求），所以程序会调用<span lang="EN-US">client.dispatch("CustomerRequests", request, <strong>null</strong>);</span>来发送一个异步请求，其中<span lang="EN-US">client</span>是一个<span lang="EN-US">MuleClient</span>对象，它可以向<span lang="EN-US">MuleServer</span>发送和接受事件对象。<span lang="EN-US">request</span>是我们已经封装好的<span lang="EN-US">CustomerQuoteRequest</span>对象，也就是我们的消息对象；<span lang="EN-US">"CustomerRequests"</span>是事件目的<span lang="EN-US">url</span>，系统会根据这个<span lang="EN-US">url</span>将事件发送到<span lang="EN-US">vm://customer.requests</span>。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">3.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 微软雅黑;"><span style="font-size: 12pt;">Mule</span><span style="font-size: 12pt;">会把这个事件交给<span lang="EN-US">LoanBroker</span>组件来处理，因为它的<span lang="EN-US">inbound-router</span>的<span lang="EN-US">endpoint</span>配置为<span lang="EN-US">vm://customer.requests</span>。那么<span lang="EN-US">LoanBroker</span>组件拿到这个事件之后如何来处理这个事件呢？在<span lang="EN-US">Mule</span>的官方文档上有这样一句话：</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4"><span style="font-family: 微软雅黑;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt;">When an event is received for your component Mule dynamically chooses the method to invoke based on the payload type of the event.</span></span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说<span lang="EN-US">mule</span>会根据事件的<span lang="EN-US">payload</span>的种类来选择具体调用的<span lang="EN-US">component</span>的方法，在<span lang="EN-US">AsynchronousLoanBroker</span>我们找到了这个方法<span lang="EN-US">public Object getLoanQuote(CustomerQuoteRequest request) throws LoanBrokerException</span>，而它刚好符合我们的要求。这个方法主要是根据用户的输入生成一个<span lang="EN-US">LoanBrokerQuoteRequest</span>对象并返回。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">4.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span></span></span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">这个方法调用结束之后事件再如何进行呢？在官方文档上又有这一句：</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The response or outbound message is obtained using the following - </span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">If the method invoked is not void, (Callable.onEvent() returns an Object) the method return value is used. If null is returned no further processing is done for the current request. </span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">If the method is void, the parameters used to invoke the method are used. This assumes that the parameters themselves were altered or there was no change to the event. </span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">5.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">我们这里的方法是有返回值的，所以将方法的返回值作为<span lang="EN-US">outbound message</span>。注意此时事件的<span lang="EN-US">payload</span>已经为<span lang="EN-US">LoanBrokerQuoteRequest</span>了。</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">6.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">注意看<span lang="EN-US">LoanBroker</span>的<span lang="EN-US">outbound</span>的类型为<span lang="EN-US">OutboundPassThroughRouter</span>，它不做任何处理将事件传给<span lang="EN-US">endpoint </span>&mdash;&mdash;<span lang="EN-US">CreditAgencyGateway</span>。</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">7.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">事件会根据配置传到<span lang="EN-US">CreditAgencyGateway</span>这个<span lang="EN-US">component</span>里。这个实现类的实现类为<span lang="EN-US">ReflectionMessageBuilder</span>，文档上对这个类的解释为：</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Will try and set the result of an invocation as a bean property on the request message using reflection.</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说将在这个<span lang="EN-US">component</span>会将方法调用的结果设置为消息的一个属性，也就是<span lang="EN-US">LoanBrokerQuoteRequest</span>的一个属性。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里的<span lang="EN-US">outbound</span>有两个<span lang="EN-US">endpoint</span>，第一个<span lang="EN-US">endpoint</span>是发送到一个<span lang="EN-US">EJB</span>组件，该组件会根据<span lang="EN-US">LoanBrokerQuoteRequest</span>来判断用户的信用程度，并将信用信息以<span lang="EN-US">xml</span>字符串的形式返回，然后会调用<span lang="EN-US">CreditProfileXmlToCreditProfile</span>这一<span lang="EN-US">trasformer</span>来将<span lang="EN-US">String</span>类型的对象转换为<span lang="EN-US">CreditProfile</span>这一代表用户信用度的对象。结果返回后，将第一个返回结果<span lang="EN-US">CreditProfile</span>对象设置为<span lang="EN-US">LoanBrokerQuoteRequest</span>的一个属性，然后再将这个<span lang="EN-US">LoanBrokerQuoteRequest</span>发送到第二个<span lang="EN-US">endpoint</span>&mdash;&mdash;<span lang="EN-US">LenderGateway</span>。注意一下第一个<span lang="EN-US">endpoint</span>有一个属性<span lang="EN-US">remoteSync="true&rdquo;</span>，它表示<span lang="EN-US">component</span>将消息同步发送给第一个<span lang="EN-US">endpoint</span>，在结果返回前必须等待，否则发往<span lang="EN-US">LenderGateway</span>的事件里<span lang="EN-US">LoanBrokerQuoteRequest</span>对象的<span lang="EN-US">CreditProfile</span>属性就还没有设置了哦！</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">8.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span></span></span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">事件这一步就到了<span lang="EN-US">LenderGateway</span>这个<span lang="EN-US">component</span>了（<span lang="EN-US">mule</span>是根据<span lang="EN-US">endpoint</span>的配置来判断事件的流向，这里只不过名字<span lang="EN-US">component</span>的名字和<span lang="EN-US">endpoint</span>的名字设置为一样的了），这个<span lang="EN-US">component</span>的<span lang="EN-US">UMO</span>为<span lang="EN-US">BridgeComponent</span>，它会告诉<span lang="EN-US">mule</span>它永远不会被调用，只是简单的将<span lang="EN-US">inbound-endpoint</span>的输出作为<span lang="EN-US">outbound-endpoint</span>的输入，由于它永远不会被调用，所以性能上会表现比较好。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">9.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span></span></span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">这个<span lang="EN-US">component</span>的<span lang="EN-US">outbound</span>的类型为<span lang="EN-US">ChainingRouter</span>，它往往有多个<span lang="EN-US">endpoint</span>，会将上一个<span lang="EN-US">endpoint</span>的输出作为下一个<span lang="EN-US">endpoint</span>的输入。它首先会通过<span lang="EN-US">LenderService</span>，根据用户的信用度和具体的借款额度来选择可以对用户提供借贷的银行列表。根据上面讨论的规则，会调用<span lang="EN-US">DefaultLender</span>类的<span lang="EN-US">setLenderList</span>方法，由于该方法没有返回值，直接将此<span lang="EN-US">LoanBrokerQuoteRequest</span>作为下一个<span lang="EN-US">endpoint</span>的输入。第二个<span lang="EN-US">endpoint BankingGateway</span>将依次调用<span lang="EN-US">SetLendersAsRecipients </span>（下一步将详细表述），<span lang="EN-US">ObjectToJMSMessage</span>（将对象转化为<span lang="EN-US">JMS</span>消息的格式）。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-list: l2 level1 lfo4"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">10.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;<span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';"> </span></span></span></span></span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">BankingGateway</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">这个<span lang="EN-US">component</span>的<span lang="EN-US">outbound</span>的类型为<span lang="EN-US">StaticRecipientList</span>，它会根据静态配置的<span lang="EN-US">endpoint</span>来群发消息，但细细一看配置文件中也没有相关的配置啊！！其实，在上一步调用<span lang="EN-US">SetLendersAsRecipients</span>的如下代码：</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">context.getMessage().setProperty(StaticRecipientList.<em>RECIPIENTS_PROPERTY</em>, <span style="text-decoration: underline;">recipients</span>);</span><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">其中<span lang="EN-US">recipient</span>为<span lang="EN-US">String</span>类型的银行列表。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意到这个<span lang="EN-US">endpoint</span>有个配置<span lang="EN-US">&lt;reply-to address="LoanQuotes"/&gt;</span>，它表示每个银行返回的结果都发送到这个<span lang="EN-US">endpoint</span>中。</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑;"><span style="mso-list: Ignore">11.<span style="font-family: 'Times New Roman';">&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt;"><span style="font-family: 微软雅黑;">回头去看<span lang="EN-US">LoanBroker</span>这个<span lang="EN-US">component</span>有个配置如下：</span></span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&lt;response-router timeout="1000000"&gt;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;endpoint address="LoanQuotes"/&gt;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; TEXT-ALIGN: left; mso-char-indent-count: -1.0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span>&lt;router className="org.mule.examples.loanbroker.</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 29.9pt; TEXT-INDENT: 36pt; TEXT-ALIGN: left; mso-char-indent-count: 3.0; mso-para-margin-left: 2.85gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">routers.BankQuotesResponseAggregator"/&gt;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0; mso-para-margin-left: 1.71gd"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">&lt;/response-router&gt;</span></p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0">&nbsp;</p>
<p class="MsoListParagraph" align="left" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 0cm; TEXT-ALIGN: left; mso-char-indent-count: 0"><span style="font-size: 12pt; font-family: '微软雅黑','sans-serif';">这个<span lang="EN-US">response router</span>的作用其实就是将各个银行返回的结果进行汇总，然后呈现给用户看。</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://islandoo.javaeye.com/blog/230700#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>Wed, 20 Aug 2008 14:41:41 +0800</pubDate>
        <link>http://islandoo.javaeye.com/blog/230700</link>
        <guid>http://islandoo.javaeye.com/blog/230700</guid>
      </item>
      <item>
        <title>一次面试经历</title>
        <author>aqining</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aqining.javaeye.com">aqining</a>&nbsp;
          链接：<a href="http://aqining.javaeye.com/blog/230696" style="color:red;">http://aqining.javaeye.com/blog/230696</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天是来日本以后第一次到日本公司面试。面试后对自己没有任何感觉，就一个字，累！</p>
<p>&nbsp;</p>
<p>我毕业于国内二流大学，四年工作经验。在国内的时候，技术在公司算是比较好的。日语2级左右，口语和听力比较好。在日本前前后后干了2年左右。第一次想跳槽，想换个做中间件的日本公司。通过朋友介绍，得到了某个公司offer.</p>
<p>&nbsp;</p>
<p>本来很担心日语问题，结果对方说的，基本都搞明白了，自认为回答的也比较得体。后来一个技术部门的老大来提问，问了一些比较基础的内容，类加载，反射，OO,Cache和事务，还有一些比较新的技术Rails,基础的部分回答感觉还可以，Grails不懂，所以直接放弃，感觉还算满意。</p>
<p>&nbsp;</p>
<p>后来比较变态的地方来了，直接上机考试，我本以为是一个算法之类的东西，结果开始做了，才吓了一跳。</p>
<p>第一项四则运算，全是小学生的加减法，9分钟，80题，根本搞不定，时间严重不够，好像做了40题左右，就直接跳到第二项了。</p>
<p>&nbsp;</p>
<p>第二项图论，都是类似于IQ测试的题目，这个方面以前在Facebook的IQ测试出139的智商，本来还比较自信，结果还是时间不够，只完成1/2左右。</p>
<p>&nbsp;</p>
<p>第三项变化题，类似于图论，A图形结果某些管道之后，变成了A1,B经过其他几个相关管道之后，变成了B1,让你计算这个管道是用来干吗的，然后题目是C图形经过几个管道之后便成什么样子。规律还比较好找，但是还是时间不够。只完成了1/2左右。</p>
<p>&nbsp;</p>
<p>第四项命令题，是在第三项基础上加深了一层，不仅要考虑图形的变化，还要考虑排列的顺序，被雷到了，只完成了1/3左右。</p>
<p>&nbsp;</p>
<p>第五项，自我总结选择，大概是测试性格之类一些题目，68题，无时间限制，很多问题出现了5次，6次，甚至更多。可能是文化上的差异，很多问题我都不想选择，可是必须要选择一个，有些问题我都想选，可是也还是只能选择一个。无语...</p>
<p>&nbsp;</p>
<p>从面试到笔试，用了3个半小时，空调开的贼冷，出来的时候，人快瘫了！</p>
<p>&nbsp;</p>
<p>综合素质和细节决定了成败，结果如何都无所谓了。得之我幸，失之我命......</p>
          <br/>
          <span style="color:red;">
            <a href="http://aqining.javaeye.com/blog/230696#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>Wed, 20 Aug 2008 14:26:27 +0800</pubDate>
        <link>http://aqining.javaeye.com/blog/230696</link>
        <guid>http://aqining.javaeye.com/blog/230696</guid>
      </item>
      <item>
        <title>JAVA EXCEL API的使用</title>
        <author>crane.ding</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://crane-ding.javaeye.com">crane.ding</a>&nbsp;
          链接：<a href="http://crane-ding.javaeye.com/blog/230690" style="color:red;">http://crane-ding.javaeye.com/blog/230690</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用Java Excel API生成Excel,以下是做了一个简单的例子(<a href="http://www.andykhan.com/jexcelapi/tutorial.html#reading" target="_blank">官方文档</a>)<br /><br /><pre name="code" class="java">public class JavaExcelAPI extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doGet(req, resp);
		ServletOutputStream os = resp.getOutputStream();

		resp.reset();
		resp.setContentType("application/vnd.ms-excel;charset=UTF-8");
		resp.setHeader("Content-Disposition", "attachment; filename="
				+ new String("name".getBytes(), "iso-8859-1") + ".xls");

		WritableWorkbook workbook = Workbook.createWorkbook(os);
		WritableSheet sheet = workbook.createSheet("name", 0);
		int col = 0, row = 0, col2 = 1;
		try {
			sheet.addCell(new Label(col, row, "cont"));
			sheet.addCell(new Label(col2, row, "cont"));
			sheet.mergeCells(col, row, col2, row);
			workbook.write();
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		} finally {
			try {
				workbook.close();
			} catch (WriteException e) {
				e.printStackTrace();
			}
			os.flush();
			os.close();
		}
	}
}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://crane-ding.javaeye.com/blog/230690#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, 20 Aug 2008 14:14:40 +0800</pubDate>
        <link>http://crane-ding.javaeye.com/blog/230690</link>
        <guid>http://crane-ding.javaeye.com/blog/230690</guid>
      </item>
      <item>
        <title>rapid-framework v1.0.x带控制条的演示视频放出</title>
        <author>badqiu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://badqiu.javaeye.com">badqiu</a>&nbsp;
          链接：<a href="http://badqiu.javaeye.com/blog/230674" style="color:red;">http://badqiu.javaeye.com/blog/230674</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>很多同学报怨rapid-framework的演示视频太快,现在提供带控制条的版本.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>下载地址: <a href="http://code.google.com/p/rapid-framework/downloads/list">http://code.google.com/p/rapid-framework/downloads/list</a><a href="http://rapid-framework.googlecode.com/files/rapid-framework_quickstart_movie_for_v1.0.x.zip"></a></p>
<p>&nbsp;</p>
<p>另外很高兴上个视频的下载量突破1万,项目的下载量也超过8000<img src="../../images/smiles/icon_biggrin.gif" alt="" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://badqiu.javaeye.com/blog/230674#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, 20 Aug 2008 13:28:22 +0800</pubDate>
        <link>http://badqiu.javaeye.com/blog/230674</link>
        <guid>http://badqiu.javaeye.com/blog/230674</guid>
      </item>
      <item>
        <title>美丽的京剧</title>
        <author>bvbook</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bvbook.javaeye.com">bvbook</a>&nbsp;
          链接：<a href="http://bvbook.javaeye.com/blog/230661" style="color:red;">http://bvbook.javaeye.com/blog/230661</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: 20px;"><span></span></span></p>
<p style="text-align: center;"><span style="font-size: x-large; color: #000000; font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span style="font-size: x-small; font-family: Verdana;">&nbsp;</span>
<p style="text-align: center;"><span style="font-size: x-large; color: #000000; font-family: 宋体; mso-bidi-font-size: 10.5pt;"><strong>美丽的京剧</strong></span></p>
<p><span style="color: #000000;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;">
<p align="left" style="FONT-WEIGHT: normal; FONT-SIZE: 12px; OVERFLOW: auto; COLOR: #b2b2b2; LAYOUT-FLOW: horizontal; LINE-HEIGHT: normal; FONT-FAMILY: 宋体; TEXT-ALIGN: left"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span style="font-size: 20px;"><span><span style="color: #000000;"><span><span style="font-size: 14px;"><span style="font-size: 16px;"><span style="font-size: 16px;"><span style="font-size: 18px;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; </span></span></span></span></span></span></span></span></span></span></p>
<p align="left" style="FONT-WEIGHT: normal; FONT-SIZE: 12px; OVERFLOW: auto; COLOR: #b2b2b2; LAYOUT-FLOW: horizontal; LINE-HEIGHT: normal; FONT-FAMILY: 宋体; TEXT-ALIGN: left"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span style="font-size: 20px;"><span><span style="color: #000000;"><span><span style="font-size: 14px;"><span style="font-size: 16px;"><span style="font-size: 16px;"><span style="font-size: 18px;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 本书以中国京剧为主，同时兼顾地方戏曲剧种。</span></span></span></span></span></span></span></span></span></span></p>
<p align="left" style="FONT-WEIGHT: normal; FONT-SIZE: 12px; OVERFLOW: auto; COLOR: #b2b2b2; LAYOUT-FLOW: horizontal; LINE-HEIGHT: normal; FONT-FAMILY: 宋体; TEXT-ALIGN: left"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span style="color: #000000;"><span style="font-size: 20px;"><span><span><span><span style="font-size: 14px;"><span style="font-size: 16px;"><span style="font-size: 16px;"><span style="font-size: 16px;"><span style="font-size: 18px;"><span>&nbsp;&nbsp;&nbsp; 按</span><span style="font-size: 16px;"><span style="font-size: medium;">生</span></span></span></span></span></span></span></span></span></span></span><span style="font-size: 18px;"><img src="http://static1.photo.sina.com.cn/bmiddle/5a425cf5g547a7566b970" height="20" alt="" style="width: 39px; height: 39px;" width="16" /></span><span style="font-size: 18px;">旦</span><span style="font-size: 18px;"><img src="http://static13.photo.sina.com.cn/bmiddle/5a425cf5g547a79d3c42c" height="38" alt="" style="width: 38px; height: 40px;" width="35" /></span><span style="font-size: 18px;">净</span><span style="font-size: 18px;"><img src="http://static2.photo.sina.com.cn/bmiddle/5a425cf5g547a92606a31" height="50" alt="" style="width: 42px; height: 44px;" width="58" /></span></span><a href="http://blog.photo.sina.com.cn/showpic.html#blogid=5a425cf50100agtv&amp;blogid=5a425cf50100agrh&amp;url=http://static11.photo.sina.com.cn/orignal/5a425cf5g547a7cff593a" target="_blank"></a><span style="color: #000000;"><span style="font-size: 18px;">丑</span><span style="font-size: 18px;"><img src="http://static6.photo.sina.com.cn/bmiddle/5a425cf5g547aac2ded65" height="37" alt="" style="WIDTH: 42px; HEIGHT: 42px" width="31" /></span><span style="font-size: medium;">四个行当进行分类，构图上兼顾演员特写和演出场面。书中所有照片都是作者30年来拍摄的精华作品，突出老演员和已故的名演员，和一些名演员、名剧目的演出背景介绍以及照片背后感人的故事。全面再现戏曲名家的舞台演出，记录当时珍贵场景。</span></span></span></p>
<p align="left" style="FONT-WEIGHT: normal; FONT-SIZE: 12px; OVERFLOW: auto; COLOR: #b2b2b2; LAYOUT-FLOW: horizontal; LINE-HEIGHT: normal; FONT-FAMILY: 宋体; TEXT-ALIGN: left">&nbsp;</p>
<p align="left" style="FONT-WEIGHT: normal; FONT-SIZE: 12px; OVERFLOW: auto; COLOR: #b2b2b2; LAYOUT-FLOW: horizontal; LINE-HEIGHT: normal; FONT-FAMILY: 宋体; TEXT-ALIGN: left"><span style="font-size: 20px;"><span><span><span style="font-size: 14px;"><span style="font-size: 16px;"><span style="color: #000000;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;">
<p align="left" style="FONT-WEIGHT: normal; FONT-SIZE: 12px; OVERFLOW: auto; COLOR: #b2b2b2; LAYOUT-FLOW: horizontal; LINE-HEIGHT: normal; FONT-FAMILY: 宋体; TEXT-ALIGN: left"><span style="font-size: 20px;"><span><span><span style="font-size: 14px;"><span style="font-size: 16px;"><span style="color: #000000;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span style="color: #000000;"><span><span><span style="font-size: 18px;"><span style="color: #000000; font-family: 宋体; mso-bidi-font-size: 10.5pt;"><span>&nbsp;&nbsp;&nbsp; 全书作者以独特的摄影艺术表现手法，把舞台上的表演升华、再现到摄影作品之中。作品动静结合，表现演员的情绪和表演力度、速度，被曹禺大师誉为流动着音乐的美。</span></span><span style="font-size: 18px;"><strong>&nbsp;</strong></span></span></span></span></span>
<p><strong>&nbsp;</strong></p>
</span></span></span></span></span></span></span></p>
</span></span></span></span></span></span></span></span></p>
</span></span></p>
</span></p>
<p style="text-align: center;"><span style="font-size: x-large; color: #000000; font-family: 宋体; mso-bidi-font-size: 10.5pt;"><strong><img src=" C:\Documents and Settings\Administrator\桌面\123.jpg" alt="" /></strong></span></p>
<p style="text-align: center;"><strong><span style="font-size: x-large; font-family: 宋体;"><span style="font-size: medium; font-family: Verdana;">技术凝聚实力 专业创新出版 </span>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><strong></strong></p>
<p style="text-align: left;"><strong></strong></p>
<p style="text-align: left;"><strong></strong></p>
<p style="text-align: left;"><strong></strong></p>
<p style="text-align: left;"><span style="color: #000000;"><span><span><span style="font-size: 18px;"><span style="font-size: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://blog.sina.com.cn/broadviewdesign">http://blog.sina.com.cn/broadviewdesign</a></span></span></span></span></span></p>
</span></strong>
<p style="text-align: center;"><img src="C:\Documents and Settings\Administrator\桌面\1234.jpg" alt="" /></p>
<p style="text-align: left;"><span style="font-size: x-large; color: #000000; font-family: 宋体; mso-bidi-font-size: 10.5pt;"><strong></strong></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://bvbook.javaeye.com/blog/230661#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, 20 Aug 2008 13:08:50 +0800</pubDate>
        <link>http://bvbook.javaeye.com/blog/230661</link>
        <guid>http://bvbook.javaeye.com/blog/230661</guid>
      </item>
      <item>
        <title>C# 写Excel 代码</title>
        <author>laowood</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laowood.javaeye.com">laowood</a>&nbsp;
          链接：<a href="http://laowood.javaeye.com/blog/230652" style="color:red;">http://laowood.javaeye.com/blog/230652</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: #0000ff;"><span style="color: #000000;">C# 中使用 Excel </span></span></p>
<p><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Reflection;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Runtime.InteropServices;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Microsoft.Office.Interop.Excel;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> ExcelApplication </span><span style="color: #000000;">=</span><span style="color: #000000;"> Microsoft.Office.Interop.Excel.ApplicationClass;<br /><br /></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> ExcalDemo<br /></span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="color: #000000;">{<br /></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> ExcelFiles<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> CreateExcelFiles()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">创建一个 Excel 实例</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExcelApplication excel </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> ExcelApplication();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 注释掉的语句是:从磁盘指定位置打开一个 Excel 文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">excel.Workbooks.Open("demo.xls", Missing.Value, Missing.Value, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">Missing.Value,Missing.Value, Missing.Value, Missing.Value, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">Missing.Value, Missing.Value, Missing.Value, Missing.Value, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">Missing.Value, Missing.Value, Missing.Value, Missing.Value);</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.Visible </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 不显示 Excel 文件,如果为 true 则显示 Excel 文件</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.Workbooks.Add(Missing.Value);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 添加工作簿</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Worksheet sheet </span><span style="color: #000000;">=</span><span style="color: #000000;"> (Worksheet)excel.ActiveSheet;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取当前工作表</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Range range </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建一个空的单元格对象</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sheet.get_Range(sheet.Cells[29,2],sheet.Cells[29,2]).Orientation=Excel.XlOrientation.xlVertical;//字体竖直居中在单元格内<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range </span><span style="color: #000000;">=</span><span style="color: #000000;"> sheet.get_Range(</span><span style="color: #000000;">"</span><span style="color: #000000;">A1</span><span style="color: #000000;">"</span><span style="color: #000000;">, Missing.Value);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取单个单元格</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.RowHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">20</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置行高</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.ColumnWidth </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">20</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置列宽</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Borders.LineStyle </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格边框</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Font.Bold </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 加粗字体</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Font.Size </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">20</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置字体大小</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Font.ColorIndex </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">5</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置字体颜色</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Interior.ColorIndex </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">6</span><span style="color: #000000;">;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格背景色</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.HorizontalAlignment </span><span style="color: #000000;">=</span><span style="color: #000000;"> XlHAlign.xlHAlignCenter;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格水平居中</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.VerticalAlignment </span><span style="color: #000000;">=</span><span style="color: #000000;"> XlVAlign.xlVAlignCenter;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格垂直居中</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Value2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">设置行高和列宽</span><span style="color: #000000;">"</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格的值</span></span></span></span></span></p>
<p><span><span><span><span><span style="color: #008000;"><span><span><span><span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range </span><span style="color: #000000;">=</span><span style="color: #000000;"> sheet.get_Range(</span><span style="color: #000000;">"</span><span style="color: #000000;">B2</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">D4</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取多个单元格</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Merge(Missing.Value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 合并单元格</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Columns.AutoFit();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置列宽为自动适应</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.NumberFormatLocal </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">#,##0.00</span><span style="color: #000000;">"</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格格式为货币格式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格左边框加粗</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Borders[XlBordersIndex.xlEdgeLeft].Weight </span><span style="color: #000000;">=</span><span style="color: #000000;"> XlBorderWeight.xlThick;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置单元格右边框加粗</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Borders[XlBordersIndex.xlEdgeRight].Weight </span><span style="color: #000000;">=</span><span style="color: #000000;"> XlBorderWeight.xlThick;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range.Value2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">合并单元格</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 页面设置</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.PaperSize </span><span style="color: #000000;">=</span><span style="color: #000000;"> XlPaperSize.xlPaperA4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置页面大小为A4</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.Orientation </span><span style="color: #000000;">=</span><span style="color: #000000;"> XlPageOrientation.xlPortrait; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置垂直版面</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.HeaderMargin </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0.0</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置页眉边距</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.FooterMargin </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0.0</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置页脚边距</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.LeftMargin </span><span style="color: #000000;">=</span><span style="color: #000000;"> excel.InchesToPoints(</span><span style="color: #000000;">0.354330708661417</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置左边距</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.RightMargin </span><span style="color: #000000;">=</span><span style="color: #000000;"> excel.InchesToPoints(</span><span style="color: #000000;">0.354330708661417</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置右边距</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.TopMargin </span><span style="color: #000000;">=</span><span style="color: #000000;"> excel.InchesToPoints(</span><span style="color: #000000;">0.393700787401575</span><span style="color: #000000;">);&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置上边距</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.BottomMargin </span><span style="color: #000000;">=</span><span style="color: #000000;"> excel.InchesToPoints(</span><span style="color: #000000;">0.393700787401575</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置下边距</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PageSetup.CenterHorizontally </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置水平居中<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 打印文件</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 保存文件到程序运行目录下</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sheet.SaveAs(System.Windows.Forms.Application.StartupPath </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">\demo.xls</span><span style="color: #000000;">"</span><span style="color: #000000;">, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.ActiveWorkbook.Close(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 关闭 Excel 文件且不保存</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Excep