<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>cuiyi's blog（崔毅 crazycy）</title>
    <description>记录点滴 鉴往事之得失 以资于发展</description>
    <link>http://cuiyi.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>请大家支招：关于大数据量的读取与处理</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/184446" style="color:red;">http://cuiyi.javaeye.com/blog/184446</a>&nbsp;
          发表时间: 2008年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          大数据量，比如上万条记录甚至几十万条数据的报表（PDF形式） 或者 经过分组求和和一定的条件过滤得到的汇总数据报表（Web形式），会造成等待时间过长，甚至CPU占用超级高的现象。<br /><br />因为刚工作还不太满一年，经验不多尤其是对大数据量的经验更是不足，是否大家可指点？<br /><br />目前我的做法是：通过一个sql取得放到一个Map或者DynaBean中，然后在界面显示，数据量在不到1w条记录的时候，web响应都需要2分钟左右的时间。<br /><br />说到这里，我想介绍一下我的环境很是必要：单机（双CPU）单数据库（Firebird），应用程序和数据库都在同一台电脑上，系统开发采用的技术是Spring和Jdbc。<br /><br />最近一直在寻找改进的方法，想到的调试sql语句本身的性能，比如采用p6spy进行监控，通过建立索引等调优；<br />另外也想到使用cache，但又对cache疑虑重重，比如cache的数据和database能否一致，从而让我的报表或者计算无误，外加没有cache的使用经验，不知道该注意的事项和如何着手。从长远看，如果cache用的比较糟糕，比如这也cache那也cache没有一个体系的规则，反而会影响了系统的维护性，给后期的开发以及他人造成严重的伤害。<br /><br />其实，我说的数据量对很多人来说并不算很大，可是大家是怎么处理的呢？ <br />当然，分页不是我要的功能，也对我的计算没有什么帮助，可以不讨论分页问题。<br /><br />先谢谢大家
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/184446#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Apr 2008 18:47:30 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/184446</link>
        <guid>http://cuiyi.javaeye.com/blog/184446</guid>
      </item>
      <item>
        <title>部署ear包出错引发的ClassLoader的思考</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/173561" style="color:red;">http://cuiyi.javaeye.com/blog/173561</a>&nbsp;
          发表时间: 2008年03月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          应用服务器常常包含多个容器，当前使用的是JBoss，在部署ear包的时候，遇到了一些比较有意思的问题，遂随着不断的推敲，从而解决了问题，也对classloader在应用服务器如JBoss中有了一点的推测（不当之处请光顾的朋友指出）。<br />测试环境：JBoss4.0.5.GA 、Gentoo Linux、 spring、ejb（ear工程）<br /><br />1）使用ant打包脚本的疏忽，把struts action的class同时放在了${ear_file}/${jar_file} 和${ear_file}/${war_file}/WEB-INF/{lib}/${jar_file}<br />      纠正之后，再次修改了struts action的实现类，后者确实不断地更新，但是始终未被执行，而执行的总是前者<br /><br />2）ant打包，把${xml_config_file}放在了${ear_file}/${jar_file} 和${ear_file}/${war_file}/WEB-INF/classes/${xml_config_file}<br />      之后做了如下的测试：<br />      21）前者不变，更新后者，结果：取新增加的物件出错<br />      22）移除前者，更新后者，结果：可以取到新增加的物件<br />      23）保持前者，新物件的配置作为一个新的文件，同时也放在后者的位置，结果：可以取到新增加的物件。<br /><br />3）通过IoC注入配置文件的位置，然后读取配置文件的内容(未使用Spring的解析方法，而是自己实现解析)：<br />  注入xml位置的配置如下（粗体处）：<br /><pre name="code" class="java">
&lt;bean id="test.DataMigrateCenter" class="demo.service.DataMigrateCenter">
        &lt;property name="dataExtractDao">&lt;ref bean="demo.dataExtractDao"/>&lt;/property>
        &lt;property name="markExtractedDao">&lt;ref bean="demo.markExtractedDao"/>&lt;/property>
        &lt;property name="errorsPath"   value="/home/demo/Errors/"/>
        &lt;property name="invoicesPath" value="/home/demo/Invoices/"/>
        &lt;property name="archivesPath" value="/home/demo/Archives/"/>
        
        <strong>&lt;property name="sqlPath"      value="x.war/WEB-INF/classes/xyz_sql.xml"/></strong>
&lt;/bean>
</pre><br /><br />xyz_sql.xml的真实位置在/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/x.war/WEB-INF/classes/xyz_sql.xml<br /><br />注入了sqlPath后，交给了一个工具类来解析，这个工具类放在表现层，即打包到war里，代码类似如下<br /><pre name="code" class="java">
private static Document getRootDocument(String fileName)  throws DocumentException{//参数fileName即注入的sqlPath
        SAXReader reader = new SAXReader();
       //Print Code
        InputStream in = SqlReaderHelper.class.getClassLoader().getResourceAsStream(fileName);
        Document document = reader.read(in);
        return document;
}
</pre><br /><br />在getRootDocument方法的Print Code处，增加如下打印语句：<br /><pre name="code" class="java">
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("/"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource(""));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("/test.xml"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("/../test.xml"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("../test.xml"));
System.out.println(Thread.currentThread().getContextClassLoader().getResource("/"));
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(SqlReaderHelper.class.getClass().getClassLoader().getResource(""));
</pre><br />其中，使用的test.xml实际上并不存在；<br />得到的输出结果（外加了打印语句的本身描述）<br /><pre name="code" class="java">
17:47:18,213 INFO  [STDOUT] -------->>>>>>>>SqlReaderHelper.class.getClassLoader().getResource("/") : null
17:47:18,214 INFO  [STDOUT] -------->>>>>>>>SqlReaderHelper.class.getClassLoader().getResource("") : file:/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/
17:47:18,222 INFO  [STDOUT] -------->>>>>>>>SqlReaderHelper.class.getClassLoader().getResource("/test.xml") : null
17:47:18,231 INFO  [STDOUT] -------->>>>>>>>SqlReaderHelper.class.getClassLoader().getResource("/../test.xml") : null
17:47:18,241 INFO  [STDOUT] -------->>>>>>>>SqlReaderHelper.class.getClassLoader().getResource("../test.xml") : null
17:47:18,241 INFO  [STDOUT]-------->>>>>>>>Thread.currentThread().getContextClassLoader().getResource("/"):null
17:47:18,242 INFO  [STDOUT]-------->>>>>>>>Thread.currentThread().getContextClassLoader().getResource(""):file:/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/
执行到System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); 出错
</pre><br />将test.xml换成一个真实存在的文件 test.jar<br />并在getRootDocument方法的Print Code处，增加如下打印语句：<br /><pre name="code" class="java">
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("/"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource(""));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("/test.jar"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("/../test.jar"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("../test.jar"));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource("test.jar"));
System.out.println(Thread.currentThread().getContextClassLoader().getResource("/"));
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(SqlReaderHelper.class.getClassLoader().getResource(fileName));
</pre><br />得到的输出结果（外加了打印语句的本身描述）<br />17:57:16,882 INFO  [STDOUT] <br /><pre name="code" class="java">
-------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("/") : null
17:57:16,900 INFO  [STDOUT] -------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("") : file:/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/
17:57:16,909 INFO  [STDOUT] -------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("/test.jar") : null
17:57:16,918 INFO  [STDOUT] -------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("/../test.jar") : null
17:57:16,926 INFO  [STDOUT] -------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("../test.jar") : null
17:57:16,926 INFO  [STDOUT] -------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("test.jar") : file:/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/test.jar
17:57:16,927 INFO  [STDOUT]-------->>>>>>>Thread.currentThread().getContextClassLoader().getResource("/"):null
17:57:16,927 INFO  [STDOUT]------->>>>>>>Thread.currentThread().getContextClassLoader().getResource(""):file:/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/
17:57:16,927 INFO  [STDOUT] -------->>>>>>>SqlReaderHelper.class.getClassLoader().getResource("fileName") : file:/home/jboss/jboss-4.0.5.GA/server/xyz/deploy/x.ear/cxc3.war/WEB-INF/classes/cxc2sap_sql.xml
</pre><br /><br /><span style="color: red">通过上述描述，可以简单的得出一些推论：</span><br /><strong>对1）2）</strong><br />在应用服务器如JBoss中，加载${ear_file}/${jar_file}的EJB容器 和 加载${ear_file}/${war_file}的Web容器间存在一定的关系，根据ClassLoader的加载机制：当当前类加载器需要加载一个类的时候，首先请求父级的类加载器加载，如果父级加载器无法找到要加载的类（每个加载器仅仅在自己本身的classpath寻找要加载的类），才由当前类加载器来加载，如果加载不到就报错。<br />根据这个，可认为EJB容器的ClassLoader起了Web容器的父级ClassLoader的作用，即：请求加载一个action class时，当前类加载器是web容器，但是web容器的ClassLoader委托其父级加载器来加载，结果其父亲加载并加载成功了，所以不再加载本来正确的${war_file}/WEB-INF/lib or ${war_file}/WEB-INF/classes下的真正的类了<br /><br /><strong>对3）</strong><br />这些输出信息则更充分的证明了当使用${Class_name}.class.getClassLoader()的时候，真正起作用的类加载器便是父级类加载器，即使EJB容器的ClassLoader，从而得到的当前classpath是${ear_file}的路径。<br /><br /><strong>回想过去经历：</strong><br />基于这些实验，记得曾经遇到这样的错误：把struts.jar也放在了${ear_file}之下，运行报错误。<br />原因依然是类加载器的两个基本原理：<br />1）加载的委托机制，见上面的分析<br />2）当一个类被某一个ClassLoader加载后，与其相关的类都由同一个ClassLoader加载<br /> 于是得出如下结论：EJB容器加载了struts.jar，当web容器的ClassLoader加载自己的action class的实现类的时候，需要Action基类，但是根据默认的加载原理，关联的类应该由同一个类加载器完成，现在Action基类被父级的加载器加载（相对于当前），Action的实现类在当前的类加载器，故此发生错误。
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/173561#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Mar 2008 23:56:01 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/173561</link>
        <guid>http://cuiyi.javaeye.com/blog/173561</guid>
      </item>
      <item>
        <title>对宗教力量的追述</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/116979" style="color:red;">http://cuiyi.javaeye.com/blog/116979</a>&nbsp;
          发表时间: 2007年08月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          对Church你可以无知，但绝对不可以说错话，尤其是在虔诚的教徒面前，或者会毫不给你面子的女人面前。<br /><br />教堂，原本以为是西方人的圣堂，西方人的信仰；亲眼目睹了中国MM的疯狂和虔诚；不是很能理解。<br /><br />本着不理解的观点，查阅了教堂以及信仰的本质，发现了如下的观点：<br /><span style="BACKGROUND-COLOR: #999999"><br />西方文化是宗教在起传承和教化的作用<br />中国文化是历史的教习在起传承和教化的作用<br />中国文化是从过去的历史中总结出的<br /><br /><span style="BACKGROUND-COLOR: #ffffff">可是做为好端端的一个中国人，花着国内流出来<span style="BACKGROUND-COLOR: #ffffff">的大量<font style="BACKGROUND-COLOR: #ffffff">钱币，不好好读书，整天整这些干嘛阿？！一直难以理解之</font></span></span></span>
<img src="http://www.blogjava.net/crazycy/aggbug/139567.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-08-26 19:35 <a href="http://www.blogjava.net/crazycy/archive/2007/08/26/139567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/116979#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 26 Aug 2007 11:35:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/116979</link>
        <guid>http://cuiyi.javaeye.com/blog/116979</guid>
      </item>
      <item>
        <title>新加坡生活一点感受[4个月的初感]</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/113969" style="color:red;">http://cuiyi.javaeye.com/blog/113969</a>&nbsp;
          发表时间: 2007年08月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>1 比中国大多数人多了种爱国心，多了份自豪感，多了点维护华人的尊严<br /></div><div>2 比中国大环境平静，比较不浮躁</div><div>3 很看重中国人不很看重的东西：信誉；这个也是很多国外企业进入中国的迷惑</div><div>4 中国出来读书的很多孩子花着大钱，用功度不够</div><div>5 很多老板办企业是为了真正做点事，国内很多老板为了圈地赚一笔就算完</div><div>6 法律叫法律，不是金钱和权力</div><div>7 宗教信仰的力量让我心颤了好几回，由宗教的凝聚力可以感受到民族的凝聚力</div>
<img src="http://www.blogjava.net/crazycy/aggbug/137851.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-08-18 20:10 <a href="http://www.blogjava.net/crazycy/archive/2007/08/18/137851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/113969#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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>Sat, 18 Aug 2007 12:10:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/113969</link>
        <guid>http://cuiyi.javaeye.com/blog/113969</guid>
      </item>
      <item>
        <title>好久不写，胡乱写点啥</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/113970" style="color:red;">http://cuiyi.javaeye.com/blog/113970</a>&nbsp;
          发表时间: 2007年08月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>&#160;&#160; 浑浑噩噩已是半年多，似没有记忆难以回忆，生活似发霉般没有新意，更似阳痿般没有兴奋的勃起，就这样，了然半年。</div><div>&#160;&#160; 迷惑萦绕，如果我待在原地，萌芽中的朋友是否会止步？尚有交情的朋友会冷淡？还有全新的朋友会有多少？似曾有人曰：我是太阳，我给你阳光，你来享乐。阳光普照，大地生辉，享受却无从为继。同化？将问题牵扯至周边人群，菩提本无树，哈哈，怨天尤人？！不可以，感受不到心跳也感受不到自己的呼吸，噢，是心已死。</div><div>&#160;&#160; 读书时曾戏谑：哪里都是主场；的确有点难度，但咱们有进化的语义：不断调整。哀莫大于心死，我开始追寻兴奋剂，是他[no gay, not woolgather]，一个偶然的interviewee，让我感到了勃起，是一种快乐，一种欢喜。另一个他[net ID：叶]，让我郁闷不已，但也知晓：机会不等人，即使没有准备好，纵使眼前的条件没有满足；哥们知晓玩股票的潜力股，却不晓得机会也有潜力股之说；正所谓不能触类旁通者有之。</div><div>&#160;&#160; 日子维系，无聊当道，为了我的北京大夜总会目标，前进前进。</div>
<img src="http://www.blogjava.net/crazycy/aggbug/137847.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-08-18 19:52 <a href="http://www.blogjava.net/crazycy/archive/2007/08/18/137847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/113970#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 18 Aug 2007 11:52:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/113970</link>
        <guid>http://cuiyi.javaeye.com/blog/113970</guid>
      </item>
      <item>
        <title>戏谑</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/113971" style="color:red;">http://cuiyi.javaeye.com/blog/113971</a>&nbsp;
          发表时间: 2007年08月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>他说要写个分析，涵盖一个项目的提出到立项，一直到出品整个流程<br /></div><div>回之：把你的战略和想法写个1287字描述；虚的都会，就是个大马甲，套就行了；干实事，是不能不思细节的。正所谓，千里之堤，毁于蝼蚁。提出到立项，这个我搞不定，需要行业的知识。</div><div><br class="webkit-block-placeholder" /></div><div>戏谑他;我的时间很值钱哦。</div><div>回我：我确实需要，你有时间就多写点，就当你要做老板了</div><div>又问我，问如果你来当老板，你会不会干？</div><div>I said No. why？ In my opinion：</div><div>&gt;&gt;我不当老板 在眼下老板都是龟壳 经得起敲打才行</div><div>&gt;&gt;老板还得是龟头 能屈能伸 还能不断探索</div><div>&gt;&gt;老板还得是嫖客 会玩 会把被玩的人搞爽</div><div>&gt;&gt;老板还得是政客 会装 把被忽悠的人搞得高潮迭起</div><div>&gt;&gt;老板还得是饭桶 无能能盛酒和各种料</div><div>&gt;&gt;老板还得是强盗 如同睡别人老婆一样 强上</div><div>&gt;&gt;老板还得是赌徒 无论怎么输 都不能红眼</div><div>&gt;&gt;老板还得是兴奋剂 无论怎么弄 都不能射 更不能软 挺住第一</div><img src="http://www.blogjava.net/crazycy/aggbug/137848.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-08-18 19:52 <a href="http://www.blogjava.net/crazycy/archive/2007/08/18/137848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/113971#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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>Sat, 18 Aug 2007 11:52:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/113971</link>
        <guid>http://cuiyi.javaeye.com/blog/113971</guid>
      </item>
      <item>
        <title>招聘Java软件工程师（工作地点:新加坡_金融街Raffles Place）</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/111550" style="color:red;">http://cuiyi.javaeye.com/blog/111550</a>&nbsp;
          发表时间: 2007年08月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;<span>职位描述：</span><span><br />1.</span><span>头衔：软件工程师</span><span><br />2.</span><span>面向企业客户，提供基于</span><span>WEB</span><span>的大宗商品交易与交割解决方案，从事</span><span>ERP</span><span>系统的开发、实施、运行支持；</span><span><br /><br /></span><span>职位要求：</span><span><br />1.</span><span>大学以上学历，计算机相关专业；</span><span><br />2.</span><span>英语口语熟练，</span><span>CET</span><span>－</span><span>6</span><span>或以上；</span><span><br />3.1-2</span><span>年基于</span><span>Web</span><span>系统的开发经验；</span><span><br />4.</span><span>熟悉</span><span>J2EE</span><span>系统多层架构，熟悉</span><span>jsp/sevlet</span><span>，</span><span>struts</span><span>，</span><span>DAO</span><span>，</span><span>Hibernate</span><span>，</span><span> Spring</span><span>等轻量级开发技术；</span><span><br />5.</span><span>精通</span><span>SQL</span><span>语法，熟悉以下数据库优先：</span><span>Firebird, SQL Server, DB2, Oracle</span><span>；熟悉</span><span>Jboss</span><span>以及</span><span>JMS</span><span>者优先；</span><span><br />6.</span><span>熟悉</span><span>linux</span><span>优先</span><span><br />7.</span><span>为人诚实，能自我激励，学习能力强，有团队意识，善于合作，能够在压力下独立工作；</span><span><br /><br /></span><span>其它相关信息：</span><span><br />1</span><span>，公司背景：建立于</span><span>1997</span><span>年，控股集团下属的姐妹公司是世界上最大的棕榈油中介交易公司。目前客户包括世界上最大的</span><span>5</span><span>个棕榈油生产企业中的</span><span>3</span><span>家。</span><span><br />2</span><span>，网址：</span><span><a href="http://www.justcommodity.com/" target="browserView"><!--novell_rewriter_off--><u>http://www.justcommodity.com/</u></a><br /><!--novell_rewriter_on-->3</span><span>，薪水：新币</span><span>1800++</span><span>（新币：人民币＝</span><span>1</span><span>：</span><span>5</span><span>），视具体能力而定。试用期</span><span>6</span><span>个月，试用期满后会得到一次加薪。</span><span><br />4</span><span>，税负：新加坡是世界上税率最低的国家之一（上个季度公司同事的平均税负不超过</span><span>3</span><span>％，薪水基本视为税后薪水）</span><span><br />5</span><span>，生活：新加坡</span><span>60</span><span>％以上的人口可以听说华文，是个生活费低廉的国际大都市，一般月生活费少于</span><span>1000</span><span>新币（以公司同事做为参考标准）</span><span><br />6</span><span>，团队：开发团队目前主要由来自中国的开发人员组成，毕业于中国各个著名大学，你可以很容易的融入这里的公司文化。</span><span><br />7</span><span>，招聘流程：不超过</span><span>2</span><span>个星期（包括几次电话面试）。</span><span><br />8</span><span>，工作地点：新加坡，公司会负责签证等相关事宜。等到试用期满，公司也会帮助申请新加坡永久居留。</span><span><br />9</span><span>，联系方式：</span><span>recruit@justcommodity.com, ning@justcommodity.com, </span></p>
<p><span>和我熟悉的，如果你有意，可以同时发到（上两个</span><span>mail</span><span>必须）</span><span><a href="mailto:cuiyi.crazy@gmail.com">cuiyi.crazy@gmail.com</a></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span lang="ZH-CN" style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &apos;Times New Roman&apos;; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">&nbsp;</span></p>
<img src="http://www.blogjava.net/crazycy/aggbug/136241.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-08-12 22:10 <a href="http://www.blogjava.net/crazycy/archive/2007/08/12/136241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/111550#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Aug 2007 14:10:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/111550</link>
        <guid>http://cuiyi.javaeye.com/blog/111550</guid>
      </item>
      <item>
        <title>苦不堪言,iReport ＋ JasperReports项目中的历练</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/106267" style="color:red;">http://cuiyi.javaeye.com/blog/106267</a>&nbsp;
          发表时间: 2007年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JasperReports
这个东西，是个好东西，iReport这个东西，也是个好东西；就是iReport这个东西，给我很多启示，关于sql组件，虽最终未必可行，目前处于验证进程。<br /><br />话说使用iReport＋JasperReports开发报表的曾经的尴尬，testing during development and testing on local machine, the report pdf displays well, so good job have done, but when demo in customer locale, a lot of fields cannot be displayed（不能显示了！）。<br /><br />After a lot of time trying, almost every&nbsp; options&nbsp; supplied&nbsp; have been tried in checked way and unchecked way, the well fields displayed accordingly, I have got some ideas:<br /><br />1) cannot display(不能显示), but other field with same content can display , why?<br />&nbsp;&nbsp;&nbsp; OK, the size is too small(把字符框的 大小设置大一些)，then well done.、<br /><br />2）some field cannot display<br />&nbsp; &nbsp;&nbsp; process: I found these undisplayed is&nbsp; in header,&nbsp; then I copy them to footer,&nbsp; what's the result? display well in footer, but no display in header.<br />&nbsp;&nbsp;&nbsp;&nbsp; then I change the "evaluation time" from "now" to "column"<br />&nbsp;&nbsp;&nbsp;&nbsp; well done!<br />&nbsp;&nbsp;&nbsp; but be careful, fields valued $F cannot be column, for it cannot be displayed<br /><br />3) some field cannot be display&nbsp; corresponding to&nbsp; 2)<br />&nbsp; &nbsp; why they cannot be displayed&nbsp; in both&nbsp; header and&nbsp; footer?<br />&nbsp;&nbsp;&nbsp; oh, I found most field have the "stretch with overflow" option checked, so I added, so cool<br /><br />******************************************************<br />this problem I found explation when I solved on net<br />
<h4 class="TextColor1" id="subjcns!800C4117398AFE1F!435" style="margin-bottom: 0px;">iReport stretch 选项的注意</h4>
<div class="bvMsg" id="msgcns!800C4117398AFE1F!435">
<div>Text Field有一选项为Stretch with overflow。 作用是动态的伸展文字所占的空间。</div>
<div>要注意一点是Stretch是跟据Font Name的体字像数为基准进行伸展的。所以当我们输出PDF格式时要注意PDF Font Name 与Font Name是否一致。如不一致在文字量多的时候会出现少了或多了显示空间的问题</div>
</div>
<h4 class="TextColor1" id="subjcns!800C4117398AFE1F!436" style="margin-bottom: 0px;">iReport Band的[Split allowed]属性</h4>
<div class="bvMsg" id="msgcns!800C4117398AFE1F!436">
<div>Split allowed是允许分开的意思。以页为单位，被分离出去的是Band内的所有内容。如果剩下的页面空间不够显示Band的内容。那么Band的内容会显示在下一页。</div>
</div>
<br />ireport有时侯不能显示数据库中数据的解决方式:<br />&nbsp;&nbsp;1)每一个element:设置:print when details overflow ;stretch overflow<br />&nbsp;&nbsp;2)字段高度不够
<br />******************************************************<br />all resolved, the boss smiled, and happy back from customer<br />&nbsp; &nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br /> <br />  <img src="http://www.blogjava.net/crazycy/aggbug/132740.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-07-27 12:19 <a href="http://www.blogjava.net/crazycy/archive/2007/07/27/132740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/106267#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jul 2007 04:19:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/106267</link>
        <guid>http://cuiyi.javaeye.com/blog/106267</guid>
      </item>
      <item>
        <title>构件 构件 怎么就成sca了呢？soa虚阿虚阿（乱弹）</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/100255" style="color:red;">http://cuiyi.javaeye.com/blog/100255</a>&nbsp;
          发表时间: 2007年07月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 构件，本是一个很古老的主题，SUN最初推出javabean即是一种可视组件的萌芽，可惜如同java的动态代理的潜伏期一样，一直没有足够的人发现并重视起来。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 与此同时，另外的阵营，Boland的delphi，Microsoft的V*家族以及现在.Net家族，却不断制造着高产易用的神话。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; Java本来就是重视扩展和让涉足的人享受背后机理的语言，如同做饭而非速餐，这早已成为一个很好的说辞。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 今天，为了互操作而退出的webservice，实际就是接口的更泛化拓展；构件也从了组件的泛化延伸，成为一个极大成者。我们拥有了构件，我们也将走向了高速和易用，我们是否可以反思，当初阐释不进Microsoft阵营的冠冕堂皇理由，是否经得起构件的洗礼？<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 想到了构件，不由延伸到了sca,更不由的触及soa,从一个听不懂的概念炒作历经几年之久走过多个版本的演化，成为今天的方法论和架构方法标准工具。曾经一味的热情投入着，呼吁呐喊着，从为集成而生的理解到当今稍微成熟的soa本质既业务敏捷，也就是变化的需求；依然没有逃出任何技术产生的直接机理：适应需求的变化。换句话说，一切技术思想方法论无不是为更好的适应需求的变化而生。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 那中间的esb等是否真的是过度的羔羊？如果诸如IBM，BEA同样拥有雄厚的ESB产品线的话，今天的soa定当别论；历史不可假设，演化不可逆转，soa的路也得益于此俩巨头的&#8220;盲区&#8221;，否则tibco必然不会让出esb头把交椅。<br /><br />&nbsp;&nbsp;&nbsp; 那soa是否真的可以实现业务敏捷？摸着头皮思考，良久良久，受个人阅历（刚有不足3个月工作经验）之限，虽阅读各家之言，然不由闷笑。构件显然不是，因为架子在具体细节依然离开不具体实现技术，一旦涉足技术就无法避免软件工程的延迟等诸多风险因素，业务敏捷谈何而来？如果说加强了业务人员和开发人员的沟通，亦为必然。不认为有了一个可以看得外貌就可以确定一些理解上的盲区，能画出来的大多自然是彼此不存在疑惑的地方，但是很多地方亦是模棱区，产品或者说项目不是儿戏，不存在不可确定的东西，是就是非就非，最后落实的沟通是最有效的方式，也可能是迭代感知，这些都不是soa之大手笔。<br /><br />&nbsp;&nbsp;&nbsp; 那soa为何会走过如此多的路，最后走向了一个&#8220;无就是有有就是无，更多的成为道家的境界呢？&#8221;我觉得就是因为解决不了定位的目标，那归结为一个无限大的话题---本来就是要正面的主题，肯定不会错，改进多少年，反正都是在解决这个目标，这就是soa。<br /><br />&nbsp;&nbsp; 个人一时乱弹，友善交流，请勿攻击漫骂之。 
<img src="http://www.blogjava.net/crazycy/aggbug/129722.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-07-11 23:31 <a href="http://www.blogjava.net/crazycy/archive/2007/07/11/129722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/100255#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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, 11 Jul 2007 15:31:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/100255</link>
        <guid>http://cuiyi.javaeye.com/blog/100255</guid>
      </item>
      <item>
        <title>网上好友好久不见，表达想念之情</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/97934" style="color:red;">http://cuiyi.javaeye.com/blog/97934</a>&nbsp;
          发表时间: 2007年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          永远的崔毅(Cui Yi, crazycy) says:<br />回眸往昔　生活如此美好<br /><br />永远的崔毅(Cui Yi, crazycy) says:<br />展望未来　美好实在可盼<br /><br />永远的崔毅(Cui Yi, crazycy) says:<br />正值眼下　tmd生活为啥这么难<br /><br />永远的崔毅(Cui Yi, crazycy) says:<br />翻阅绝密档案　才发现原来是没有了你
<img src="http://www.blogjava.net/crazycy/aggbug/128164.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-07-04 18:28 <a href="http://www.blogjava.net/crazycy/archive/2007/07/04/128164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/97934#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Jul 2007 10:28:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/97934</link>
        <guid>http://cuiyi.javaeye.com/blog/97934</guid>
      </item>
      <item>
        <title>soa杂感系列之五：较为冷静的文（URL）</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/81380" style="color:red;">http://cuiyi.javaeye.com/blog/81380</a>&nbsp;
          发表时间: 2007年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p align="left">1 <u><font color="#800080">SOA，现在进行时&nbsp;&nbsp; （袁红岗</font></u><br />2<a href="http://searchwebservices.techtarget.com.cn/comment/302/3333802.shtml">SOA，热话题下冷思考</a>（畅享网）<br />3<u><font color="#800080">我对SOA的反思：SOA架构的本质</font></u> （银狐999）<br />4 <font color="#0000ff">参加&#8220;SOA产业链及企业软件趋势研讨会&#8221;的感想</font> （银狐999）<br />5<br />&nbsp;</p>
<img src="http://www.blogjava.net/crazycy/aggbug/118736.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-05-20 19:55 <a href="http://www.blogjava.net/crazycy/archive/2007/05/20/118736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/81380#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 20 May 2007 11:55:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/81380</link>
        <guid>http://cuiyi.javaeye.com/blog/81380</guid>
      </item>
      <item>
        <title>soa杂感系列之四：soa的新认识 （原创）</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/81381" style="color:red;">http://cuiyi.javaeye.com/blog/81381</a>&nbsp;
          发表时间: 2007年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp; &nbsp;作为技术爱好者的我，常常从技术的角度考虑问题，也往往陷入技术的细节，而忽略了大局观。<br /><br />&nbsp;&nbsp;当不断阅读业界的文，尤其是soa相关分析，我日益感觉如是考虑问题的弊端，或许这也是开发者（junior, senior software developer）与系统架构师（system designer and architecture）的区别。前关心技术细节和技术的深度；后关心技术的解决问题面和技术的宽度。<br /><br />&nbsp; 回头再思考soa，才发现通过技术角度几乎无法理解soa的本质和初衷。web service的铁三角：服务提供者、服务消费者、服务注册中心。 soa的铁三角：数据、业务构件、组合。技术我门关注了web service,一种很好的分布式系统、异构系统间互联互通的解决方案，也是一种很好的面向接口的设计思想；sca sdo则因为web service的不能描述服务间依赖和服务组合而提出（附注1），也很好的体现了所谓的业务数据的组织。仅此而已，再多一点，esb负责消息路由和交互功能也隐含于sca的部署描述符来完成，esb的事件触发机制.....；或许我们能够很好的理解技术，正如架构师和高级开发人员区别所体现，我们对技术的初衷和目地有清晰的了解么？我们能够针对某一个目标选择出合适的技术来么？我惭愧的感觉自己的力不从心。<br /><br />&nbsp; 依然以soa为例来说这个问题。soa和web servie的初衷并不完全吻合，如果说web service是soa实现手段也有点牵强附会。web service初衷是什么？web service为解决互联互通的分布式应用的互操作而生；而soa并不是为互联互通的目标，而是为业务敏捷性而生。也道出soa实际本质背后的业务模型和业务数据；它要使得业务具有敏捷性，必然要求技术实现和业务脱离；这样业务才能够快速只管有效的表达和示意；相应，辅助手段也就有了要求，就是构件，业务负责人就可以如同堆积木般组织业务，技术人员拿到业务模型后开发就是，新需求或者业务需要就是变更和重组业务，对业务模型进行重组和重构，就是soa提供的有效手段 。<br /><br />&nbsp; 作为开发者的我，往往会因为一种技术的热门而去跟踪或者拼命想用于项目，但是它真的被需要么？真的是必要的么？是预期资源可控的么？没有去想，怕的是被潮流或者趋势淘汰，哪怕并不合理，也不理会性能和效率。你是否也具有此问题呢？<br /><br />&nbsp; 所以理智的对待问题，在时间、团队、资源内考虑技术的选择，从技术初衷以及技术的优缺点去选择技术，从宏观上理智的把控，而不是人云亦云。譬如大家批判ejb，因为ejb的初衷应用背景往往被滥用。这也符合spring创始人的&#8220;循环设计&#8221;理念。<br /><br />附注1：<br />组合服务：<br />1）bpel也是组合服务，但我更觉得他用于流程控制；<br />2）web servie的不足：定位于接口的暴露，但是不解决服务组合问题；<br /><br />&nbsp; 或许你可以说，设计一个类，包含所有需要的业务，然后把类发布成服务。可是需要组合得业务往往来源于不同系统，异构即不同语言，你如何表达于一个类呢？<br />&nbsp; 或许你又可以说，设计一个类，里面聚合很多服务，然后把类再次发布为服务，这部也是一个聚合服务么？<br />&nbsp; 对，是很好，但是如果业务再次变化呢？sca或许好一些，通过配置描述符。此处留下一点不确定，希望大家讨论。 
<img src="http://www.blogjava.net/crazycy/aggbug/118709.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-05-20 17:20 <a href="http://www.blogjava.net/crazycy/archive/2007/05/20/118709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/81381#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 20 May 2007 09:20:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/81381</link>
        <guid>http://cuiyi.javaeye.com/blog/81381</guid>
      </item>
      <item>
        <title>soa杂感系列之三：soa究竟为何物？</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/79168" style="color:red;">http://cuiyi.javaeye.com/blog/79168</a>&nbsp;
          发表时间: 2007年05月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp; 传统的MVC对于单个应用来说非常成熟，这是实践中证明的。对于大多数独立的应用和系统来说MVC很胜任。<br />&nbsp;&nbsp;&nbsp; ----传统技术和架构的合理性。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 然而，当企业中的应用规模不断扩大，从几个到几十个甚至上百个的时候，靠若干MVC架构的不断叠加能够构造出一个适合企业级的架构么？所以才出现了Portal这样的新技术来迎接这样的挑战，但是Portal的关注点更靠近与展现端，在底端通讯方面不能给出更好的答案。所谓架构是要一套整体解决方案，这样的架构所要解决的问题简而言之就是两个特点：数目或规模大、异构应用交互。<br />&nbsp;&nbsp;&nbsp; ----这是WebService的由来。<br />&nbsp;
<p align="left">&nbsp;&nbsp;&nbsp; WSDL 在增强应用之间的可连接性以及互操作性方面迈出了一大步。然而，WSDL只关注了服务接口，它并不提供描述一个服务所依赖的其它服务，以及这个服务所需要使用的配置策略和服务之间的依赖关系。 </p>
<p align="left">&nbsp;&nbsp;&nbsp; 单独通过WSDL 很难实现服务之间的组合调用。<br />SCA比WSDL走的更远的方面是定义了一个服务组件模型以及一个服务组装模型。<br />&nbsp;&nbsp;&nbsp; 服务模型提供了比WSDL更多的功能，它允许服务开发者不单定义服务的接口而且还可以定义 这个服务和其他服务的依赖关系，以及这些交互（事务，安全，以及可靠 传输）之间的策略还有服务所可能提供的配置功能。<br /></p>
<p>&nbsp;&nbsp;&nbsp; ----这是SCA的由来。<br /></p>
<p>&nbsp;&nbsp;&nbsp; 过去我们所采用的技术中，不管是.NET也好，J2EE也好，它们都有基于自身平台下的规范，比如在J2EE环境下，我们就会通过JDBC、Entity Bean这样的方式访问数据库或者其它数据源;而在.NET下同样有类似ADO这样的方式来访问各种不同的数据源。<br />&nbsp;&nbsp;&nbsp; 这里面的问题在于，平台透露了太多的技术细节，程序员需要了解很多相关的内容，比如他需要创建一个JDBC或ODBC的数据源，再利用这些规范所提供出来的编程接口来想办法得到数据源中的数据，为达成这个目标，程序员还需要去做对象-关系映射，以实现对象到关系数据库或者与之相反的数据转换。<br />&nbsp;&nbsp;&nbsp; 目前有一些技术可以用来解决这些问题，比如前段时间在Java社群中一直都非常流行的Hibernate等，诸如此类的方法和工具很多，他们都是用来协助程序员处理上述工作的。<br />&nbsp;&nbsp;&nbsp; 但无论如何，你都无法逃避地要看到很多这些方法中非常底层的技术细节，而且，程序员需要学习所有这些不同的技术，了解它们适应于什么情况，处理各种情况下的不同技术细节。<br />&nbsp;&nbsp;&nbsp; 事实上，程序员需要抽象层次更高的东西，比如业务数据对象(Business Object)以及它内部各种细粒度数据对象之间的关联，这是可以用一致、通用的方式来表示和操作的。有了抽象层次更高的模型，程序员就可以通用的方式来定义和访问业务数据，从而以统一的方式来描述和访问不同的数据源，降低对程序员技能的要求，提高生产率，更容易在不同的应用环境交换。<br />&nbsp;&nbsp;&nbsp; 这样，不管是Java或者C++语言描述下，程序员都不必去了解平台上的技术细节，用一个XML Schema描述这样的通用、简单的的业务数据模型，然后在运行将对象持久化到你的关系数据库、XML或者其它数据源中。</p>
<p>&nbsp;&nbsp;&nbsp; ----这是SDO的由来。<br /><br />&nbsp;&nbsp;&nbsp; SOA提供了一种很好的改变现有业务流程模式的途径，成功实施SOA项目的关键在于分析重点、减低风险，给出企业真正需要的功能模块。本质上讲，SOA并不是一种新技术，它仅仅是一种系统设计/规划模式，甚至可以说，只是一种现有业务流程重组转换模式。<br />&nbsp;&nbsp;&nbsp;更直接地说，有一种<strong>需求</strong>变得越来越明显：业务需要集成系统，并允许消费者利用基于标准的方法访问服务。<br />&nbsp;&nbsp;&nbsp; ----SOA本义<br /><br /></p>
<p>&nbsp;简单的讲，SOA就是将现有的一些功能模块打包成独立的程序包，命名为&#8220;服务&#8221;模块。对于这些服务模块，需要对其接口进行良好定义，使得其他的应用系统可以使用&#8220;拿来主义&#8221;，方便的使用这些服务模块。通过创建服务模块库，将所建立的模块集中到模块库中，这样，利用库中的服务模块，可以方便的构建出所需要的应用系统，<br />&nbsp;&nbsp;&nbsp; 面向服务的体系结构本质上来说是一种具有特殊性质的体系结构，它由具有互操作性和位置透明的组件集成构建并互连而成。<br />&nbsp;&nbsp;&nbsp; 基于SOA的企业系统架构通常都是在现有系统架构投资的基础上发展起来的，我们并不需要彻底重新开发全部的子系统; SOA可以通过利用当前系统已有的资源(开发人员、软件语言、硬件平台、数据库和应用程序)来重复利用系统中现有的系统和资源。<br /><font size="2">&nbsp;&nbsp;&nbsp; ----&nbsp;SOA和现实及技术的关系&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp; 软件企业的产品开发和营销必须两眼紧盯着市场需求，产品开发要和市场人员紧密结合，找到关键客户普遍而又重要的共性问题。<font size="3"><span style="BACKGROUND-COLOR: #999999">产品源于市场，服务于市场，研究技术是为了更好地解决客户的问题</span></font><font size="2">。<br /></font><br />&nbsp;&nbsp;&nbsp; 技术是手段，附以方法论，形成BEST PRATICE，驱使的目标或目的才是关键<br />&nbsp;&nbsp;&nbsp; 目前国内大肆渲染的soa(sca,sdo)等，无非是手段，真正能派上用场的场合确实有，但是是大多鼓吹或爱好者所罕遇的。<br />&nbsp;&nbsp;&nbsp; 研究技术是为了更好的解决客户的问题，这便是技术的目的！<br />&nbsp;&nbsp;&nbsp; -----技术的目的<br /></font></p>
<img src="http://www.blogjava.net/crazycy/aggbug/116921.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-05-12 03:24 <a href="http://www.blogjava.net/crazycy/archive/2007/05/12/116921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/79168#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 May 2007 19:24:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/79168</link>
        <guid>http://cuiyi.javaeye.com/blog/79168</guid>
      </item>
      <item>
        <title>技术感想系列之二：技术的目的</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/79014" style="color:red;">http://cuiyi.javaeye.com/blog/79014</a>&nbsp;
          发表时间: 2007年05月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>goCom社区<a href="http://gocom.primeton.com/blog/index.php?op=ViewArticle&amp;articleId=885&amp;blogId=62" title="软件的价值">软件的价值</a><strong>一文提到</strong>：<br /><font size="2"><br />软件企业的产品开发和营销必须两眼紧盯着市场需求，产品开发要和市场人员紧密结合，找到关键客户普遍而又重要的共性问题。<span style="BACKGROUND-COLOR: #999999">产品源于市场，服务于市场，研究技术是为了更好地解决客户的问题</span>。<br /><br /><br /><strong>有朋友问到</strong>：<br />特别认同您的最后一段话，但是也产生了疑问：<br />1 怎样才能找到关键客户普遍而又重要的共性问题呢？<br />2 如何判断找到的问题是否是关键的、普遍的、共性的呢？<br /><br />答复如下：<br />大客户营销策略有助于我们回答这两个问题。交行、华为这样关键客户的需求是需要十分重视的，电信客户的关键需求也是需要重视的，在和客户的不断沟通过程中，我们就可以判断哪些需求具有普遍性。普元今天产品的版本进步就是在这样的方针指导下进行的<br /><br /><strong>我的观点</strong>：<br />技术是手段，附以方法论，形成BEST PRATICE，驱使的目标或目的才是关键<br /><br />研究技术是为了更好的解决客户的问题，这便是技术的目的！<br /><br />目前国内大肆渲染的soa(sca,sdo)等，无非是手段，真正能派上用场的场合确实有，但是是大多鼓吹或爱好者所罕遇的。</font></p>
<img src="http://www.blogjava.net/crazycy/aggbug/116915.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-05-12 01:22 <a href="http://www.blogjava.net/crazycy/archive/2007/05/12/116915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/79014#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 May 2007 17:22:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/79014</link>
        <guid>http://cuiyi.javaeye.com/blog/79014</guid>
      </item>
      <item>
        <title>技术感想，聊天记录</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/78732" style="color:red;">http://cuiyi.javaeye.com/blog/78732</a>&nbsp;
          发表时间: 2007年05月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">嗯；技术是手段</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">哈哈</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">驱动概念</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">形成</span><span lang="EN-US">best pratice</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，结果为</span><span lang="EN-US">final</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">是啊，要从不同的角度来考虑</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">键盘一些键不好用了</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">我就改敲英文</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">别笑话我哈阿</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">呵呵</span><span lang="EN-US">~~</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">没关系</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">我们应该从超乎技术的角度考虑</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">同时更好的运用技术</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">形成生产力</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">能做到这一点</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">那就太难得了</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">高效一定要的</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">经验阿</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">你都有</span><span lang="EN-US">9</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">年的经验了</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">还有什么是难得啊啊</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">有些时候这个度</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">不好把握</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">http://gocom.primeton.com/blog15_9.htm</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">多个人一起切磋，互相弥补</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">精通技术不仅仅是为了精通技术，而是为了触类旁通</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">上面的一句话</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">我读了好几遍</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">后</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">才感觉到很</span><span lang="EN-US">ok</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">有些时候精通技术反为技术所累</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">所谓的精通</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">是</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">方法引导</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">不是技术细节</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">哈哈阿</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">你说的是技术细节</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">那需要高度，呵呵</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:24:01</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">1</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">培养你自己更广泛的兴趣，并坚持你的人生目标</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">2</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">锻炼你的演讲能力</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">3</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">多认识朋友，以他们为荣</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">4</span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">培养你的远见卓识</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:24:23</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">还要补充一点，要学好外语</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:24:22</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">高度</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">对</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:24:35</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">外语</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">实际上</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">不</span><span lang="EN-US">important</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:24:45</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">靠；但是很变态的</span><span lang="EN-US">important</span></p>
<span lang="EN-US">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span>&nbsp;00:24:58</p></span>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">哈哈<br /><br /></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">***&nbsp;</span><span lang="EN-US">&nbsp;00:25:36</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">有的时候没觉的很重要，没有的时候才感觉很重要</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">crazycy 00:26:04</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">对阿</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">我英语口语不好</span> <span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">听力不好</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">*** 00:26:32</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">噢噢，那就要注意拉</span></p>
<img src="http://www.blogjava.net/crazycy/aggbug/116629.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-05-11 01:01 <a href="http://www.blogjava.net/crazycy/archive/2007/05/11/116629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/78732#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 May 2007 17:01:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/78732</link>
        <guid>http://cuiyi.javaeye.com/blog/78732</guid>
      </item>
      <item>
        <title>soa相关大杂记(reference to a lot articles)</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/77462" style="color:red;">http://cuiyi.javaeye.com/blog/77462</a>&nbsp;
          发表时间: 2007年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ul>
    <li>UML主要理论成果是：统一面向对象的基本概念，并引进了许多新的概念，认为软件开发的过程实质上是从抽象的模型逐步细化，过渡到具体的实现，其中间的每个阶段都是实现了某一抽象模型，UML为此提供了建立模型的工具。
    </li><li><strong>粗粒度服务接口</strong>
    <p><span style="BACKGROUND-COLOR: #999999">粗粒度服务提供一项特定的业务功能，而细粒度服务代表了技术组件方法。</span><strong>举个例说明</strong>最为清楚<strong>:</strong>向计费系统中添加一个客户是典型的粗粒度服务，而你可以使用几个细粒度服务实现同一功能，如：将客户名加入到计费系统中，添加详细的客户联系方式、添加计费信息等等。<br /><br /><span style="BACKGROUND-COLOR: #999999">采用粗粒度服务接口的<strong>优点</strong>在于使用者和服务层之间不必再进行多次的往复，一次往复就足够</span>。Internet环境中有保障的TCP/IP会话已不再占据主导、建立连接的成本也过高，因此在该环境中进行应用开发时粗粒度服务接口的优点更为明显。<br /><br />除去基本的往复效率，事务稳定性问题也很重要。在一个单独事务中包含的多段细粒度请求可能使事务处理时间过长、导致后台服务超时，从而中止。与此相反，从事务的角度来看，向后台服务请求大块数据可能是获取反馈的唯一途径。</p>
    </li><li>
    <p><font color="#000080">Code First vs WSDL Frist</font> 如果要构建一个Web Services，CXF提供了两种构建方式一个是Code First，另一个WSDL First。接触过WSDL的朋友应该都有这样的感觉，WSDL虽然是用XML来进行描述的，但是如果让你在不借助任何工具的情况下写一个正确的WSDL，或者是改正一个错误的WSDL是很难的。Code First可以说是为我们提供了一个不错的选择。<br /><br />但是Web Services的Best Practies并不推荐Code First这一Web Services的构建方式。原因是什么呢？<br /><br />这是因为我们在使用Code First构建方式时很少考虑到Web Services之间的交互是以文档方式进行（这样可以大大提高Web Services的互交互性），如果是使用Code First来构建WSDL信息，在描述描述交互信息的XML Schema都是以我们的Code中定义的类型信息来生成的，这样就可能会暴露一些比较细粒度的信息。同时大家知道不同的语言（C＋＋，Java， C＃，PHP）对XML Schema映射是各不相同的，如果我们Code中定义的类型很特殊，就可能产生出一个不能互操作的现象。<br /><br />所以Best Practies建议你在创建Web Services从交互的消息Schema入手，构建一个中间层来提供一个比较粗粒度的描述，这样可以比较好的解决Web Services的互交互问题。</p>
    </li><li>
    <p><strong>分级</strong></p>
    <p>一个关于粗粒度服务的争论是此类服务比细粒度服务的重用性差，因为粗粒度服务倾向于解决专门的业务问题，因此通用性差、重用性设计困难。解决该争论的方法之一就是允许采用不同的粗粒度等级来创建服务。这种服务分级包含了粒度较细、重用性较高的服务，也包含粒度较粗、重用性较差的服务。<br /><br />在服务分级方面，须注意服务层的公开服务通常由后台系统（BES's）或SOA平台中现有的本地服务组成。因此允许在服务层创建私有服务是非常重要的。正确的文档、配置管理和私有服务的重用对于IT部门在SOA服务层快速开发新的公开服务的能力具有重要影响。</p>
    </li><li>
    <p><strong>松散耦合</strong></p>
    <p>SOA具有&#8220;松散耦合&#8221;组件服务，这一点区别于大多数其他的组件架构。该方法旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。<br /><br />服务提供者和服务使用者间松散耦合背后的关键点是服务接口作为与服务实现分离的实体而存在。这是服务实现能够在完全不影响服务使用者的情况下进行修改。<br /><br />大多数松散耦合方法都依靠基于服务接口的消息。基于消息的接口能够兼容多种传输方式（如HTTP、JMS、TCP/IP、MOM等）。基于消息的接口可以采用同步和异步协议实现，Web服务对于SOA服务接口来讲是一个重要的标准。<br /><br />当使用者调用一个Web服务时，被调用的对象可以是CICS事务、DCOM或CORBA对象、J2EE EJB或TUXEDO服务等，但这<strong>与服务使用者无关</strong>。底层实现并不重要。<br /><br /><span style="BACKGROUND-COLOR: #999999">消息类Web服务通常是松散耦合和文档驱动的，这要优于与服务特定接口的连接</span>。当客户调用消息类Web服务时，客户通常会发送的是一个完整的文档（如采购订单），而非一组离散的参数。Web服务接收整个文档、进行处理、而后可能或者不会返回结果信息。由于客户和Web服务间不存在紧密耦合请求响应，消息类Web服务在客户和服务器间提供了更为松散的耦合。</p>
    </li><li>
    <p><font face="Arial"><strong>明确的边界<br /></strong>通过跨越定义明确的边界进行显式消息传递，服务得以彼此交互。有时候，跨越服务边界可能要耗费很大的成本，这要视地理、信任或执行因素而定。<span style="BACKGROUND-COLOR: #c0c0c0">边界是指服务的公共接口与其内部专用实现之间的界线。</span>服务的边界通过 WSDL 发布，可能包括说明特定服务之期望的声明。</font></p>
    </li><li>
    <p><strong>精确定义的服务接口</strong></p>
    <p>服务是由提供者和使用者间的契约定义的。<strong>契约规定了服务使用方法及使用者期望的最终结果</strong>。此外，还可以在其中规定服务质量。此处需要注意的关键点是，<span style="BACKGROUND-COLOR: #999999">服务契约必须进行精确定义</span>。<br /><br />META将SOA定义为：&#8220;一种以通用为目的、可扩展、具有联合协作性的架构，所有流程都被定义为服务，服务通过基于类封装的服务接口委托给服务提供者，服务接口根据可扩展标识符、格式和协议单独描述。&#8221;该定义的最后部分表明在<strong>服务接口和其实现之间有明确的分界</strong>。</p>
    </li><li>
    <p><font face="Arial">&nbsp;<strong>面向文档</strong><font face="Arial"><br />消息被构造为&#8220;纯文本的&#8221;XML文档（换句话说，数据的格式只对XML有意义）。 消息通常用于传输业务文档，比如购买订单、发票和提单。这种交互类型与同步消息排队系统的兼容性很好，比如MQ Series、MSMQ、JMS、TIBCO、IMS等等。</font></font><font face="Arial"><font face="Arial">&nbsp;</font></font></p>
    </li><li>
    <p><strong style="COLOR: #ff0000">什么是SCA ，它试图解决什么样的问题？</strong><br /><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">WSDL 在增强应用之间的可连接性以及互操作性方面迈出了一大步。<br /><br />然而，WSDL只关注了服务接口，它并不提供描述一个服务所依赖的其它服务，以及这个服务所需要使用的配置策略和服务之间的依赖关系。</span></p>
    <p style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">单独通过WSDL 很难实现服务之间的组合调用。</p>
    <p><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">SCA比WSDL走的更远的方面是定义了一个服务组件模型以及一个服务组装模型。<br /><br />服务模型提供了比WSDL更多的功能，它允许服务开发者不单定义服务的接口而且还可以定义 这个服务和其他服务的依赖关系，以及这些交互（事务，安全，以及可靠 传输）之间的策略 还有服务所可能提供的配置功能</span></p>
    </li><li>
    <p><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">&nbsp;<span lang="EN-US"><font face="Times New Roman">SDO</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">规范则负责解决如何在异种服务间交换数据。它定义了一套中立的数据结构，目前有</span><span lang="EN-US"><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">和</span><span lang="EN-US"><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的具体语言规范</span><font face="Times New Roman"> </font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，</span><span lang="EN-US"><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">规范解决了</span><span lang="EN-US"><font face="Times New Roman">Java Bean</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">和</span><span lang="EN-US"><font face="Times New Roman">SDO</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的映射，</span><span lang="EN-US"><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">规范解决了</span><span lang="EN-US"><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">类、结构体和</span><span lang="EN-US"><font face="Times New Roman">SDO</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的映射。</span><span lang="EN-US"><o:p></o:p></span></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; <span style="BACKGROUND-COLOR: #ffcc99">SCA主要是针对在面向服务的计算环境里，组件的实现方法。同时，它强调了这些组件与现有的平台，组件之间的关联，并描述怎样通过已有的技术、平台甚至于现有的组件来实现面向服务组件。另外，在将这些服务组件实现以后，它们的接口以及这些接口的语义是怎样描述的。<o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; 其实，新的组件描述应该是技术独立、平台独立、语言独立的，也就是说它是一个开放的规范，这样就可以让很多IT厂商在不同的平台上用不同技术和语言来参考和实现这些技术。除此之外，面向服务的组件需要相互之间的交互，<span style="BACKGROUND-COLOR: #cc99ff">这种交互应该是松耦合的，也就是说需要打破过去那种紧耦合的现象。因为不管是.NET、J2EE还是更早的CORBA等技术，它们在支持分布式计算时，其组件往往和平台、语言以及实现技术紧密相关</span>。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　<o:p></o:p></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;<span style="BACKGROUND-COLOR: #ffcc00"> 过去，如果一个组件要调用另外一个组件的功能，它需要知道后者的接口在什么位置，使用什么协议和消息格式，这往往与其实现技术有直接的关系，所以技术、平台、语言和位置等各种各样的因素的透明性对于组件之间的交互就是非常重要的一件事情了，而SCA恰恰就规定了这一部分的内容。</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; 过去我们所采用的技术中，不管是.NET也好，J2EE也好，它们都有基于自身平台下的规范，比如在J2EE环境下，我们就会通过JDBC、Entity Bean这样的方式访问数据库或者其它数据源;而在.NET下同样有类似ADO这样的方式来访问各种不同的数据源。这里面的问题在于，平台透露了太多的技术细节，程序员需要了解很多相关的内容，比如他需要创建一个JDBC或ODBC的数据源，再利用这些规范所提供出来的编程接口来想办法得到数据源中的数据，为达成这个目标，程序员还需要去做对象-关系映射，以实现对象到关系数据库或者与之相反的数据转换。目前有一些技术可以用来解决这些问题，比如前段时间在Java社群中一直都非常流行的Hibernate等，诸如此类的方法和工具很多，他们都是用来协助程序员处理上述工作的。<span style="COLOR: red">但无论如何，你都<strong>无法逃避</strong>地要看到很多这些方法中<strong>非常底层的技术细节</strong>，而且，程序员需要学习所有这些不同的技术，了解它们适应于什么情况，处理各种情况下的不同技术细节。<strong style="BACKGROUND-COLOR: #00ffff">事实上，程序员需要抽象层次更高的东西，比如业务数据对象(Business Object)以及它内部各种细粒度数据对象之间的关联</strong>，<span style="BACKGROUND-COLOR: #ffcc99">这是可以用一致、通用的方式来表示和操作的</span>。</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ff99cc">有了抽象层次更高的模型，程序员就可以通用的方式来定义和访问业务数据，<strong>从而以统一的方式来描述和访问不同的数据源，降低对程序员技能的要求，提高生产率</strong>，更容易在不同的应用环境交换。<o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">　　这样，不管是</span><span lang="EN-US"><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">或者</span><span lang="EN-US"><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">语言描述下，程序员都不必去了解平台上的技术细节，用一个</span><span lang="EN-US"><font face="Times New Roman">XML Schema</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">描述这样的通用、简单的的业务数据模型，然后在运行将对象持久化到你的关系数据库、</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">或者其它数据源中。</span><span lang="EN-US"><o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的目标有很多，从某种程度上讲</span><font face="Times New Roman"> <span lang="EN-US">SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">看起来好像是</span><font face="Times New Roman"> <span lang="EN-US">J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的一把多功能&#8220;瑞士军刀&#8221;，因为它包含的特性可实现多种不同种类的功能，基本来讲，</span><span lang="EN-US"><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">及其相关的技术设计有以下五大主要专题</span><span lang="EN-US"><font face="Times New Roman">:<o:p></o:p></font></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">　　1）简化数据访问</span><span lang="EN-US"><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">第一个目标是提供对多种企业信息系统</span><font face="Times New Roman"> <span lang="EN-US">(EIS) </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的统一的数据访问，包括数据库、遗留应用程序</span><span lang="EN-US"><font face="Times New Roman">(</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">使用</span><font face="Times New Roman"> <span lang="EN-US">JCA)</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">、</span><span lang="EN-US"><font face="Times New Roman">XML </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">或者是</span><font face="Times New Roman"> <span lang="EN-US">Web </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">服务数据源。通过使用</span><font face="Times New Roman"> <span lang="EN-US">SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的一种独特而简单的模型，应用程序摆脱了使用多种</span><font face="Times New Roman"> <span lang="EN-US">API </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">和框架进行数据访问的复杂工作。</span><span lang="EN-US"><o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">　　2）数据提取</span><span lang="EN-US"><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">使用</span><font face="Times New Roman"> <span lang="EN-US">SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">后，数据的表示是独立于其数据源的，它采用了一种叫做</span><font face="Times New Roman"> <span lang="EN-US">Domain Store </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的</span><font face="Times New Roman"> <span lang="EN-US">J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">模式，这种级别的数据提取有很多优点，例如使数据操作变得更容易，实现了不同层之间的松耦合。</span><span lang="EN-US"><o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">　　3）数据操作</span><span lang="EN-US"><font face="Times New Roman">:</font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">一旦检索到信息后，</span><span lang="EN-US"><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">会提供一种统一的编程语言进行数据操作，简单的说，就是通过使用</span><font face="Times New Roman"> <span lang="EN-US">API </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">及其接口，</span><span lang="EN-US"><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">客户机可以读取数据和修改数据。</span><span lang="EN-US"><font face="Times New Roman">SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">为此提供了连接和断开连接的两种模型。</span><span lang="EN-US"><o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">　　4）数据传输</span><span lang="EN-US"><font face="Times New Roman">:SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">有一部分概念是关于传输对象</span><font face="Times New Roman"> <span lang="EN-US">(Transfer Object) </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">和传输对象组装程序</span><font face="Times New Roman"> <span lang="EN-US">(Transfer Object Assembler) </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">模式的。数据封装到</span><font face="Times New Roman"> <span lang="EN-US">SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">对象中后，它就可以在</span><font face="Times New Roman"> <span lang="EN-US">J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">层间高效地传输。</span><span lang="EN-US"><o:p></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
    <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">　　5）设计模式的采用</span><span lang="EN-US"><font face="Times New Roman">:SDO </font></span><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">的一个关键目标是鼓励大家采用公用的</span><font face="Times New Roman"> <span lang="EN-US">J2EE </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">模式，这也是</span><font face="Times New Roman"> <span lang="EN-US">SDO </span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">体系结构以一些广为人知的模式为基础的原因，例如传输对象</span><font face="Times New Roman"> <span lang="EN-US">(Transfer Object)</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">、数据访问对象</span><font face="Times New Roman"> <span lang="EN-US">(Data Access Object)</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">、传输对象组装程序和</span><font face="Times New Roman"> <span lang="EN-US">Domain Store</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">等。如果使用了</span><font face="Times New Roman"> <span lang="EN-US">SDO</span></font><span style="FONT-FAMILY: SimSun; mso-ascii-font-family: &apos;Times New Roman&apos;; mso-hansi-font-family: &apos;Times New Roman&apos;">，应用程序就可以从这些经过了验证的设计策略中受益，从而可以推动分层技术和松耦合的发展。</span></p>
    </li>
</ul>
<img src="http://www.blogjava.net/crazycy/aggbug/115492.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/crazycy/" target="_blank" style="text-decoration:none;">crazycy</a> 2007-05-06 03:22 <a href="http://www.blogjava.net/crazycy/archive/2007/05/06/115492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://cuiyi.javaeye.com/blog/77462#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 05 May 2007 19:22:00 +0800</pubDate>
        <link>http://cuiyi.javaeye.com/blog/77462</link>
        <guid>http://cuiyi.javaeye.com/blog/77462</guid>
      </item>
      <item>
        <title>SCA&amp;SDO存在的必要性是什么呢？疑惑中获得较好的文章 （引用）</title>
        <author>cuiyi.crazy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuiyi.javaeye.com">cuiyi.crazy</a>&nbsp;
          链接：<a href="http://cuiyi.javaeye.com/blog/77463" style="color:red;">http://cuiyi.javaeye.com/blog/77463</a>&nbsp;
          发表时间: 2007年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>转自:http://jnn.blogbus.com/&nbsp;</p>
<p><br />最近我在做有关ESB的开发工作，发现我们的产品（开源的Celtix&nbsp; <a href="http://celtix.objectweb.org/">http://celtix.objectweb.org</a>） 要支持JBI和SCA两个标准。这让我困惑了好久，JBI和SCA有什么区别呢？</p>
<p>前几天好好在网上收罗了一番，现在把收获到的东西和大家分享一下：</p>
<p>JBI definition <a href="http://www.theserverside.com/news/thread.tss?thread_id=35053">http://www.theserverside.com/news/thread.tss?thread_id=35053</a></p>
<p>SCA 与JBI的区别 <a href="http://azur.typepad.com/bpel/2005/12/sca_jbi_and_mor.html">http://azur.typepad.com/bpel/2005/12/sca_jbi_and_mor.html</a></p>
<p>上面的链接有详细的讨论，我简单整理了一下。</p>
<p>JBI 的由来</p>
<p>Java One 2005 had a very heavy emphasis on JSR-208, Java Business <br />Integration. However, he says, "there seemed to be some folks with <br />confused looks on their faces in some JBI talks." As a response, he's <br />written a blog entry on what JBI actually is <br />&lt;<a href="http://radio.weblogs.com/0112098/2005/07/07.html#a530">http://radio.weblogs.com/0112098/2005/07/07.html#a530</a>&gt;.</p>
<p>JBI是提供了一些简单的API定义， 这些定义包括 Normalized<br />Message Service , 在一个Router组件，以及一个管理模型用来管理服务<br />的部署集成，例如&nbsp; routing engines, BPEL engines, rule systems, transformation engines </p>
<p>JBI提供了一个逻辑的XML消息网络， 这一网络能够很容易的映射到<br />HTTP, email 和 JMS/MOM ，并很方便地适应遗留系统，二进制地传输，<br />和RPC系统（EJB和CORBA)。 JBI可以看做是对JMS的更高层次的逻辑<br />抽象，并提供了不同的消息交换方式（ 单步， 请求应答等）</p>
<p>&nbsp;</p>
<p><strong style="COLOR: #ff0000">什么是SCA ，它试图解决什么样的问题？</strong><br /><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">WSDL 在增强应用之间的可连接性以及互操作性方面迈出了一大步。<br /><br />然而，WSDL只关注了服务接口，它并不提供描述一个服务所依赖的其它服务，以及这个服务所需要使用的配置策略和服务之间的依赖关系。</span></p>
<p style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">单独通过WSDL 很难实现服务之间的组合调用。</p>
<p><span style="COLOR: #0000ff; BACKGROUND-COLOR: #ffcc99">SCA比WSDL走的更远的方面是定义了一个服务组件模型以及一个服务组装模型。<br /><br />服务模型提供了比WSDL更多的功能，它允许服务开发者不单定义服务的接口而且还可以定义 这个服务和其他服务的依赖关系，以及这些交互（事务，安全，以及可靠 传输）之间的策略 还有服务所可能提供的配置功能。</span></p>
<p>一个SCA模型对等于一个SOA项目，模型允许开发者组装一组服务组件，解决引用依赖和使用策略。这是一个很大的进步，因为当前的SOA平台需要开发者自己获取那些私有的服务部署引用，甚至有时要在他们的服务实现中写hard code.</p>
<p>&nbsp;</p>
<p>SCA与JBI的区别</p>
<p>SCA的美丽之处在用它关注的重点只是SOA开发者所看到和接触到的。 <br />SCA并没有关注用来执行SCA模块的runtime是如何构架的。 <br />这个runtime可以实现为一个将所有的SCA服务组件编译成为Java classes的丑陋的单一服务，或者是一组模块化的引擎（每个组件一个的那种），这些引擎可以通过一个企业服务总线来进行通讯。</p>
<p>JBI从另一个方面来说就是一组关注创建一个开发的，可扩这的以及标准组件的企业服务总线。 这样它的内核是和SCA有一些重合的地方。同时两者之间也存在互补的机制。</p>
<p>说它们互补，为什么不把他们绑定在一起呢。这里有两方面的原因。<br />第一个原因 是JBI关注的是如果将一组引擎组装并运行 于一个JVM中。 相反SCA在另一方面并不将一个模块约束单个JVM中。 一个SCA模块可以执行在一个JVM中，同时它也可以很方便的将这些引擎部署在不同的进程甚至是不同的节点上。<br />第二个原因 是SCA不但支持Java而且还支持C，在今后也许还会支持C#,php。 而JBI只是SCA的一个实现方式，而不是唯一的选择。<br /></p>
<p><br />====================================================<br />多少年来，Three Tier的架构似乎已经成为了教科书式的软件体系范本。它不断地提高软件灵活性和高聚合性的，时至今日，当软件复杂度更上一个数量级的时候，这种体系也开始孕育又一次重生。这就是最近的Buzz Words: SOA，也即SCA + SDO </p>
<p>　　受CHRIS在BLOG上所托，稍微关注了一下这方面的。</p>
<p>　　其实SDO已经有比较长的历史了，IBM去年就在从事该规范相关的开发。</p>
<p>　　而SCA相对来说更新鲜一些，主要是针对在面向服务的计算环境里，组件的实现方法。同时，它强调了这些组件与现有的平台，组件之间的关联，并描述怎样通过已有的技术、平台甚至于现有的组件来实现面向服务组件。另外，在将这些服务组件实现以后，它们的接口以及这些接口的语义是怎样描述的。其实，新的组件描述应该是技术独立、平台独立、语言独立的，也就是说它是一个开放的规范，这样就可以让很多IT厂商在不同的平台上用不同技术和语言来参考和实现这些技术。</p>
<p>　　除此之外，面向服务的组件需要相互之间的交互，这种交互应该是松耦合的，也就是说需要打破过去那种紧耦合的现象。因为不管是.NET、J2EE还是更早的CORBA等技术，它们在支持分布式计算时，其组件往往和平台、语言以及实现技术紧密相关。</p>
<p>　　过去，如果一个组件要调用另外一个组件的功能，它需要知道后者的接口在什么位置，使用什么协议和消息格式，这往往与其实现技术有直接的关系，所以技术、平台、语言和位置等各种各样的因素的透明性对于组件之间的交互就是非常重要的一件事情了，而SCA恰恰就规定了这一部分的内容。</p>
<p>　　另以方面，SDO其实与SCA是一对具有对应关系的规范。我早先就说过:软件=服务+数据。SCA更加关注业务逻辑，而SDO则更侧重于业务数据。</p>
<p>　　<span style="COLOR: #0000ff">过去我们所采用的技术中，不管是.NET也好，J2EE也好，它们都有基于自身平台下的规范，比如在J2EE环境下，我们就会通过JDBC、Entity Bean这样的方式访问数据库或者其它数据源;而在.NET下同样有类似ADO这样的方式来访问各种不同的数据源。这里面的问题在于，平台透露了太多的技术细节，程序员需要了解很多相关的内容，比如他需要创建一个JDBC或ODBC的数据源，再利用这些规范所提供出来的编程接口来想办法得到数据源中的数据，为达成这个目标，程序员还需要去做对象-关系映射，以实现对象到关系数据库或者与之相反的数据转换。目前有一些技术可以用来解决这些问题，比如前段时间在Java社群中一直都非常流行的Hibernate等，诸如此类的方法和工具很多，他们都是用来协助程序员处理上述工作的。但无论如何，你都无法逃避地要看到很多这些方法中非常底层的技术细节，而且，程序员需要学习所有这些不同的技术，了解它们适应于什么情况，处理各种情况下的不同技术细节。</span><span style="BACKGROUND-COLOR: #ffcc99">事实上，程序员需要抽象层次更高的东西，比如业务数据对象(Business Object)以及它内部各种细粒度数据对象之间的关联，这是可以用一致、通用的方式来表示和操作的。有了抽象层次更高的模型，程序员就可以通用的方式来定义和访问业务数据，从而以统一的方式来描述和访问不同的数据源，降低对程序员技能的要求，提高生产率，更容易在不同的应用环境交换。</span></p>
<p>　　这样，不管是Java或者C++语言描述下，程序员都不必去了解平台上的技术细节，用一个XML Schema描述这样的通用、简单的的业务数据模型，然后在运行将对象持久化到你的关系数据库、XML或者其它数据源中。</p>
<p>　　从技术上看，SDO规范做了如下几件事情:它定义了一个连接器，可以使用JDBC、ADO等各种不同的方式去和多种数据源交互，数据源也是多种多样，不单单局限于关系数据库，也可以是不同类型的XML文件，甚至是内存中的一块区域。同时它还提供诸如连接池、缓存(Cache)、断开连接时数据访问(Disconnected Access)等高级特性，提供了跨越B/S,C/S的边界。</p>
<p>&nbsp;&nbsp;&nbsp; 另外，SDO还定义了一个中介转换器(Mediator)，它与连接器交互，来完成数据持久化的工作，这个协调器能够理解我们定义好的Schema，让程序员能直接看到一个直观的对象图表(Object Graph)。它根据业务的语义定义一个完整的Schema，不仅能清晰地定义各种数据对象，而且还能有效地描述各种对象之间的联系，充分利用了XML强大的自描述能力。通过它，人们可以很方便的操纵数据对象。</p>
<p>　　综合起来说，SCA/SDO都是基于已有的技术，它们所要做的就是怎样在现有技术的基础上，为异构、分布的松耦合计算环境提供一个统一、开放的组件及其服务的描述。</p>
<p>　　IBM在其SCA的实现中，也就是WPS 6.0所提供的SCA运行时环境，有多达八种不同的组件实现形式可供选择。我想更理想的实现应该是提供一个可以扩展的接口。即使在语法上、数据结构上有很大的不同，甚至是某公司自己语义上的东西，也可以方便地纳入SOA的架构里。</p>
<p>　　这样一个规范目前受到了IT技术主流的技术厂商的支持，它的建立为基于SOA的下一代计算环境下的编程模型打下了一个坚实的基础。</p>
<p>　　与古老的CORBA技术(请允许我用这样的词来描述它，呵呵～)想比，两种技术的背后都有很一致的哲学。但是受限于当时的技术发展条件，我们回顾历史的时候，CORBA在很多细节上的处理并不是太好，而且，CORBA是基于面向对象思想的，与之不同的是SCA基于面向服务的思想，其实抽象程度要相比过去的提高很多。</p>
<p>　　这里我引用一下Gartner的报告:</p>
<ul>
    <li>　　随着商业和技术的推动，SOA将成为将来的发展趋势已经没有人怀疑了;
    <