<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>fangshun</title>
    <description></description>
    <link>http://fangshun.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>基于myfaces 1.1.x,seam 1.2 应用在websphere 6.1下的部署！</title>
        <author>fangshun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fangshun.javaeye.com">fangshun</a>&nbsp;
          链接：<a href="http://fangshun.javaeye.com/blog/191787" style="color:red;">http://fangshun.javaeye.com/blog/191787</a>&nbsp;
          发表时间: 2008年05月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          公司因为和IBM合作统一为客户提供websphere6.1的应用环境，所以让我很是恼火，有两点原因：<br /> 1.ws61只能完全支持j2ee1.4标准而不支持j2ee1.5,需要等待ws7.0出来才支持，虽然现在有ejb3的pack包，甚至传闻会出j2ee1.5pack,但是只是推荐开发环境使用（服了，开发环境我还用它），这样jstl,jsp,jsf的统一EL不能用了，jsf1.2规范不能用了，seam2.0不能用了，恼火！<br /> 2.我习惯使用myfaces1.1.5和tomahawk-1.1.6,都是基于jsf1.1规范，并使用seam1.2进行展现层管理！但是正常部署居然websphere6.1不兼容，更恼火！<br /><br />不兼容有两个方面：<br />1.myfaces不兼容，因为ibm有自己的jsf-ibm实现，而且将此加入到了com.ibm.ws.webcontainer_2.0.0.jar当中，成了ibm websphere web环境的必须标准，呵呵，更狠！<br />2.seam和ibm的jsf实现不兼容，不兼容的地方是会在启动处抛出java.lang.ClassCastException: org.jboss.seam.jsf.SeamApplication11 incompatible with com.sun.faces.application.ApplicationImpl<br />seam的领头人gavin.king这样说：<br />Yes, they should not do that typecast, that is a bug in their JSF impl.<br />呵呵gavin说那是他们的一个bug。<br />那么也就是说使用ibm的jsf实现的项目是使用不了seam了，只能用myfaces实现和标准实现了！<br />废话了半天其实解决的方法很简单：<br />就是进入企业应用-》你部署的应用-》模块管理-》你的war-》更改类加载顺序的选择项，让你的war应用加载高于父环境的类加载。<br />重启你的应用，myfaces就可以正确使用了<br />但是这样做有两个问题：<br />1.ibm的jsf组件就不用想了。<br />2.和jsf扩展的框架比如seam就需要部署在war中启动,myfaces-api,myfaces-impl.jar, seam.jar,seam-ui.jar等就要放在WEB-INF/lib下面，那么使用ear方式部署的项目会非常难受！<br /><br />参考文档：<br />myfaces部署：http://wiki.apache.org/myfaces/Websphere_Installation<br />jboss seam bug：http://www.jboss.com/index.html?module=bb&op=viewtopic&t=107948&postdays=0&postorder=asc&start=10
          <br/>
          <span style="color:red;">
            <a href="http://fangshun.javaeye.com/blog/191787#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/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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 10 May 2008 21:08:12 +0800</pubDate>
        <link>http://fangshun.javaeye.com/blog/191787</link>
        <guid>http://fangshun.javaeye.com/blog/191787</guid>
      </item>
      <item>
        <title>我工作电脑上的盗版情况</title>
        <author>fangshun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fangshun.javaeye.com">fangshun</a>&nbsp;
          链接：<a href="http://fangshun.javaeye.com/blog/157275" style="color:red;">http://fangshun.javaeye.com/blog/157275</a>&nbsp;
          发表时间: 2008年01月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          痛定思痛后决定剔除我在公司工作的电脑里面各种不必要的盗版，最终发现唯一必须要的盗版列表：<br />1.windows xp professional<br />2.office 2003 suite : word 2003, excel 2003, powerpoint 2003, visio 2003<br /><br /><br />唯一掏钱的是2002年买的winpim
          <br/>
          <span style="color:red;">
            <a href="http://fangshun.javaeye.com/blog/157275#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/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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Jan 2008 14:26:04 +0800</pubDate>
        <link>http://fangshun.javaeye.com/blog/157275</link>
        <guid>http://fangshun.javaeye.com/blog/157275</guid>
      </item>
      <item>
        <title>共享我在项目中使用jsf的一些经验</title>
        <author>fangshun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fangshun.javaeye.com">fangshun</a>&nbsp;
          链接：<a href="http://fangshun.javaeye.com/blog/121976" style="color:red;">http://fangshun.javaeye.com/blog/121976</a>&nbsp;
          发表时间: 2007年09月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我目前的项目前端使用的是jsf+seam的架构，目前项目已经进入尾声，我想把一些心得体会给大家说说，以便大家在使用jsf的时候，少走弯路。<br /><br /> 1.异常处理问题：请为jsf加入seam框架，看看Seam - 无缝集成JSF，共三部分，里面告诉了你怎么在servlet容器下配合spring使用seam，seam不是一定要在ejb3和jboss下才可以使用。因为单独使用jsf的话她的异常处理功能很简陋，跟踪不到你想看的地方，对于开发很不方便，你只有打开日志才能看到问题所在，而seam在加入phase-listener以后，对jsf不同的生命周期都进行了功能增强，即使不使用seam任何的功能，她也能毫无保留的输出所有的异常栈。<br /> <br />2.css问题：如果你想在你的项目中使用jsf，css太重要了，很多刚开始使用jsf的人都不是很习惯jsf基于块结构开发页面，因为jsf让你注意的是内容展现的结构，而不是内容展现的样式，这是完全符合w3开发html的初衷，大家使用&lt;table>&lt;tr>&lt;td>来做页面展现布局，其实是错误已久的方法，如果在jsf中能了解如何使用css进行布局，jsf不适合复杂页面设计这句话就不攻自破了。<br /> <br />3.细心的使用dataTable组件，数据列表是最常用的页面组件，但是我毫不留情的说jsf的dataTable组件的实现简直太滥了，它就是jsf开发一大祸根。没有很方便的解决特定行样式显示的问题，没有解决回退按钮风险问题，没有dataScroll和dataTable组件进行数据库分页的优雅办法，数据提交的幻影问题，我的开发很多时间用在了dataTable的和其他组件块融合上面。不过jsf1.2通过统一el，加入了对jstl的foreach标记的支持，我虽然还没有使用，但是我认为这有可能成为数据列表开发的一个有力补充。<br /> <br />4.建议把jsf的模型bean和后台的业务bean合二为一，这样可以在前端提交页面与模型绑定的同时，完成业务bean的数据封装，并且交由服务层处理一气呵成。这样做有个好处，就是我们会想方设法通过各种手段在第一时间就完成模型bean对业务bean的封装，消除服务层对dto的依赖。这样是可行的，因为jsf的页面绑定机制提供了很好的帮助。<br /> <br />5.请考虑多的使用convert组件，比如列表页面有个radio块，提交radio值就是一个int数值，然后在展现逻辑去恢复这个radio值对应的业务模型，这样增加了展现逻辑处理页面数据的负担，而且不好管理，如果把这个工作放在自定义的convert中，让convert在页面上显示int数值，在提交上寻找对象，那么页面和服务层就屏蔽了这样的工作，看到的都是对象的进出。<br /><br />6.我使用了myfaces一个自己的组件&lt;t:updateListener>,就是跨页面专递参数，非常好用，刚使用jsf的朋友，可以看到跳转的下一个页面用它怎么做，但是建议传递模型对象，不要传递数值，你使用jsf就是因为她是基于对象考虑页面设计的。<br /><br />7.小心使用session来处理jsf，jsf过多的使用了session，但是我可以肯定一点，展现层一定是需要基于状态的方式来做的，这样可以简化开发，无状态的方式会带来更多的无序代码。不是每个人都是高手。可以考虑使用seam的conversation来处理，她的长会话特别适合业务编辑，默认的短会话会填补jsf有时容易丢失的短期数据。<br /><br />8.调试jsf的问题：有时你使用jsf想知道你的数据在哪个阶段变化了，你不会把jsf代码加入到自己的工程中来调试把，请加入自定义的phaseListener，继承phaseListener这个接口，你可以在把你的程序设置在任何阶段跳出来进行调试。<br /><br />9.分页的问题：在google搜一下，有个<a href="http://www.blogjava.net/steady/archive/2005/12/30/26013.aspx" target="_blank">http://www.blogjava.net/steady/archive/2005/12/30/26013.aspx</a>提供了分页的方式，我就在使用,这是目前最可能的方式了把，呵呵，不过要注意她使dataTable的values直接使用了dataModel，她与seam的@dataModel是不兼容的，所以不能使用seam的@dataModel功能，需要使用get方式了。<br /><br />10.如果想使用ajax4jsf等ajax框架，你需要使用facelet，让页面成为标准的xhtml，记好了，不要写了一大堆才发现这个问题。<br /><br />11.如果你在dataTable列表页面使用了radio的话，你还想在列表上做一些link操作，一定要在操作上加入immediate=true，否则在没有选择radio的情况下她是不会让你过去的。并且列表中要使用selectOneRadio,如果使用checkbox就要使用selectBooleanCheckbox.组件。<br /><br />12.对于doGet的方式请使用seam的&lt;s:link>组件。<br /><br />13.如果你导入了其他页面，而没有使用facelet的话，那么导入的那个页面就要完全符合jsf组件的渲染方式，混合html会解析不出来。反过来在主页面应该尽量多使用jsf标记与html混合的方式，这样可以使开发变得简单，尽管有时候jsf会很丢丑，你试试每个html组件都有个render属性就知道了。jsf1.2已经把混合的html作为一个output组件来输出，可以和jsf组件兼容，是件好事。对于混合html这种方式，我想说你关注的是jsf组件和模型的关系，而不一定页面都得是jsf组件标记。<br /><br />14.不要相信jsf运行的速度慢，jsf虽然在树形组件处理上，每一个阶段都经历了递归遍历，但是要相信jsf依然很快，我现在的系统很快，如果你使用后很慢那是项目产生了问题，而不是框架的产生了问题。<br /><br />15.相信jsf一定是下一代表现层的王者，这很重要。<br /><br />就这么多把，jsf的能多经验，我还在摸索当中，有机会还会和大家交流<br />                                                                  fangshun1980@hotmail.com
          <br/>
          <span style="color:red;">
            <a href="http://fangshun.javaeye.com/blog/121976#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/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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Sep 2007 15:20:20 +0800</pubDate>
        <link>http://fangshun.javaeye.com/blog/121976</link>
        <guid>http://fangshun.javaeye.com/blog/121976</guid>
      </item>
  </channel>
</rss>