<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Java论坛最新讨论 - JavaEye</title>
    <description>Java编程、Java Web开发、Java企业应用、Java设计模式、Java开源框架、Java应用服务器 <br/>
圈子: 
<a href="http://android.group.javaeye.com" target="_blank">Android</a>
<a href="http://jbpm.group.javaeye.com" target="_blank">JBPM</a>
<a href="http://jsfgroup.group.javaeye.com" target="_blank">JSF</a>
<a href="http://seam.group.javaeye.com" target="_blank">Seam</a>
<a href="http://tapestrying.group.javaeye.com" target="_blank">Tapestry</a>
<a href="http://grails.group.javaeye.com" target="_blank">Groovy</a>
<a href="http://lucene-group.group.javaeye.com" target="_blank">Lucene</a>
<a href="http://ecside.group.javaeye.com" target="_blank">GT-Grid</a>

 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</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>现在用grails来做项目是不是太激进</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://vansention.javaeye.com">范三山</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250349" style="color:red;">http://www.javaeye.com/topic/250349</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在要做一个互联网的项目，不是很大。人员大概就是两个java程序员，美工另算。我一直以为，用java来做中小型的互联网项目不是一个明智的选择。这个项目如果我们按照以往的方法不外乎是struts2+spring+hibernate，我觉得效率不是很高。<br />&nbsp;&nbsp;&nbsp; 我前一段时间自己弄过一下grails，写了一个blog程序，感觉非常棒。我想这个项目用grails十分的不错，因为时间比较紧，用grails来做会非常的快。但是我现在有一些担心<br />&nbsp;&nbsp;&nbsp; 1.grails的性能问题，不过我不太相信瓶颈会出现在程序端，怎么说也是数据库先有瓶颈。<br />&nbsp;&nbsp;&nbsp; 2.将来的维护问题，如果我们不在了维护的人还得学grails。<br />&nbsp;&nbsp;&nbsp; 3.ide不怎么好用，几乎是完全没有作用。我写grails程序一般用netbeans，不知道那位老兄会不会不习惯。IntelliJ IDEA是不会考虑的，实在没有兴趣去搞注册码。<br />&nbsp;&nbsp;&nbsp; 虽然很看好grails，但是还是会有些担心，不知道大家怎么看的。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250349" style="color:red;">已有 <strong>42</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 08 Oct 2008 15:47:12 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250349</link>
        <guid>http://www.javaeye.com/topic/250349</guid>
      </item>
          <item>
        <title>构建全栈式Flex、BlazeDS和Spring集成解决方案</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jinyongzhang.javaeye.com">jinyongzhang</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250485" style="color:red;">http://www.javaeye.com/topic/250485</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="color: #000000;"><span style="font-size: 14pt; font-family: 宋体;">随着富</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Internet</span>
<span style="font-size: 14pt; font-family: 宋体;">应用（</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">RIA</span>
<span style="font-size: 14pt; font-family: 宋体;">）技术的不断成熟，将类似于</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Adobe Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">这样的</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">RIA</span>
<span style="font-size: 14pt; font-family: 宋体;">应用与健壮的服务器端技术进行集成就变得越来越重要了。</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Java</span>
<span style="font-size: 14pt; font-family: 宋体;">开发者最喜欢的服务器端框架之一</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Spring</span>
<span style="font-size: 14pt; font-family: 宋体;">将在这个过程中扮演着重要的角色。</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"></span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="color: #000000;"><span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Spring</span>
<span style="font-size: 14pt; font-family: 宋体;">的控制反转（</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://en.wikipedia.org/wiki/Inversion_of_Control" target="_blank"><span style="text-decoration: underline;"><span style="color: #0000ff;">Inversion of Control</span>
</span>
</a>
</span>
<span style="color: #000000;"><span style="font-size: 14pt; font-family: 宋体;">，</span>
<span style="font-size: 14pt; font-family: 'Arial','sans-serif';"> </span>
<span style="font-size: 14pt; font-family: 宋体;">即</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">IoC</span>
<span style="font-size: 14pt; font-family: 宋体;">）的主要思想就是让容器实例化组件（并且注入其依赖）。但是在默认情况下，由</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">客户端远程访问的组件是在服务器端由</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">目的文件实例化的。所以</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">与</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Spring</span>
<span style="font-size: 14pt; font-family: 宋体;">集成的关键在于配置</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">目的文件以使其能够让</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Spring</span>
<span style="font-size: 14pt; font-family: 宋体;">容器来管理实例化的</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Spring beans</span>
<span style="font-size: 14pt; font-family: 宋体;">。</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">数据服务支持工厂的概念以便可以实例化这类客户化组件。工厂的作用仅仅在于向</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">目的文件提供准备好的组件实例，而不是让</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"> Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">目的文件自己去实例化这些组件。</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"></span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://sebastien-arbogast.com/2008/04/10/flex-spring-and-blazeds-the-full-stack/" target="_blank"><span style="text-decoration: underline;"><span style="color: #800080;">S&eacute;bastien Arbogast</span>
</span>
</a>
</span>
<span style="color: #000000;"><span style="font-size: 14pt; font-family: 宋体;">在不遗余力地发表一系列博文，以阐述如何构建全栈式</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">、</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">BlazeDS</span>
<span style="font-size: 14pt; font-family: 宋体;">和</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Spring</span>
<span style="font-size: 14pt; font-family: 宋体;">集成解决方案。</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Arbogast</span>
<span style="font-size: 14pt; font-family: 宋体;">的这个全栈式集成，从下到上包括如下内容：</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://www.jboss.org/"><span style="text-decoration: underline;"><span style="color: #0000ff;">JBoss</span>
</span>
</a>
</span>
<span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">作为应用服务器、</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://www.mysql.org/"><span style="text-decoration: underline;"><span style="color: #0000ff;">MySQL</span>
</span>
</a>
</span>
<span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">作为数据存储、</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://www.hibernate.org/" target="_blank"><span style="text-decoration: underline;"><span style="color: #0000ff;">Hibernate</span>
</span>
</a>
</span>
<span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">完成数据访问、</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://springframework.org/"><span style="text-decoration: underline;"><span style="color: #0000ff;">Spring</span>
</span>
</a>
</span>
<span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">用来构建业务层、</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" target="_blank"><span style="color: #810081;"><span style="text-decoration: underline;">BlazeDS</span>
</span>
</a>
</span>
<span style="color: #000000;"><span style="font-size: 14pt; font-family: 宋体;">作为远程服务、</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Flex</span>
<span style="font-size: 14pt; font-family: 宋体;">用来构建富客户端。该系统使用</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://maven.apache.org/" target="_blank"><span style="text-decoration: underline;"><span style="color: #0000ff;">Maven</span>
</span>
</a>
</span>
<span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">及</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://code.google.com/p/flex-mojos/" title="flex-compiler-mojo插件" target="_blank"><span style="text-decoration: underline;"><span style="color: #0000ff;">flex-compiler-mojo<span lang="EN-US" style="font-family: 宋体;"><span lang="EN-US">插件</span>
</span>
</span>
</span>
</a>
</span>
<span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">进行构建。</span>
</span>
<span class="MsoFootnoteReference"><span lang="EN-US" style="font-size: 14pt; color: red; font-family: 'Arial','sans-serif';"><span><span class="MsoFootnoteReference"><span lang="EN-US" style="font-size: 14pt; color: red; font-family: 'Arial','sans-serif';">[1]</span>
</span>
</span>
</span>
</span>
</p>
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14pt; color: black; font-family: 宋体;"><strong><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/ematrix001/EntryImages/20081008/fullstack633590931760833750.PNG" height="382" align="center" alt="" width="390" />
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14pt; color: black; font-family: 宋体;"><strong></strong>
</span>
&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14pt; color: black; font-family: 宋体;"><strong>我翻译的中文文档下载地址：</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 14pt; color: #333333; font-family: 宋体;"><span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><span><span style="font-size: 14pt; color: #333333; font-family: 宋体;"><span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://download.csdn.net/source/672504"><span style="text-decoration: underline;"><span style="color: #800080;">http://download.csdn.net/source/672504</span>
</span>
</a>
</span>
</span>
</span>
</span>
</span>
</span>
</span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #000000;"></span>
&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #000000;"><span style="font-size: 14pt; font-family: 宋体;">&nbsp;本文档就是</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';">Arbogast</span>
<span style="font-size: 14pt; font-family: 宋体;">发布在</span>
</span>
<span lang="EN-US" style="font-size: 14pt; color: #333333; font-family: 'Arial','sans-serif';"><a href="http://www.adobe.com/devnet"><span style="text-decoration: underline;"><span style="color: #0000ff;">Adobe Developer Connection</span>
</span>
</a>
</span>
<span style="font-size: 14pt; color: #333333; font-family: 宋体;">上一系列文章的中文翻译版本。我使用了先直译后意译的方法，尽量做到语言流畅、通俗而易懂；修补了英文原文的</span>
<span lang="EN-US" style="font-size: 14pt; color: #333333; font-family: 'Arial','sans-serif';">3</span>
<span style="font-size: 14pt; color: #333333; font-family: 宋体;">处疏漏</span>
<span style="font-size: 14pt; color: #333333; font-family: 'Arial','sans-serif';"> </span>
<span style="font-size: 14pt; color: #333333; font-family: 宋体;">，添加了</span>
<span lang="EN-US" style="font-size: 14pt; color: #333333; font-family: 'Arial','sans-serif';">2</span>
<span style="font-size: 14pt; color: #333333; font-family: 宋体;">张运行效果图，希望能帮助你理解。当然，翻译不恰之处，敬请指正。</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: #000000;"><span style="font-size: 14pt; font-family: 宋体;">&nbsp;以下是英文原文链接：</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"></span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">第一部分：</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://www.adobe.com/devnet/flex/articles/fullstack_pt1.html"><span style="text-decoration: underline;"><span style="color: #0000ff;">http://www.adobe.com/devnet/flex/articles/fullstack_pt1.html</span>
</span>
</a>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">第二部分：</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://www.adobe.com/devnet/flex/articles/fullstack_pt2.html"><span style="text-decoration: underline;"><span style="color: #0000ff;">http://www.adobe.com/devnet/flex/articles/fullstack_pt2.html</span>
</span>
</a>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14pt; font-family: 宋体;"><span style="color: #000000;">第三部分：</span>
</span>
<span lang="EN-US" style="font-size: 14pt; font-family: 'Arial','sans-serif';"><a href="http://www.adobe.com/devnet/flex/articles/fullstack_pt3.html"><span style="color: #800080;"><span style="text-decoration: underline;">http://www.adobe.com/devnet/flex/articles/fullstack_pt3.html</span>
</span>
</a>
</span>
</p>
<p>
<br />
<span style="color: #800080;"><span style="text-decoration: underline;">
<hr size="1" />
</span>
</span>

<span class="MsoFootnoteReference"><span lang="EN-US" style="font-size: 14pt; color: red;"><span><span class="MsoFootnoteReference"><span lang="EN-US" style="font-size: 14pt; color: red; font-family: 'Calibri','sans-serif';">[1]</span>
</span>
</span>
</span>
</span>
<span style="font-family: Calibri;"><span lang="EN-US" style="font-size: 14pt; color: red;"> </span>
<span lang="EN-US" style="color: red;"><span>&nbsp;</span>
</span>
</span>
<span style="color: red; font-family: 宋体;">以上文字摘引自</span>
<span lang="EN-US" style="color: red;"><a href="http://www.infoq.com/cn/news/2008/05/integrate-flex-spring"><span style="color: red;"><span style="text-decoration: underline;"><span style="font-family: Calibri;">http://www.infoq.com/cn/news/2008/05/integrate-flex-spring</span>
</span>
</span>
</a>
</span>
</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250485" style="color:red;">已有 <strong>3</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 08 Oct 2008 20:48:19 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250485</link>
        <guid>http://www.javaeye.com/topic/250485</guid>
      </item>
          <item>
        <title>让你的 Ibatis2 也支持Annotation</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cnoss.javaeye.com">cnoss</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251047" style="color:red;">http://www.javaeye.com/topic/251047</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong><span style="color: Blue">在支持xml配置方式的基础上增加了对annotation的支持，用户可以根据自己的喜好来选择或者两种方式并存。</span></strong><br /><br />详情请大家看：<a href="http://www.rest4g.org/viewthread.php?tid=12&amp;extra=page%3D1" target="_blank">http://www.rest4g.org/viewthread.php?tid=12&amp;extra=page%3D1</a><br /><br />代码示例如下：<br />Account.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;
public class Account {
  private int id;
  private String firstName;
  private String lastName;
  private String emailAddress;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public String getEmailAddress() {
    return emailAddress;
  }

  public void setEmailAddress(String emailAddress) {
    this.emailAddress = emailAddress;
  }

}
</pre>AccountService.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;

import java.sql.SQLException;
import java.util.List;

import org.jrest4guice.persistence.ibatis.annotations.Delete;
import org.jrest4guice.persistence.ibatis.annotations.IbatisDao;
import org.jrest4guice.persistence.ibatis.annotations.Insert;
import org.jrest4guice.persistence.ibatis.annotations.Result;
import org.jrest4guice.persistence.ibatis.annotations.ResultMap;
import org.jrest4guice.persistence.ibatis.annotations.Select;
import org.jrest4guice.persistence.ibatis.annotations.Update;
import org.jrest4guice.transaction.annotations.Transactional;
import org.jrest4guice.transaction.annotations.TransactionalType;

import com.google.inject.Inject;
import com.ibatis.sqlmap.client.SqlMapClient;

@IbatisDao
@SuppressWarnings("unchecked")
@Transactional
@ResultMap(id = "accountResultMap", result = {
		@Result(property = "id", column = "id"),
		@Result(property = "firstName", column = "firstName"),
		@Result(property = "lastName", column = "lastName"),
		@Result(property = "emailAddress", column = "emailAddress") }, resultClass = Account.class)
@Cachemodel(id = "account-cache", flushInterval = "24", flushOnExecute = {
		"insertAccount", "updateAccount", "deleteAccount" }, type = "LRU", 
		property = { @Property(name = "size", value = "100") })
public class AccountService {
	@Inject
	private SqlMapClient sqlMapper;

	@Select(id = "selectAllAccounts", sql = "select * from ACCOUNT", 
			resltMap = "accountResultMap", cacheModel = "account-cache")
	@Transactional(type = TransactionalType.READOLNY)
	public List&lt;Account> findAll() throws SQLException {
		return sqlMapper.queryForList("selectAllAccounts");
	}

	@Select(sql = "select id ,firstName,lastName,emailAddress from "
			+ "ACCOUNT where id = #id#")
	@Transactional(type = TransactionalType.READOLNY)
	public Account getAccountById(int id) throws SQLException {
		return (Account) sqlMapper.queryForObject("getAccountById", id);
	}

	@Insert(id = "insertAccount", sql = "insert into ACCOUNT (id,firstName,"
			+ "lastName,emailAddress) values (#id#, #firstName#, #lastName#, "
			+ "#emailAddress#)")
	public void createAccount(Account account) throws SQLException {
		sqlMapper.insert("insertAccount", account);
	}

	@Update(sql = "update ACCOUNT set firstName = #firstName#,lastName = "
			+ "#lastName#,emailAddress = #emailAddress# where id = #id#")
	public void updateAccount(Account account) throws SQLException {
		sqlMapper.update("updateAccount", account);
	}

	@Delete(id = "deleteAccount", sql = "delete from ACCOUNT where id = #id#")
	public void deleteAccount(int id) throws SQLException {
		sqlMapper.delete("deleteAccount", id);
	}

	@Select(id = "queryAccounts", 
		sql = "select * from ACCOUNT "
			+ "&lt;dynamic prepend=\"where\">"
			+ " &lt;isNotNull prepend=\"and\" property=\"firstName\">"
			+ "    firstName = #firstName#" 
			+ " &lt;/isNotNull>"
			+ " &lt;isNotNull prepend=\"and\" property=\"lastName\">"
			+ "    lastName = #lastName#" 
			+ " &lt;/isNotNull>"
			+ " &lt;isNotNull prepend=\"and\" property=\"emailAddress\">"
			+ "    emailAddress = #emailAddress#" 
			+ " &lt;/isNotNull>"
			+ "&lt;/dynamic> " 
			+ "order by lastName", resltMap = "accountResultMap", 
			cacheModel = "account-cache")
	@Transactional(type = TransactionalType.READOLNY)
	/**
	 * 动态SQL查询
	 */
	public List&lt;Account> queryAccounts(Account account) throws SQLException {
		return sqlMapper.queryForList("queryAccounts",account);
	}
}
</pre>AccountServiceTest.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;

import java.sql.SQLException;
import java.util.List;

import junit.framework.Assert;

import org.jrest4guice.guice.GuiceContext;
import org.jrest4guice.guice.PersistenceGuiceContext;
import org.junit.BeforeClass;
import org.junit.Test;

public class AccountServiceTest {
	private static AccountService service;

	@BeforeClass
	public static void setUp() throws Exception {
		// 初始化JRest4Guice
		PersistenceGuiceContext.getInstance().useIbatis(
				"org.jrest4guice.persistence.ibatis").init();
		// 获取服务
		service = GuiceContext.getInstance().getBean(AccountService.class);
	}

	@Test
	public void doTest() {
		List&lt;Account> accounts;
		try {
			Account account = new Account();
			account.setFirstName("张");
			account.setLastName("学友");
			account.setEmailAddress("jackey@rest4g.org");
			// 添加
			service.createAccount(account);

			account = new Account();
			account.setFirstName("刘");
			account.setLastName("学友");
			account.setEmailAddress("test@rest4g.org");
			// 添加
			service.createAccount(account);
			
			//查询（按lastName）
			Account queryCondition = new Account();
			queryCondition.setLastName("学友");
			accounts = service.queryAccounts(queryCondition);
			Assert.assertEquals(2, accounts.size());
			
			//查询（按firstName和lastName）
			queryCondition.setFirstName("张");
			accounts = service.queryAccounts(queryCondition);
			Assert.assertEquals(1, accounts.size());

			// 修改
			account = accounts.get(0);
			account.setFirstName("何");
			service.updateAccount(account);
			account = service.getAccountById(account.getId());
			Assert.assertNotNull(account);
			Assert.assertEquals("何", account.getFirstName());

			//查询所有
			accounts = service.findAll();
			Assert.assertEquals(2, accounts.size());

			// 删除
			for (Account ac : accounts){
				service.deleteAccount(ac.getId());
			}
			
			//断言删除的结果
			accounts = service.findAll();
			Assert.assertEquals(0, accounts.size());
		} catch (SQLException e) {
			Assert.fail(e.getLocalizedMessage());
		}
	}
}
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251047" style="color:red;">已有 <strong>30</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 07:17:02 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251047</link>
        <guid>http://www.javaeye.com/topic/251047</guid>
      </item>
          <item>
        <title>Pomer：基于Flex和Java EE的信息管理系统基础框架</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ke2000.javaeye.com">ke2000</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/249587" style="color:red;">http://www.javaeye.com/topic/249587</a>&nbsp;
          发表时间: 2008年10月06日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Pomer是几个无聊的人利用业余时间做的希望不是无聊的一个基础框架：），目前的功能还不完整，不过我们这几个无聊的人会继续做下去，现在推出的版本功能：一个可以运行的基础框架和代码生成器。<br />&nbsp;&nbsp;&nbsp; 欢迎大家试用，欢迎拍砖 ^_^,以下是简单的介绍和说明，详细请访问:<a href="http://www.pomer.org.cn" target="_blank">http://www.pomer.org.cn</a><br />&nbsp;&nbsp;&nbsp; * Flex 开发框架 <br />Pomer主要采用spring和hibernate做为后台框架，通过blazeds(LCDS)RemoteObject?与java后台通信，前台采用Cairngorm MVC框架， Pomer框架主要作用就是简化blazeds(LCDS)RemoteObject的访问方式，提高开发效率。Pomer通过注解 (Annotation)将普通java对象，Spring Bean和EJB发布为远程对象（RemoteObject）提供给flex访问，而不需要进行任何配置 。<br /><br />&nbsp;&nbsp;&nbsp; * 代码生成器 <br />Pomer 代码生成器包括两个部分，一个是强大灵活通用代码生成器模型和一套基于Pomer的默认模板。 Pomer通用代码生成器采用freemark做为模板引擎，可以生成任何基于数据表或javaPojo和java接口的代码，用户只需提供 freemark的模板即可。 Pomer提供的默认生成功能和默认模板可以通过数据库生成基于Pomer框架可运行的增删改查代码，也可以从javaBean生成 RemoteObject的数据传输对象、表单和列表，还能通过java接口生成Cairngorm的框架代码。<br />&nbsp;&nbsp; <img src="http://lh4.ggpht.com/yulinlincom/SOGFRdmtH5I/AAAAAAAAAcA/OZkaarZMgFU/s576/pomerUserIndex.JPG" />
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/249587" style="color:red;">已有 <strong>30</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 06 Oct 2008 22:32:11 +0800</pubDate>
        <link>http://www.javaeye.com/topic/249587</link>
        <guid>http://www.javaeye.com/topic/249587</guid>
      </item>
          <item>
        <title>hibernate一直的疑问</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://nlvivian.javaeye.com">nlvivian</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251460" style="color:red;">http://www.javaeye.com/topic/251460</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          hibernate中,当一个对象持久化将数据库读取后,并将数据保存进缓存中,当第二次读取数据时,它就直接去缓存中取数据了,这点没错吧 <br /><br />用户A访问A机,创建了一个session.检索tableA并对检索结果,持久化. <br />用户B访问B机,创建了一个session.并对tableA做更新操作. <br />用户A再次访问持久话的tableA.如果他从缓存中读取tableA的话.不是无法看到.用户B对tableA做的操作了吗?
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251460" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 21:16:49 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251460</link>
        <guid>http://www.javaeye.com/topic/251460</guid>
      </item>
          <item>
        <title>细粒度处理事务，尽快的结束事务</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hgq0011.javaeye.com">hgq0011</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250505" style="color:red;">http://www.javaeye.com/topic/250505</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在搭建系统的架构时我们采用了ssh+ajax等方式构建的。我一在和大家说我们要层次分明，思路清晰，可现在都比较糟糕。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如：JSP页面用来显示数据的，css用来美化页面，JS用来控制页面的。现在很多页面中什么都有了，臭味很多。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在后台我们也分了action,service,dao层，原本action用来控制调度的，service用来处理相关的业务逻辑的，DAO中用来CRUD数据的。可现在出现了action包裹着一部分逻辑，service就非常简单了，就是用来调用DAO中的方法，而DAO中的方法即包裹了业务处理逻辑又包裹了CRUD数据处理。而且有的业务逻辑非常的复杂，涉及到的表操作很多，比如有</p>
<pre name="code" class="java">//结合spring支持hibernate
Session session = getSession();

//可以能会处理的一些东西
//1)通过hibernate方法select数据
//2)通过hibernate方法update数据
//3)通过hibernate方法delete数据
//4)通过hibernate方法insert数据

//通过session获取Connection，使用JDBC进行数据处理
Connection con = session.getConnection();
//因为有一些逻辑很负责一个select语句涉及的表太多，所以用JDBC来处理。

String sql = "select a ,b ,c ,d from A ,B,C,D where a = ? and b=?";
//反正类似的操作吧，就是关连来多。
</pre>
<p>&nbsp;类似上面的方式，大多数同学在大多数的时候都是这么弄的。我觉得这样做就把业务逻辑和数据处理混淆了，方法太臃肿了，有着浓浓的臭味，不便于维护。XP中提倡面向接口编程、分层、短小的方法。它这么一个长长的方法占用一个连接的时间太长（也就是整个事务的时间延长了），那么当其他的用户对相关的表进行请求时，就会出于等待的状态，资源的竞争，如果长时间是这样死锁就出现了。：（</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 我一般会把他们分布在不同的方法中。</p>
<pre name="code" class="java">//对应表的相关操作
public interface DAO{
     public List get##(String s);
     public void update##(String ...);
     public void delete##(String ...);
     public void insert##(String ...);
     public List find##(String...);

}


public class Service{
    public DAO dao = .......;//注入DAO对象。

    //结合DAO执行相应的业务处理操作
    public List update###(){
           dao.get(s);
           dao.update##(String ...);
           dao.delete##(String ...);
           dao.insert##(String ...);

           //处理更复杂的业务逻辑。
           logice();

           return dao.find##(String...);
   } 

    public void logice(){  
          //to do something  
  } 
   
}</pre>
<p>&nbsp;这样我的每一个DAO中的方法就会用到不同的SESSION（不同的CONNECTION），是这样的吗？但是我是通过SPRING对service层进行事务处理的呀，那是不是说明两种方式都会要占用同样的事务处理资源？</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 看到那些贫血的SERVICE我就郁闷，现在我有检查代码是否存在问题我也迷茫，这事情做的太少了。很多时候我们只顾一直往前跑，没有时间回头看。其实，我们要经常的code view，使用TDD开发模式，用XP的小步发布，这样不要让代码的味道变的太坏，也对自己写的代码充满信心，和用户交流底气十足。开发出来的系统，用户满意，市场行情看涨。：）</p>
<p>请您提出宝贵的意见。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>更新：2008-10-10 22：00</p>
<p>&nbsp;</p>
<p>
我把标题从&ldquo;DAO实现方法中一个Connection捅到底好吗？头疼&rdquo;改成&ldquo;细粒度处理事务，尽快的结束事务&rdquo;，这个是我最终的目的。现在我明白了整
个业务方法调用过程中都是使用同一个SESSION（Connection）。至于业务逻辑怎样来平衡分布，是不是可以把一部分放到ACTION，一部分放到service，Dao只负责和数据库处理。对只读的事务我对其只用readOnly。</p>
<p>比如：我上面的例子是不是可以变成如下的样子呢？</p>
<pre name="code" class="java">//对应表的相关操作
public interface DAO{
     public List get##(String s);
     public void update##(String ...);
     public void delete##(String ...);
     public void insert##(String ...);
     public List find##(String...);

}


public class Service{
    public DAO dao = .......;//注入DAO对象。

    //结合DAO执行相应的业务处理操作
    //该方法上加事务，传播途径为required
    public void update###(){
          
           dao.update##(String ...);
           dao.delete##(String ...);
           dao.insert##(String ...);

           //处理更复杂的业务逻辑。
           logice();
   } 
 
   
   //该方法上加事务，传播途径为required,readOnly
   public  String get###(String s){
          return dao.get(s);
   }

  
   //该方法上加事务，传播途径为required,readOnly
   public List find###(String...){
          return dao.find##(String...);
   }

    public void logice(){  
          //to do something  
  } 
   
}

/**
*那么action中是不是可以变成如下的样子呢？
*
*/
public class Action{
     //注入服务类
     public Service service = null;
     public ActoinForward update###(ActionForm...............){
           //下面这样调用是不是会能更好的呢？
            service. get###(s);
            service. update###();
            service. find###(String...);
    }
}
</pre>
<p>&nbsp;&nbsp; 我们希望能够更快的结束事务，避免不必要的阻塞，保证系统有更好的性能。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250505" style="color:red;">已有 <strong>11</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 21:40:19 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250505</link>
        <guid>http://www.javaeye.com/topic/250505</guid>
      </item>
          <item>
        <title>SOA研究</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jiage17.javaeye.com">jiage17</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251453" style="color:red;">http://www.javaeye.com/topic/251453</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          过两天就要硕士研究生开题报告了。<br />导师只是给了个研究方向题目让自己选，于是我本人想研究点SOA方面的东西<br />可本人对SOA认识实在有限，其理论和应用感觉非常难以搞懂<br />实在不知道这个领域的深浅<br />不知道哪位前辈做过这方面的研究请求指点一下<br />给个方向，给个题目是个项目也行，我是本着学习的态度的呵呵
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251453" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 20:53:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251453</link>
        <guid>http://www.javaeye.com/topic/251453</guid>
      </item>
          <item>
        <title>封装JXL的小工具（二）</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251443" style="color:red;">http://www.javaeye.com/topic/251443</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java"></pre>
<p>&nbsp;编译Schema:<br />xjc jxl.xsd -p jxl.jaxb<br />生成N多文件：<br /><img src="/upload/attachment/41943/045944ae-4e26-3843-831d-9b5608baf126.jpg" height="288" alt="生成的Java文件" style="VERTICAL-ALIGN: middle" width="207" /></p>
<p>生成的Java文件全部放在jxl.jaxb包下。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>然后对Excel类编辑：</p>
<pre name="code" class="java"><strong>@XmlRootElement(name="excel")//添加</strong>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "excel", propOrder = {
    "format",
    "sheet"
})
public class Excel {

    ...

}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>JAXBExcel类：</p>
<p>构造函数：</p>
<pre name="code" class="java">public JAXBExcel(Source xml, Source xsl) {
	try {
		Transformer trans = TransformerFactory.newInstance()
				.newTransformer(xsl);
		JAXBContext context = JAXBContext.newInstance("jxl.jaxb");
		JAXBResult result = new JAXBResult(context);
		trans.transform(xml, result);
		table = (Excel) result.getResult();
		Marshaller marshaller = context.createMarshaller();
		marshaller.setProperty("jaxb.formatted.output", true);
		marshaller.setProperty("jaxb.encoding", "UTF-8");
		marshaller.marshal(table, System.out);
	} catch (Exception e) {
		e.printStackTrace();
		throw new RuntimeException(e.getMessage());
	}
}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>处理XML文件：</p>
<pre name="code" class="java">public void process(OutputStream os) throws IOException, WriteException,
		ParseException {
	if (table == null) {
		throw new RuntimeException("The table is not init yet");
	}
	processFormat(table.getFormat());
	WritableWorkbook excel = Workbook.createWorkbook(os);
	Iterator&lt;ExcelSheet&gt; excelSheets = table.getSheet().iterator();
	for (int i = 0; excelSheets.hasNext(); i++) {
		ExcelSheet sheetData = excelSheets.next();
		WritableSheet sheet = excel.createSheet(sheetData.getName(), i);
		// sheet.getSettings().setProtected(true);
		// sheet.getSettings().setPassword("zhaobq");
		// 锁定单元格，设置保护密码
		int row = 0;
		if (sheetData.getHead().getRow().size() &gt; 0) {
			this.setView(sheet, sheetData.getHead().getRow().get(
					sheetData.getHead().getRow().size() - 1));
		}

		row = processTitle(sheetData.getTitle(), sheet, row);
		row = processHead(sheetData.getHead(), sheet, row);
		row = processBody(sheetData.getBody(), sheet, row);
		row = processFoot(sheetData.getFoot(), sheet, row);
	}// TABLE
	excel.write();
	excel.close();
}</pre>
<p>&nbsp;</p>
<p>JAXBExcel类中公共的方法就这两个：</p>
<p>首先用XML数据文件和XSL模板文件构造JAXBExcel对象，</p>
<p>&nbsp;</p>
<p>然后用JAXBExcel.process()得到文件的输出流</p>
<p>&nbsp;</p>
<p>全部代码：</p>
<pre name="code" class="java">package jxl;

import static jxl.write.WritableFont.ARIAL;
import static jxl.write.WritableFont.BOLD;
import static jxl.write.WritableFont.DEFAULT_POINT_SIZE;
import static jxl.write.WritableFont.NO_BOLD;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*；
import javax.xml.bind.*;
import javax.xml.bind.util.JAXBResult;
import javax.xml.transform.*;

import jxl.format.*;
import jxl.jaxb.*;
import jxl.write.*;

/**
 * 
 * @author Allen 赵本钱
 *
 */
public class JAXBExcel {

	private Excel table = null;

	/**
	 * 默认CELLFORMAT
	 */
	public static Map&lt;String, WritableCellFormat&gt; CELL_FORMAT = new HashMap&lt;String, WritableCellFormat&gt;();

	private Map&lt;String, WritableCellFormat&gt; cellFormat = null;

	private String numberFormat = "####.##";

	private String dateFormat = "yyyy-MM-dd";

	private static List&lt;String&gt; COLUMN_TYPE = new ArrayList&lt;String&gt;();

	static {
		WritableFont foot = new WritableFont(ARIAL, 10);
		WritableFont body = foot;
		WritableFont head = new WritableFont(ARIAL, 10);
		WritableFont title = new WritableFont(ARIAL, 15);
		try {
			head.setBoldStyle(BOLD);

			title.setBoldStyle(BOLD);
		} catch (WriteException e) {
			e.printStackTrace();
		}
		WritableCellFormat cfoot = new WritableCellFormat();
		WritableCellFormat cbody = cfoot;
		WritableCellFormat chead = new WritableCellFormat();
		WritableCellFormat ctitle = new WritableCellFormat();
		try {
			cfoot.setAlignment(Alignment.GENERAL);
			cfoot.setWrap(false);

			chead.setAlignment(Alignment.CENTRE);
			chead.setWrap(false);
			chead.setBackground(Colour.GRAY_25);

			ctitle.setAlignment(Alignment.CENTRE);
			ctitle.setWrap(false);
		} catch (WriteException e) {
			e.printStackTrace();
		}
		cfoot.setFont(foot);
		cbody.setFont(body);
		chead.setFont(head);
		ctitle.setFont(title);
		CELL_FORMAT.put("foot", cfoot);
		CELL_FORMAT.put("body", cbody);
		CELL_FORMAT.put("head", chead);
		CELL_FORMAT.put("title", ctitle);
	}

	public JAXBExcel(Source xml, Source xsl) {
		try {
			Transformer trans = TransformerFactory.newInstance().newTransformer(xsl);
			JAXBContext context = JAXBContext.newInstance("jxl.jaxb");
			JAXBResult result = new JAXBResult(context);
			trans.transform(xml, result);
			table = (Excel) result.getResult();
			Marshaller marshaller = context.createMarshaller();
			marshaller.setProperty("jaxb.formatted.output", true);
			marshaller.setProperty("jaxb.encoding", "UTF-8");
			marshaller.marshal(table, System.out);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e.getMessage());
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see jxl.Excel#process(java.io.OutputStream)
	 */
	public void process(OutputStream os) throws IOException, WriteException, ParseException {
		if (table == null) {
			throw new RuntimeException("The table is not init yet");
		}
		processFormat(table.getFormat());
		WritableWorkbook excel = Workbook.createWorkbook(os);
		Iterator&lt;ExcelSheet&gt; excelSheets = table.getSheet().iterator();
		for (int i = 0; excelSheets.hasNext(); i++) {
			ExcelSheet sheetData = excelSheets.next();
			WritableSheet sheet = excel.createSheet(sheetData.getName(), i);
			// sheet.getSettings().setProtected(true);
			// sheet.getSettings().setPassword("zhaobq");
			// 锁定单元格，设置保护密码
			int row = 0;
			if (sheetData.getHead().getRow().size() &gt; 0) {
				this.setView(sheet, sheetData.getHead().getRow().get(sheetData.getHead().getRow().size() - 1));
			}

			row = processTitle(sheetData.getTitle(), sheet, row);
			row = processHead(sheetData.getHead(), sheet, row);
			row = processBody(sheetData.getBody(), sheet, row);
			row = processFoot(sheetData.getFoot(), sheet, row);
		}// TABLE
		excel.write();
		excel.close();
	}

	private void setView(WritableSheet sheet, ExcelRow view) {
		Iterator&lt;ExcelHCell&gt; hcell = view.getHcell().iterator();
		for (int i = 0; hcell.hasNext(); i++) {
			ExcelHCell c = hcell.next();
			if (null != c.getWidth()) {
				sheet.setColumnView(i, c.getWidth());
			}
			if (null != c.getType()) {
				COLUMN_TYPE.add(c.getType());
			} else {
				COLUMN_TYPE.add("string");
			}
		}
	}

	/**
	 * 处理Format节点
	 * 
	 * @param format
	 * @throws WriteException
	 */
	private void processFormat(Format format) throws WriteException {
		if (format == null) {
			return;
		}
		Iterator&lt;CellFormat&gt; cf = format.getCellFormat().iterator();

		cellFormat = new HashMap&lt;String, WritableCellFormat&gt;();

		while (cf.hasNext()) {
			CellFormat f = cf.next();

			String id = f.getId();
			String backColour = f.getBackColour();
			String foreColour = f.getForeColour();
			String borderColour = f.getBorderColour();
			String border = f.getBorder();
			String align = f.getAlign();
			String valign = f.getVerticalAlign();

			String fontName = f.getFontName();
			int fontSize = (null == f.getFontSize()) ? DEFAULT_POINT_SIZE : f.getFontSize();
			boolean bold = nullToFalse(f.isBold());
			boolean italic = nullToFalse(f.isItalic());
			String underLine = f.getUnderLine();

			WritableCellFormat cell = new WritableCellFormat();

			if (isNotEmptyorNull(backColour)) {
				Colour c = null;
				try {
					c = fetchStaticObject(Colour.class, backColour);
					cell.setBackground(c);
				} catch (RuntimeException e) {
					e.printStackTrace();
				}
			}// 背景
			if (isNotEmptyorNull(align)) {
				Alignment a = null;
				try {
					a = fetchStaticObject(Alignment.class, align);
					cell.setAlignment(a);
				} catch (RuntimeException e) {
					e.printStackTrace();
				}
			}// 水平对齐方式
			if (isNotEmptyorNull(valign)) {
				VerticalAlignment a = null;
				try {
					a = fetchStaticObject(VerticalAlignment.class, align);
					cell.setVerticalAlignment(a);
				} catch (RuntimeException e) {
					e.printStackTrace();
				}
			}// 垂直对齐方式

			if (isNotEmptyorNull(border)) {
				String[] b = border.split(" ");
				if (b.length == 2) {
					Border bd = fetchStaticObject(Border.class, b[0]);
					BorderLineStyle bs = fetchStaticObject(BorderLineStyle.class, b[1]);

					if (isNotEmptyorNull(borderColour)) {
						Colour c = null;
						try {
							c = fetchStaticObject(Colour.class, borderColour);
							cell.setBorder(bd, bs, c);
						} catch (RuntimeException e) {
							e.printStackTrace();
						}
					} else {
						cell.setBorder(bd, bs);
					}
				}
			}

			WritableFont fontFormat;
			if (isNotEmptyorNull(fontName)) {
				WritableFont.FontName font = null;
				try {
					font = fetchStaticObject(WritableFont.FontName.class, fontName);
				} catch (RuntimeException e) {
					e.printStackTrace();
					font = WritableFont.createFont(fontName);
				}
				fontFormat = new WritableFont(font);
			} else {
				fontFormat = new WritableFont(ARIAL);
			}// 名字
			fontFormat.setPointSize(fontSize);// 大小
			if (bold) {
				fontFormat.setBoldStyle(BOLD);
			} else {
				fontFormat.setBoldStyle(NO_BOLD);
			}// 粗体
			fontFormat.setItalic(italic);// 斜体
			if (isNotEmptyorNull(underLine)) {
				UnderlineStyle us = null;
				try {
					us = fetchStaticObject(UnderlineStyle.class, underLine);
				} catch (RuntimeException e) {
					e.printStackTrace();
					us = UnderlineStyle.NO_UNDERLINE;
				}
				fontFormat.setUnderlineStyle(us);
			}// 下划线

			if (isNotEmptyorNull(foreColour)) {
				Colour c = null;
				try {
					c = fetchStaticObject(Colour.class, foreColour);
				} catch (RuntimeException e) {
					e.printStackTrace();
					c = Colour.BLACK;
				}
				fontFormat.setColour(c);
			}// 颜色

			cell.setFont(fontFormat);
			cell.setWrap(false);
			cellFormat.put(id, cell);
		}
	}

	/**
	 * 处理Title节点
	 * 
	 * @param title
	 * @param sheet
	 * @param row
	 * @return
	 * @throws WriteException
	 */
	private int processTitle(ExcelTitle title, WritableSheet sheet, int row) throws WriteException {
		if (title == null) {
			return row;
		}
		WritableCellFormat cf = exactFormat(title.getCellFormat(), "title");
		WritableCellFeatures ft = new WritableCellFeatures();
		ft.setComment(title.getComment());
		if (null != title.getHeight()) {
			sheet.setRowView(0, title.getHeight());
		}
		int colspan = (null == title.getColspan()) ? 1 : title.getColspan();
		this.writeLabel(sheet, cf, title.getValue(), 0, row, colspan, 1, ft);
		row++;
		return row;
	}

	/**
	 * 处理Head节点
	 * 
	 * @param head
	 * @param sheet
	 * @param row
	 * @return
	 * @throws WriteException
	 * @throws ParseException
	 */
	private int processHead(ExcelHead head, WritableSheet sheet, int row) throws WriteException, ParseException {
		if (head == null) {
			return row;
		}
		List&lt;ExcelRow&gt; rowDate = head.getRow();
		if (null == rowDate || rowDate.isEmpty()) {
			return row;
		}
		WritableCellFormat cf = exactFormat(head.getCellFormat(), "head");
		for (int i = 0; i &lt; rowDate.size(); i++) {
			ExcelRow r = rowDate.get(i);
			if (null != r.getHeight()) {
				sheet.setRowView(row, r.getHeight());
			}
			Iterator&lt;ExcelHCell&gt; c = r.getHcell().iterator();
			for (int j = 0; c.hasNext(); j++) {
				ExcelHCell hcell = c.next();
				processHCell(sheet, hcell, cf, row, j);
			}
			row++;
		}
		return row;
	}

	/**
	 * 处理Body节点
	 * 
	 * @param body
	 * @param sheet
	 * @param row
	 * @return
	 * @throws WriteException
	 * @throws ParseException
	 */
	private int processBody(ExcelBody body, WritableSheet sheet, int row) throws WriteException, ParseException {
		if (body == null) {
			return row;
		}
		List&lt;ExcelRow&gt; rowDate = body.getRow();
		if (rowDate == null || rowDate.isEmpty()) {
			return row;
		}
		WritableCellFormat cf = exactFormat(body.getCellFormat(), "body");
		for (int i = 0; i &lt; rowDate.size(); i++) {
			ExcelRow r = rowDate.get(i);
			if (null != r.getHeight()) {
				sheet.setRowView(row, r.getHeight());
			}
			Iterator&lt;ExcelCell&gt; c = r.getCell().iterator();
			for (int j = 0; c.hasNext(); j++) {
				ExcelCell cell = c.next();
				String type = COLUMN_TYPE.get(j);
				String cfname = cell.getCellFormat();
				if (isNotEmptyorNull(cfname)) {
					processCell(sheet, cell, exactCellFormat(cell.getCellFormat()), type, row, j);
				} else {
					processCell(sheet, cell, cf, type, row, j);
				}
			}
			row++;
		}
		return row;
	}

	/**
	 * 处理Foot节点
	 * 
	 * @param foot
	 * @param sheet
	 * @param row
	 * @return
	 * @throws WriteException
	 * @throws ParseException
	 */
	private int processFoot(ExcelFoot foot, WritableSheet sheet, int row) throws WriteException, ParseException {
		if (foot == null) {
			return row;
		}
		List&lt;ExcelRow&gt; rowDate = foot.getRow();
		if (rowDate == null || rowDate.isEmpty()) {
			return row;
		}
		WritableCellFormat cf = exactFormat(foot.getCellFormat(), "foot");
		for (int i = 0; i &lt; rowDate.size(); i++) {
			ExcelRow r = rowDate.get(i);
			if (null != r.getHeight()) {
				sheet.setRowView(row, r.getHeight());
			}
			Iterator&lt;ExcelCell&gt; c = r.getCell().iterator();
			for (int j = 0; c.hasNext(); j++) {
				ExcelCell cell = c.next();
				String type = COLUMN_TYPE.get(j);
				String cfname = cell.getCellFormat();
				if (isNotEmptyorNull(cfname)) {
					processCell(sheet, cell, exactCellFormat(cell.getCellFormat()), type, row, j);
				} else {
					processCell(sheet, cell, cf, type, row, j);
				}
			}
			row++;
		}
		return row;
	}

	/**
	 * 获取Format信息
	 * 
	 * @param cellFormatName
	 * @param font
	 * @param position
	 * @return
	 */
	private WritableCellFormat exactFormat(String cellFormatName, String position) {
		WritableCellFormat cf;
		if (isNotEmptyorNull(cellFormatName)) {
			cf = this.cellFormat.get(cellFormatName);
		} else {
			cf = CELL_FORMAT.get(position);
		}// SETTING THE CELL FORMAT
		return cf;
	}

	/**
	 * 获取Cell Format信息
	 * 
	 * @param cellFormatName
	 * @param font
	 * @param position
	 * @return
	 */
	private WritableCellFormat exactCellFormat(String cellFormatName) {
		WritableCellFormat cf = null;
		if (isNotEmptyorNull(cellFormatName)) {
			cf = this.cellFormat.get(cellFormatName);
		} // SETTING THE CELL FORMAT
		return cf;
	}

	/**
	 * 处理单元格
	 * 
	 * @param sheet
	 * @param cell
	 * @param cellFormat
	 * @param row
	 * @param j
	 * @throws WriteException
	 * @throws ParseException
	 */
	private void processCell(WritableSheet sheet, ExcelCell cell, WritableCellFormat cellFormat, String type, int row, int j) throws WriteException, ParseException {
		Integer c = (null == cell.getColspan()) ? 1 : cell.getColspan();
		Integer r = (null == cell.getRowspan()) ? 1 : cell.getRowspan();
		WritableCellFeatures features = new WritableCellFeatures();
		features.setComment(cell.getComment());
		if (!isNotEmptyorNull(type)) {
			type = "string";
		}
		if (type.equalsIgnoreCase("date")) {
			writeDate(sheet, cellFormat, cell.getValue(), j, row, c, r, features);
		} else if (type.equalsIgnoreCase("number")) {
			writeNumber(sheet, cellFormat, Double.parseDouble(cell.getValue()), j, row, c, r, features);
		} else {
			writeLabel(sheet, cellFormat, cell.getValue(), j, row, c, r, features);
		}
	}

	/**
	 * 处理单元格
	 * 
	 * @param sheet
	 * @param cell
	 * @param cellFormat
	 * @param row
	 * @param j
	 * @throws WriteException
	 * @throws ParseException
	 */
	private void processHCell(WritableSheet sheet, ExcelHCell cell, WritableCellFormat cellFormat, int row, int j) throws WriteException, ParseException {
		Integer c = (null == cell.getColspan()) ? 1 : cell.getColspan();
		Integer r = (null == cell.getRowspan()) ? 1 : cell.getRowspan();
		WritableCellFeatures features = new WritableCellFeatures();
		features.setComment(cell.getComment());
		writeLabel(sheet, cellFormat, cell.getValue(), j, row, c, r, features);
	}

	/**
	 * 写普通格式数据
	 * 
	 * @param sheet
	 * @param cellFormat
	 * @param labelName
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @throws WriteException
	 */
	private void writeLabel(WritableSheet sheet, WritableCellFormat cellFormat, String labelName, int x, int y, int width, int height, WritableCellFeatures ft)
			throws WriteException {
		if ((x &gt;= 0) &amp;&amp; (y &gt;= 0) &amp;&amp; (width &gt; 0) &amp;&amp; (height &gt; 0)) {
			Label c = null;

			if ((width != 1) || (height != 1)) {
				sheet.mergeCells(x, y, (x + width) - 1, (y + height) - 1);
			}

			c = new Label(x, y, labelName, cellFormat);
			c.setCellFeatures(ft);
			sheet.addCell(c);
		}
	}

	/**
	 * 写数字类型数据
	 * 
	 * @param sheet
	 * @param cellFormat
	 * @param numberData
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @throws WriteException
	 */
	private void writeNumber(WritableSheet sheet, WritableCellFormat cellFormat, double numberData, int x, int y, int width, int height, WritableCellFeatures ft)
			throws WriteException {
		if ((x &gt;= 0) &amp;&amp; (y &gt;= 0) &amp;&amp; (width &gt; 0) &amp;&amp; (height &gt; 0)) {
			jxl.write.Number c = null;
			if ((width != 1) || (height != 1)) {
				sheet.mergeCells(x, y, (x + width) - 1, (y + height) - 1);
			}
			c = new jxl.write.Number(x, y, numberData, cellFormat);
			c.setCellFeatures(ft);
			sheet.addCell(c);
		}
	}

	/**
	 * 写日期类型的数据
	 * 
	 * @param sheet
	 * @param cellFormat
	 * @param date
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @throws WriteException
	 * @throws ParseException
	 */
	private void writeDate(WritableSheet sheet, WritableCellFormat cellFormat, String date, int x, int y, int width, int height, WritableCellFeatures ft) throws WriteException,
			ParseException {
		if ((x &gt;= 0) &amp;&amp; (y &gt;= 0) &amp;&amp; (width &gt; 0) &amp;&amp; (height &gt; 0)) {
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
			DateTime c = new DateTime(x, y, simpleDateFormat.parse(date), cellFormat);
			if ((width != 1) || (height != 1)) {
				sheet.mergeCells(x, y, (x + width) - 1, (y + height) - 1);
			}
			c.setCellFeatures(ft);
			sheet.addCell(c);
		}
	}

	@SuppressWarnings("unchecked")
	private &lt;T&gt; T fetchStaticObject(Class&lt;T&gt; clazz, String name) {
		T t = null;
		try {
			t = (T) clazz.getDeclaredField(name).get(null);
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage() + "不能找类：" + clazz.getName() + "的静态字段：" + name);
		}
		return t;
	}

	/**
	 * 判断字符串是否为null或者空
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNotEmptyorNull(String str) {
		if (null != str &amp;&amp; !"".equals(str)) {
			return true;
		}
		return false;
	}

	public static boolean nullToFalse(Boolean b) {
		if (null == b) {
			return false;
		} else
			return b;
	}

	public void setNumberFormat(String nf) {
		this.numberFormat = nf;
	}

	public void setDateFormat(String df) {
		this.dateFormat = df;
	}

	public static String say() {
		return "I Said ,I'M Allen";
	}

}
</pre>
<p>&nbsp;</p>
<p>使用：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="java">String xml = "FOP.XML";
String xsl = "FOP.XSL";
JAXBExcel helper = new JAXBExcel(new StreamSource(new File(xml)), new StreamSource(new File(xsl)));
File f = new File("C:/a.xls");
OutputStream os = new FileOutputStream(f);
helper.process(os);
os.close();</pre>
<p>&nbsp;其中FOP.xml FOP.xsl文件见附件：</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251443" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 20:08:52 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251443</link>
        <guid>http://www.javaeye.com/topic/251443</guid>
      </item>
          <item>
        <title>关于GlassFish 9.1 U2 Patch3  的说明与疑问【上篇】</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dingis.javaeye.com">dinghy</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251440" style="color:red;">http://www.javaeye.com/topic/251440</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <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;">文中造词说明：</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';">【目前】</span><span lang="EN-US"><span style="font-family: Times New Roman;">------</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">指【</span><span lang="EN-US"><span style="font-family: Times New Roman;">2008-10-10</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">【</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">】</span><span lang="EN-US"><span style="font-family: Times New Roman;">--------</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">指</span><span lang="EN-US"><span style="font-family: Times New Roman;">GlassFish</span></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;">系统环境说明：</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';">【操作系统】</span><span lang="EN-US"><span style="font-family: Times New Roman;">-------</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">【</span><span lang="EN-US"><span style="font-family: Times New Roman;">Windows XP sp3</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">】或【</span><span lang="EN-US"><span style="font-family: Times New Roman;">Windows Server 2003 sp2</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">（没有办法，</span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">虽然喜欢</span><span lang="EN-US"><span style="font-family: Times New Roman;">linux</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">【</span><span lang="EN-US"><span style="font-family: Times New Roman;">JDK</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">环境】</span><span lang="EN-US"><span style="font-family: Times New Roman;">--------</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">或者说</span><span lang="EN-US"><span style="font-family: Times New Roman;">JRE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">环境，大家记得在装</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">择一个默认</span><span lang="EN-US"><span style="font-family: Times New Roman;">JDK</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">如果你默认选择了</span><span lang="EN-US"><span style="font-family: Times New Roman;">16004</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，后来你在</span><span lang="EN-US"><span style="font-family: Times New Roman;">Eclipse</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">等</span><span lang="EN-US"><span style="font-family: Times New Roman;">IDE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">环境中又追新到</span><span lang="EN-US"><span style="font-family: Times New Roman;">16005</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">很可能你从</span><span lang="EN-US"><span style="font-family: Times New Roman;">IDE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中导出的</span><span lang="EN-US"><span style="font-family: Times New Roman;">WAR</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">包或</span><span lang="EN-US"><span style="font-family: Times New Roman;">EAR</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">简单了，比较</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是面向</span><span lang="EN-US"><span style="font-family: Times New Roman;">JavaEE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">构建的</span><span lang="EN-US"><span style="font-family: Times New Roman;">,</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">而</span><span lang="EN-US"><span style="font-family: Times New Roman;">JavaEE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">又涵盖</span><span lang="EN-US"><span style="font-family: Times New Roman;">jdk</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">servlet</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">jsp</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 style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">ejb</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">jsf</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">等等版本列表，简单的注意</span><span lang="EN-US"><span style="font-family: Times New Roman;">JDK</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 style="font-size: small;"><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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">【联系方式】</span><span lang="EN-US"><span style="font-family: Times New Roman;">-------MSN:dinghy@live.com<span style="mso-spacerun: yes">&nbsp; </span>E-mail:dingis@qq.com</span></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 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"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 14pt"><span style="font-family: Times New Roman;">------------</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">第一章</span></strong><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 14pt"><span style="font-family: Times New Roman;"> </span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本路线说明</span></strong><strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 14pt"><span style="font-family: Times New Roman;">-------------</span></span></strong></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';">到目前为止</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</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"><a href="http://blogs.sun.com/GlassFishForBusiness/entry/sjs_as_9_1_u22"><span style="font-size: small; color: #800080; font-family: Times New Roman;">http://blogs.sun.com/GlassFishForBusiness/entry/sjs_as_9_1_u22</span></a></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><img src="http://img.photo.163.com/4fZZpRmavyuKc47R0J1f0w==/2743818072976364508.jpg" height="246" alt="" style="vertical-align: baseline;" width="503" /></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</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;">从图中我们可以获知以下信息：</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">最早的版本定位</span><span lang="EN-US"><span style="font-family: Times New Roman;"> U1 </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">并就此发行了</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv1</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 style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在更新到</span><span lang="EN-US"><span style="font-family: Times New Roman;">v1p2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本时间附近【</span><span lang="EN-US"><span style="font-family: Times New Roman;">Dec.21,2007</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">】，</span><span lang="EN-US"><span style="font-family: Times New Roman;">U1</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">重要改进，升级到</span><span lang="EN-US"><span style="font-family: Times New Roman;">U2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，并就此开始发行</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv2</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 style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">3</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、至此</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv2</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">GFv1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">到目前为止，发行了</span><span lang="EN-US"><span style="font-family: Times New Roman;">v1p1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">v1p2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，&hellip;&hellip;，</span><span lang="EN-US"><span style="font-family: Times New Roman;">v1p5</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">由于本人接触</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">时已经开始</span><span lang="EN-US"><span style="font-family: Times New Roman;">U2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">系列的内容，对于</span><span lang="EN-US"><span style="font-family: Times New Roman;">U1</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">曾感觉，在此只介绍</span><span lang="EN-US"><span style="font-family: Times New Roman;">U2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的改进</span><span lang="EN-US"><span style="font-family: Times New Roman;">)</span></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>GFv2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">到目前为止，发行了</span><span lang="EN-US"><span style="font-family: Times New Roman;">v2p1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">v2p2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">v2p3</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 style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">本次就最新的</span><span lang="EN-US"><span style="font-family: Times New Roman;">v2p3</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 style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">4</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、个人觉得</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv3</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的开发主要是受约束于</span><span lang="EN-US"><span style="font-family: Times New Roman;">Sun</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">为了与</span><span lang="EN-US"><span style="font-family: Times New Roman;">Tomcat</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">争夺市场，不得不将</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">之前对于</span><span lang="EN-US"><span style="font-family: Times New Roman;">JavaEE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本第一时间实现的承诺，只好用用重写</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">预计</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv3</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">之后将走类似</span><span lang="EN-US"><span style="font-family: Times New Roman;">Eclipse</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的推广道路，</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF Lighter+Upadte</span></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">Center</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">将实现组件形式灵活搭配。这样可以降低</span><span lang="EN-US"><span style="font-family: Times New Roman;">Sun</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">商业维护费用，不必再一篮子捆绑销售那些每年至少要</span><span lang="EN-US"><span style="font-family: Times New Roman;">4500$</span></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的服务。这应该就是</span><span lang="EN-US"><span style="font-family: Times New Roman;">Sun</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在</span><span lang="EN-US"><span style="font-family: Times New Roman;">GF</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">虽然</span><span lang="EN-US"><span style="font-family: Times New Roman;">GFv3</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; TEXT-INDENT: 21pt"><span style="font-size: small;"><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; TEXT-INDENT: 21pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">太阳，加油</span><span lang="EN-US"><span style="font-family: Times New Roman;">~~~</span></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 14pt"><span style="font-family: Times New Roman;">------------</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">第二章</span></strong><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 14pt"><span style="font-family: Times New Roman;"> <span lang="EN-US">GFv2 for Business v2p3</span></span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本说明</span></strong><strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 14pt"><span style="font-family: Times New Roman;">-------------</span></span></strong></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">1</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; TEXT-INDENT: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">该版本对应操作系统的发布列表可以参见以下网址：</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><a href="http://blogs.sun.com/GlassFishForBusiness/entry/sjs_as_9_1_u22"><span style="font-size: small; color: #800080; font-family: Times New Roman;">http://blogs.sun.com/GlassFishForBusiness/entry/sjs_as_9_1_u22</span></a></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="color: #000000; font-family: Arial; mso-font-kerning: 18.0pt;"><span style="font-size: small;">&nbsp;</span></span></strong></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="color: #000000; font-family: Arial; mso-font-kerning: 18.0pt;"><a href="http://blogs.sun.com/GlassFishForBusiness/"><span style="font-size: small; color: #800080;">GlassFish For Business</span></a><span style="font-size: small;"><span class="colon1">:</span> </span></span></strong><span class="subhead1"><strong><span style="font-size: 10pt; font-family: Arial; mso-font-kerning: 18.0pt;"><span style="color: #999999;">Addressing your Deployment and Business Needs</span></span></strong></span></p>
<p class="MsoNormal" style="MARGIN: 7.5pt 0cm 0pt; mso-outline-level: 3"><span style="font-size: 8.5pt; color: #999999; font-family: Arial;">Saturday Sep 27, 2008</span></p>
<h2 style="MARGIN: 13pt 0cm"><span style="color: #000000; font-family: 'Times New Roman';"><span style="font-size: large;">SJS AS 9.1 U2 (GF v2 U2) - Patch 3</span></span></h2>
<p style="LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">SJS AS 9.1 U2 (GF v2 U2) patch 3 is a commercial (Restricted) patch (see</span></p>
<p style="LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">&nbsp;<a href="http://blogs.sun.com/GlassFishForBusiness/entry/overview_of_sjs_as_9">Overview of GFv2</a>) available as part of <a href="http://blogs.sun.com/GlassFishForBusiness/entry/glassfish_enterprise_support_from_sun"><span style="color: #800080;">Sun's Enterprise Support for GlassFish</span></a>. </span></p>
<p style="LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">It was released on September 11th, 2008. </span></p>
<p style="LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">2</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">、版本概述</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">包含了</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Solaris SPARC</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">，</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';"> Solaris x86</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">，</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';"> Linux</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">，</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Windows and AIX</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">，一共</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">5</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">个版本，并分为基于</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Package</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">和基于</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">File</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">两种</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">patch</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">类型，在基于</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">File</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">的</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Patch</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">中又根据是否包含</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';"> HADB</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">模块分为两种。</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">我一般下载的是</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">基于</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">File</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">且不包含</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">HADB </span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">的</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Windows</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">版本，访问的是：</span></span></p>
<p style="LINE-HEIGHT: 150%"><span style="color: #000000; line-height: 150%; mso-bidi-font-size: 10.5pt;"><a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-128650-05"><span style="font-size: small; color: #800080; font-family: 宋体;">http://sunsolve.sun.com/search/document.do?assetke</span></a></span></p>
<p style="LINE-HEIGHT: 150%"><span style="color: #000000; line-height: 150%; mso-bidi-font-size: 10.5pt;"><span style="font-size: small; color: #800080; font-family: 宋体;">y=1-21-128650-05</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">关于</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">HADB</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">功能的使用介绍。可以去查一下。或者等我下面的文章细说。</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">其中可以看到</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Patch</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">大概是</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">80</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">多</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">M</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">，而且又根据是否有</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Sun</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">公司的数字签</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">名</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Digital Signature</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">，分为</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Signed</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">和</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Unsigned</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">。</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Signed Patch</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">的优点呢，就和一个文件的</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">md5</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">码差不多，你可以确认是不</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">是原始下载文件。具体你可以去执行一下</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Java</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">命令</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';"> jarsigner</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">。</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">呵呵，还是没有在</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">HP UX</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">的版本。看来</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">Sun</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">与</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">HP</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">的针对</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">GF</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">的商业合作，</span></span></p>
<p style="TEXT-INDENT: 21pt; LINE-HEIGHT: 150%"><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">谈判不太顺利。</span></span></p>
<p style="LINE-HEIGHT: 150%"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">3</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">、</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">v2</span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: 宋体;">系列修正</span></span><span style="font-size: 10.5pt; color: #000000; line-height: 150%; font-family: 'Times New Roman';">bug</span><span style="font-family: 宋体;"><span style="font-size: 10.5pt; color: #000000; line-height: 150%; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">列表回顾待续。</span></span></p>
<pre><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><span style="font-family: Courier;"><span style="font-size: small;"><span style="color: #444444;"><span style="mso-tab-count: 1">      </span>v2</span></span></span></span></strong><span style="font-size: small;"><span style="color: #444444;"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">系列发行的版本从</span><span lang="EN-US"><span style="font-family: Courier;">u2</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">以来主要有三个</span><span lang="EN-US"><span style="font-family: Courier;">patch,</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">分别是</span><span lang="EN-US"><span style="font-family: Courier;">:</span></span></strong></span></span></pre>
<pre><span style="font-size: small;"><span style="color: #444444;"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><span style="font-family: Courier;">2.1-----128650-05(9.1U2P03) 14</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">项更新</span></strong></span></span></pre>
<pre><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><span style="font-size: small; color: #444444; font-family: Courier;">2.2-----</span><a href="http://sunsolve.sun.com/search/document.do?assetkey=urn:cds:docid:1-21-128650-04-1"><span style="color: #444444; text-decoration: none; text-underline: none;"><span style="font-size: small; font-family: Courier;">128650-04</span></span></a><span style="font-size: small; color: #444444; font-family: Courier;">(9.1U2P02) 18</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: small;"><span style="color: #444444;"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">项更新</span></span></span></strong></pre>
<pre><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><span style="font-size: small; color: #444444; font-family: Courier;">2.3-----</span><a href="http://sunsolve.sun.com/search/document.do?assetkey=urn:cds:docid:1-21-128650-03-1"><span style="color: #444444; text-decoration: none; text-underline: none;"><span style="font-size: small; font-family: Courier;">128650-03</span></span></a><span style="font-size: small; color: #444444; font-family: Courier;">(9.1U2P01) 14</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-size: small;"><span style="color: #444444;"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">项更新</span></span></span></strong></pre>
<pre><span style="font-size: small;"><span style="color: #444444;"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><span style="mso-tab-count: 1"><span style="font-family: Courier;">      </span></span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">具体</span><span lang="EN-US"><span style="font-family: Courier;">bug</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">更新内容见文章后面的附录</span><span lang="EN-US"><span style="font-family: Courier;">,</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">我比较关注的内存泄露检测和自动关</span></strong></span></span></pre>
<pre><span style="font-size: small;"><span style="color: #444444;"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">闭链接问题</span><span lang="EN-US"><span style="font-family: Courier;">,</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">似乎是解决了</span><span lang="EN-US"><span style="font-family: Courier;">.</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">但是可恶的</span><span lang="EN-US"><span style="font-family: Courier;">Sun</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">公司不让我们去下载</span><span lang="EN-US"><span style="font-family: Courier;">…P02</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">之前的版本可</span></strong></span></span></pre>
<pre><span style="font-size: small;"><span style="color: #444444;"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">以从</span><span lang="EN-US"><span style="font-family: Courier;">sun</span></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier;">的官网上下载到</span><span lang="EN-US"><span style="font-family: Courier;">.</span></span></strong></span></span></pre>
<pre><span style="font-size: small;"><span style="color: #444444;"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US"><span style="mso-tab-count: 1"><span style="font-family: Courier;">    【下面的内容见下篇吧，发不上了】</span></span></span></strong></span></span></pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251440" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 19:47:03 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251440</link>
        <guid>http://www.javaeye.com/topic/251440</guid>
      </item>
          <item>
        <title>Myeclipse 6.0.1 + eclipse3.3.1高速下载</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jerryqiu007.javaeye.com">jerryqiu007</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251432" style="color:red;">http://www.javaeye.com/topic/251432</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller.exe<br />URL:&nbsp;<a href="http://downloads.myeclipseide.com/downloads/products/eworkbench/6.0.1GA/MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller.exe"><span style="color: #3468a4;">http://downloads.myeclipseide.com/downloads/products/eworkbench/6.0.1GA/MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller.exe</span></a><br />Size: 244.81 MB<br /><br /><br />MyEclipse_6.0.1GA_E3.3.1_Installer.exe<br />URL:&nbsp;<a href="http://downloads.myeclipseide.com/downloads/products/eworkbench/6.0.1GA/MyEclipse_6.0.1GA_E3.3.1_Installer.exe"><span style="color: #3468a4;">http://downloads.myeclipseide.com/downloads/products/eworkbench/6.0.1GA/MyEclipse_6.0.1GA_E3.3.1_Installer.exe</span></a><br />Size: 176.33 MB<br /><br /><br />eclipse-SDK-3.3.1-win32.zip<br />URL:&nbsp;<a href="http://download.actuatechina.com/eclipse/eclipse/downloads/drops/R-3.3.1-200709211145/eclipse-SDK-3.3.1-win32.zip"><span style="color: #3468a4;">http://download.actuatechina.com/eclipse/eclipse/downloads/drops/R-3.3.1-200709211145/eclipse-SDK-3.3.1-win32.zip</span></a></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251432" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 19:08:40 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251432</link>
        <guid>http://www.javaeye.com/topic/251432</guid>
      </item>
          <item>
        <title>Struts2 的AJAX 效率优化</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yjanboo.javaeye.com">yjanboo</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250916" style="color:red;">http://www.javaeye.com/topic/250916</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="cnt" id="blog_text">
<p>由于Struts2 使用DOJO0.43(好像是哈)</p>
<p>在使用&lt;s:head theme=ajax/&gt;引入支持的时候。js的读取量很大。</p>
<p>经常的相应时间到10s－20s左右。</p>
<p>并且其JS的调用是由一个拦截器提供的（/struts/*），并行化效果很差。导致js读取时间过长。</p>
<p>为了解决这个问题，首先要将 Jar 文件 struts-core中static下边的数据解压到webroot下，变为本地引用。</p>
<p>而后，调整目录，比如建立个 js/dojo目录。</p>
<p>在从源代码的网页中提取调用实际使用的js，变为你的目录</p>
<p>如：</p>
<p>&nbsp;</p>
<pre name="code" class="js">&lt;script type="text/javascript"&gt;
    // Dojo configuration
    djConfig = {
        baseRelativePath: "struts/dojo", <span style="color: #ffff00;">&lt;</span><span style="color: #ff0000;"><strong>&lt;:::::::::::::::就是要改这里。
</strong></span>        isDebug: false,
        bindEncoding: "UTF-8"
    };
&lt;/script&gt;
&lt;script type="text/javascript" src="struts/dojo/dojo.js"&gt;&lt;/script&gt;    <span style="color: #ff0000;"><strong>&lt;&lt;:::::::::::::::::::::::::::::还有这里</strong></span>
&lt;script type="text/javascript"&gt;
dojo.require("dojo.io.BrowserIO");
dojo.require("dojo.event.topic");
dojo.hostenv.setModulePrefix('struts', 'struts');
dojo.widget.manager.registerWidgetPackage('struts.widget');
dojo.require("struts.widget.Bind");
dojo.require("struts.widget.BindDiv");
dojo.require("struts.widget.BindAnchor");
dojo.require("struts.widget.ComboBox");
dojo.require("struts.widget.StrutsTimePicker")
&lt;/script&gt;



</pre>
<p>&nbsp;</p>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250916" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 20:56:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250916</link>
        <guid>http://www.javaeye.com/topic/250916</guid>
      </item>
          <item>
        <title>struts学习笔记(标签二)</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://huangyuan.javaeye.com">folie2006</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251418" style="color:red;">http://www.javaeye.com/topic/251418</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Struts标记分为(5组) <br />JSP里学习过标准标签库与自定义标签，它的原理是一个JAVA类代码实现的，通过页面的</p>
<pre name="code" class="html">&lt;%@ taglib  uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;</pre>
<p>&nbsp;来导入相应的配置文件，使用别名prefix即可调用标签库设定的标记 <br /><span style="color: #ff0000;">Html&nbsp; struts-html.tld <br />Bean&nbsp;&nbsp; struts-bean.tld <br />Logic&nbsp;&nbsp; struts-logic.tld</span> <br />Tiles&nbsp;&nbsp; struts-tiles.tld <br />Nested&nbsp; struts-nested.tld <br />红字为Struts中重要掌握的标签内容。一般JSP页面都导入红字相应的标签 <br /><br />上一笔记中只介绍了HTML表单的标签与BEAN中Write的一些简单的使用.接下来详细介绍bean及logic里面的标签元素 <br />BEAN <br /><br />&lt;bean:define/&gt;&nbsp; 定义变量 <br />id=变量名 <br />value=变量值 <br />toScope=存储范围 <br />name=存储作用域中的键名 <br />property=属性 <br />type=变量类型</p>
<pre name="code" class="html">&lt;bean:define id="username" value="张三" toScope="request"/&gt; 
username:&lt;bean:write name="username" scope="request"/&gt; 
</pre>
<p>&nbsp;<br />&lt;bean:write/&gt; 输出变量值 <br />&lt;bean:write&gt; <br />name=变量名 <br />filter=是否过滤html <br />format=输出格式 <br />property 属性名字 <br />__________________________________________________________________________________ <br />例如要输出对象时，必须先给定name为对象的别名，property属性的名称。 <br />如：User对象中有Name属性</p>
<pre name="code" class="html">Request.setAttribute(“user”,UserObj); 
&lt;bean :write name = “user” property=“name”/&gt; 
request.setAttribute("date",new java.util.Date() );  --定义一个时间对象 
&lt;bean:write name="date"/&gt;&lt;br /&gt;   --默认输出为Mon Jul 09 21:44:06 CST 2007 
&lt;bean:write name="date" format="yyyy-MM-dd"/&gt;&lt;br /&gt;              2007-07-09 
&lt;bean:write name="date" format="yyyy年MM月dd日"/&gt;&lt;br /&gt;         2007年07月09日 
</pre>
<p>&nbsp;__________________________________________________________________________________ <br />&lt;bean:size/&gt; 计算集合长度 <br />&lt;bean:size&gt; <br />id=变量名 <br />name=存储作用域中的键名，该键名对应一个集合 <br />------------------------------------------