﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-梦中秋雨-随笔分类-技术文章</title><link>http://www.blogjava.net/AllanZ/category/13579.html</link><description>技术、工作、生活、心情
&lt;style&gt;
.posttitle{
  background-color:#EEEEEE;
  height:30px;
  padding-top:5px;
  padding-left:5px;
  border-top-width:1px;
  border-top-color:#999999;
  border-top-style:solid;
}
.postcontent{
  font-size:14px;
  line-height:24px;
}
.comment_content{
  font-size:14px;
  line-height:24px;
}
&lt;/style&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 04 Jun 2015 11:43:14 GMT</lastBuildDate><pubDate>Thu, 04 Jun 2015 11:43:14 GMT</pubDate><ttl>60</ttl><item><title>Java进程由于系统内存不足被杀掉的证据</title><link>http://www.blogjava.net/AllanZ/archive/2015/06/04/oomkill.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Thu, 04 Jun 2015 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2015/06/04/oomkill.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/425501.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2015/06/04/oomkill.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/425501.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/425501.html</trackback:ping><description><![CDATA[<div><br />若干日常机器的java进程总被莫名其妙kill掉，推测是内存不足原因导致的，但是一直没有找到切实的原因。今天看atatach上的一篇文章，找了了方法查找原因。<div></div><div>其实很简单，调用dmesg|tail或者demsg|more看一下近期的日志，出现类似如下的内容：</div></div><div></div><div>[22610355.206501] Out of memory: Kill process 22861 (java) score 821 or sacrifice child</div><div>[22610355.206524] Killed process 22861, UID 505, (java) total-vm:2631060kB, anon-rss:1682624kB, file-rss:972kB</div><div>[22610355.207609] DragoonAgent invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0</div><div>[22610355.207614] DragoonAgent cpuset=/ mems_allowed=0<br /><div></div><div>基本可以断定是由于内存不足，系统杀了java进程</div></div><img src ="http://www.blogjava.net/AllanZ/aggbug/425501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2015-06-04 18:49 <a href="http://www.blogjava.net/AllanZ/archive/2015/06/04/oomkill.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF结合Richfaces使用时的一种数据库分页方式</title><link>http://www.blogjava.net/AllanZ/archive/2013/08/17/jsf-richfaces-paging.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Sat, 17 Aug 2013 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/08/17/jsf-richfaces-paging.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/402977.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/08/17/jsf-richfaces-paging.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/402977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/402977.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在JSF和Richfaces的官方示例里面没发现正经的数据库分页示例，于是自己轮了一个，还算比较满意，分享出来。<br><br>struts等框架，视图（jsp、freemarker等)直接获取action中准备好的数据结果集合，请求下一页数据的时候，同样后台action处理请求，把action中的数据集合用新的这一页数据替换掉，然后渲染页面，从而实现分页。每次请求action的处理过程可以拿到页号等信息，所以在action调用service的时候就可以使用这些信息，调用相应的方法做分页数据查询。<br><br>JSF结合Richfaces做这个事情和Struts等框架有有很大的区别。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2013/08/17/jsf-richfaces-paging.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/402977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-08-17 17:00 <a href="http://www.blogjava.net/AllanZ/archive/2013/08/17/jsf-richfaces-paging.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在过去的两年，我们做的一些事情</title><link>http://www.blogjava.net/AllanZ/archive/2013/03/06/asiainfo-onion.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Wed, 06 Mar 2013 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/03/06/asiainfo-onion.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/396120.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/03/06/asiainfo-onion.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/396120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/396120.html</trackback:ping><description><![CDATA[写写过去两年我们做的一些事情。有兴趣参与的兄弟（北京）可以<a href="http://www.blogjava.net/AllanZ/archive/2013/02/28/job.html">联系我</a>。<br /><br />在<a href="http://www.blogjava.net/AllanZ/archive/2013/02/06/business-component.html">前面的一片日志</a>里面已经大概说过，关于建立功能级别的组件的想法。这些想法最初在我来到我到现在所在的这家公司之前就有，进入这家公司之后有了一个合适的机会，所以就开始做起来。后来起了个名字叫做Onion，取意于&#8220;一片一片相似的结构，最终正和起来形成一个功能整体&#8221;。最早的时候曾经想过叫做StoneBridge，最终因为和&#8220;四通桥&#8221;太接近而作罢（公司在四通桥）。<br /><br />Onion的目标是为企业应用开发团队提供两个方面的帮助：<br /><br /><div>&nbsp; &nbsp; 1.<span style="color: red;">进一步简化技术使用过程</span>，提高具体业务开发人员的开发效率，这一点通过对开源框架的封装和一些辅助工具来实现。</div><div>&nbsp; &nbsp; 2.<span style="color: red;">实现大多数企业级应用所需要的一些公共业务</span>，在具体项目中做到开箱即用，从而减少重复工作。同时，为了适应具体项目可能存在的特殊需求，这些业务实现往往具有比较高的可配置性和可扩展性。<br /><br />以此为目标，建立了一系列的技术、业务组件。有一个图，是大概1年前画的，现在已经更加丰富，但是图没有更新，也摆上来：<br /><br /><div style="text-align: center;"><img src="http://www.blogjava.net/images/blogjava_net/allanz/v1.png" width="726" height="491" alt="" /><br /><br /><div style="text-align: left;">项目过程中，主要使用了如下工具：<br /><br />1.Maven 每个组件都基于maven结构，搭建了私服，所有的组件以jar的形式发布到私服上。最终项目也是类似，通过依赖的方式引用组件。<br />2.JIRA 任务管理、进度控制 这个没什么好说的，有一点是装了scrum插件后每个月为周期去看燃尽图，挺有意思。<br />3.XMLMind XML Editor 这个用来写文档，docbook格式。最终发布为html/html_single形式。<br /><br />我们建立了项目的网站（内部），以月为周期，制定任务计划、发布更新版本。和最终项目之间建立清晰的支持关系。组件开发的这些人是部门内的技术核心，一方面维护组件间、建设、完善组件；同时针对项目提供技术支持，例如方案制定。在组件和项目间建立了良好的沟通、反馈机制。组件的新功能，会在项目里面得到使用、反馈。一个图，是2013-02的更新：<br /><br /><div style="text-align: center;"><img src="http://www.blogjava.net/images/blogjava_net/allanz/update.png" width="518" height="224" alt="" /></div><br />建立了文档站，容纳包含各个组件的新手入门、reference等文档。<br /><br />写了这么多，算是一个记录、总结。同时，如果有Java/Android方面的朋友有兴趣一起来做，那么是非常欢迎的。</div></div></div><img src ="http://www.blogjava.net/AllanZ/aggbug/396120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-03-06 11:03 <a href="http://www.blogjava.net/AllanZ/archive/2013/03/06/asiainfo-onion.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>收到很多QQ邮箱的退信</title><link>http://www.blogjava.net/AllanZ/archive/2013/02/27/reject-by-qqmail.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Wed, 27 Feb 2013 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/02/27/reject-by-qqmail.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/395781.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/02/27/reject-by-qqmail.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/395781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/395781.html</trackback:ping><description><![CDATA[qupier.com发给用户的邮件目前有以下几种：<br /><br />&nbsp; &nbsp; 1.账号激活<br />&nbsp; &nbsp; 2.密码找回<br />&nbsp; &nbsp; 3.摇号中签与否的通知<br />&nbsp; &nbsp; 4.未开通任何服务的提醒<br /><br />结果发给QQ邮箱的信件被退回很多。都是类似如下理由：<br /><br /><div>host&nbsp;mx3.qq.com[112.95.241.138]&nbsp;said:&nbsp;550&nbsp;Mail&nbsp;content denied.<br /><br />腾讯的帮助说怀疑是垃圾邮件等等。另外发现早上来了似乎可以发，到下午晚上就不行了，似乎是做了数量限制。<br /><br />无奈，目前qupier暂停了使用QQ邮箱注册。<br /><br />放狗也没找到什么解决办法，不知道有没有别的兄弟遇到这样的问题，如何解决的。</div><img src ="http://www.blogjava.net/AllanZ/aggbug/395781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-02-27 10:13 <a href="http://www.blogjava.net/AllanZ/archive/2013/02/27/reject-by-qqmail.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hazelcast作为hibernate缓存和业务缓存</title><link>http://www.blogjava.net/AllanZ/archive/2013/02/22/cache-hazelcast.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Fri, 22 Feb 2013 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/02/22/cache-hazelcast.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/395578.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/02/22/cache-hazelcast.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/395578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/395578.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 做去皮儿网（http://www.qupier.com），内容管理是一个系统，前端网站是一个系统，这两个系统之间独立部署，但是缓存要能够互通。例如后台修改了某个消息类型的说明，在前段网站上要能够展现出来（使用了hibernate的查询缓存）。其他的一些场景也许要缓存，例如网站的shiro权限信息缓存，不过这个不需要和后端系统互通。但是既然开搞，也不好意思再挂着ehcache。于是一并升级。<br><br>前面一篇日志各种碰壁后，终于找到了理论上能够实现功能的两个产品：gemfire和hazelcast。于是，开始尝试。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2013/02/22/cache-hazelcast.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/395578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-02-22 15:26 <a href="http://www.blogjava.net/AllanZ/archive/2013/02/22/cache-hazelcast.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>找集中式缓存做hibernate second level cache和业务缓存，失败</title><link>http://www.blogjava.net/AllanZ/archive/2013/02/21/cache.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Thu, 21 Feb 2013 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/02/21/cache.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/395542.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/02/21/cache.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/395542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/395542.html</trackback:ping><description><![CDATA[依然，先发广告：<span style="color: #303030; font-family: Verdana, Helvetica, Arial; line-height: 24px; text-align: justify; background-color: #ffffff;">去皮儿网（<a href="http://www.qupier.com">http://www.qupier.com</a>），每月26日通知你是否中签。</span><span style="color: red; text-align: justify; background-color: #ffffff;"><font face="Verdana, Helvetica, Arial"><span style="line-height: 24px;">已经推出广州的摇号结果通知了。<br /><br /></span></font></span><span style="text-align: justify; background-color: #ffffff;">之前做业务系统，缓存用的是ehcache，集群的时候用multicast广播通知。随着节点的增多，希望把整个缓存切换到集中式缓存上来。折腾了两天，各种碰壁。<br /><br /></span><span style="font-family: Verdana, Helvetica, Arial; line-height: 24px; text-align: justify; background-color: #ffffff;">首先是需求：<br /></span><span>&nbsp; &nbsp; 1.</span><span style="font-family: Verdana, Helvetica, Arial; line-height: 24px; text-align: justify; background-color: #ffffff;">Hibernate的二级缓存<br /></span><span>&nbsp; &nbsp; 2.</span><span style="font-family: Verdana, Helvetica, Arial; line-height: 24px; text-align: justify; background-color: #ffffff;">独立的业务缓存</span><span style="color: red; font-family: Verdana, Helvetica, Arial; line-height: 24px; text-align: justify; background-color: #ffffff;"><br /></span>&nbsp; &nbsp; 3.支持region，支持keySet，containsKey，region内遍历<br /><br />首先看了大名鼎鼎的memcached，以及客户端spymemcached。失败。首先，不支持region，各种轮子都是在key上加前缀之类的做文章。不支持keySet，不支持containsKey，不支持遍历。于是Pass。<br /><br />然后看到了ehcache server，可惜人家似乎发展商业版本的torrxxxx去了，ehcache server也2年多没有更新，并且没有hibernate二级缓存结合的任何文档、网文。Pass。<br /><br />然后看到了Infinispan，据说是jboss cache 的后继。也看到了hibernate-infinispan，也支持分区，心里一阵高兴。使用RemoteCacheStore可以实现hibernate的二级缓存以及查询缓存使用远端的缓存服务器。深入尝试，结果发现，首先，一定要jta，太不平民化了。其次，hibernate-infinispan里面明确写了只支持read-only,non-restrict-read-write,transactional这三种缓存策略。但是我的已有代码中有很多事read-write的。于是失败了。<br /><br />最后看到了redis，以及jedis。当前火爆的nosql数据库。想来也可以实现我要的功能。根据网文，可以使用hashes的方式实现region。这个方面基本上符合要求。然后很高兴在github上也找到了hibernate-redis这个项目，仔细一看，只支持read-only,non-restrict-read-write这两种缓存策略。郁闷死了。后来同样在github上看到一个jedis-lock项目，做了redis的锁机制。开始尝试修改hibernate-redis，依赖jedis-lock，想做个read-write策略出来，结果发现自己对hibernate的cache部分还是不太熟悉，里面各种softLock之类的东西，看ehcache的代码就看头大了。郁闷。<br /><br />总结，如果你用jta，不用read-write，那么用hibernate-infinispan就好了。否则，，，就麻烦了。<img src ="http://www.blogjava.net/AllanZ/aggbug/395542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-02-21 17:17 <a href="http://www.blogjava.net/AllanZ/archive/2013/02/21/cache.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于Spring实现seam形式的事件机制</title><link>http://www.blogjava.net/AllanZ/archive/2013/02/07/spring-events.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Thu, 07 Feb 2013 11:24:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/02/07/spring-events.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/395247.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/02/07/spring-events.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/395247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/395247.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 照例先做广告：去皮儿网（http://www.qupier.com），每月26日通知你是否中签。很快要退出广州的摇号结果通知了。<br><br>Seam的Events用的很舒服，spring提供的事件机制太罗嗦，所以起了念头，着这思路移植一下。最终效果如下：<br><br>//发布事件<br>Events.instance().fire(eventName,arg1,arg2.);<br><br>//发布异步事件<br>Events.instance().fireAsynchronous(eventName,arg1,arg2.);<br><br>//在事务中，发布当事务成功commit时触发的事件<br>Events.instance().fireOnTransactionSuccess(eventName,arg1,arg2.);<br><br>//在事务中，发布当事务完成（commit/rollback）时触发的事件<br>Events.instance().fireOnTransactionCompletion(eventName,arg1,arg2&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2013/02/07/spring-events.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/395247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-02-07 19:24 <a href="http://www.blogjava.net/AllanZ/archive/2013/02/07/spring-events.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>建立功能级别的组件</title><link>http://www.blogjava.net/AllanZ/archive/2013/02/06/business-component.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Wed, 06 Feb 2013 11:59:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2013/02/06/business-component.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/395193.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2013/02/06/business-component.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/395193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/395193.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 先做个广告，去皮儿网，可以每月26日通知你是否摇号中签。http://www.qupier.com<br><br>一直以来，组件一直都建立在技术的层面上。由于业务的复杂多变，似乎没有人想着把业务部分也做成可重用的组件。<br><br>我们团队在过去的两年里面在这个方面做了一些常识，写出来供网友参考、拍砖。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2013/02/06/business-component.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/395193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2013-02-06 19:59 <a href="http://www.blogjava.net/AllanZ/archive/2013/02/06/business-component.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（七）——JSF的优势之使用View作用域的Action</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/17/road-of-component-7.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Fri, 17 Jun 2011 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/17/road-of-component-7.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352511.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/17/road-of-component-7.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352511.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在以往的应用开发过程中，后端的业务组件（Action/Service/Dao），可以被设置为几种作用域：request、session、application。我们不可能把与每次请求关系很强的一些信息（例如某个列表页面要列出来的数据集合）简单的放到session里面去，这就导致了每次请求之间的大部分数据是不可能共享的。使用JSF，我们实现了一种叫做view的作用域，在不同的请求之间共享信息。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/17/road-of-component-7.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-17 13:38 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/17/road-of-component-7.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（六）——JSF的优势之自定义组件与模块化</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-6.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Tue, 14 Jun 2011 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-6.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352283.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-6.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352283.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JSF的很多文档上面说，要建立一个自定义组件，需要定义继承自UIComponentBase之类的类，然后写decode/encode方法等等，一大套内容，很复杂。幸好我们有其他的办法。其实定义一个组件在大多数情况下是不用去写这样的代码的。本节的内容是一个选择true/false两个值得下拉框组件。定义一个这样的组件需要做如下工作：&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-6.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-14 14:05 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-6.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（五）——JSF的优势之从url到页面r</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-5.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Tue, 14 Jun 2011 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-5.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352266.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-5.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352266.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我看到的若干mvc框架在展现一个包含动态数据内容的页面的时候，都是这样做的：请求/xx.do，到达某个action，执行配置好或者根据url映射到的某个方法，初始化数据，放到某个context里面（例如Request，或者struts用的ognl的context），然后根据配置或者规则，forward到某页面，然后展现。<br><br>这样做的好处是强制性的分离了展现和逻辑，缺点是多了若干配置，不自然。<br><br>JSF的路子和asp/php是一样的，你请求/a.xhtml，那么，ok，加载/a.xhtml文件。例如a.xhtml主体内容如下：&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-5.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-14 10:28 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/14/road-of-component-5.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（四）——JSF的优势之了解前端状态</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-4.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Mon, 13 Jun 2011 11:58:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-4.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352238.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-4.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352238.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 先补充一下上一篇留下的尾巴：最早看JSF的书的时候，使用jsp作为页面，#{xx}这样的标记不能直接写在页面里，必须套在一个标记里面（和struts2里面的ognl一样郁闷）。后来才知道，这是jsp的问题，不是JSF的问题。现在大家都是用facelets作JSF的展现，JSF2.0更是把这个标准化为首选。于是直接在页面上写#{someAction.doSth('Hello')}，完全OK，页面加载的时候会触发调用该方法。<br><br>然后我们再来看后端知道前端有什么的例子：&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-4.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-13 19:58 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-4.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（三）——JSF的优势之忘记http</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-3.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Mon, 13 Jun 2011 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-3.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352231.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-3.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352231.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352231.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在开始说JSF的优势。一个一个的说，最后整理的时候再分主次吧，现在先就针对上面的几个问题来说。<br><br>1.URL到action method&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-3.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-13 17:59 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-3.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（二）——JSF能够解决什么问题</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-2.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Mon, 13 Jun 2011 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-2.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352214.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-2.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352214.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先，看看在使用struts等框架做开发的时候，遇到的一些问题.&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-2.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-13 16:50 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/13/road-of-component-2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走在组件化的路上（一）——缘起</title><link>http://www.blogjava.net/AllanZ/archive/2011/06/10/road-of-component-1.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Fri, 10 Jun 2011 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2011/06/10/road-of-component-1.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/352059.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2011/06/10/road-of-component-1.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/352059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/352059.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 09年4月我从A公司离职，被同事拉到一个创业团队做网页游戏，他们当时使用的技术体系是基于Seam的。而我则是SSH的忠实用户，此前一直跟随江南白衣、appfuse的路线，大大小小也做了一些项目，也自己攒了一堆轮子。花了1年多的时间在一个基于元数据的基础框架上面，那时候我基本上掌握了maven的简单使用，于是自己做的一些基础性的东西也都是使用maven来做依赖管理、版本发布。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2011/06/10/road-of-component-1.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/352059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2011-06-10 17:55 <a href="http://www.blogjava.net/AllanZ/archive/2011/06/10/road-of-component-1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF请求处理过程（二） 请求处理过程总览（FacesServlet#service）</title><link>http://www.blogjava.net/AllanZ/archive/2009/07/20/287472.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Mon, 20 Jul 2009 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2009/07/20/287472.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/287472.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2009/07/20/287472.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/287472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/287472.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这总览，很明显是看FacesServlet的service方法。在FacesServlet的初始化过程中，构造出了全局的FacesContextFactory对象和LifeCycle对象。可以把FacesContextFactory看做是一个“请求包装工厂”，于是很明显，每当一个请求到达FacesServlet的时候，第一步便是拿着请求，到包装工厂里面包装一下，而包装的结果就是一个FacesContext。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2009/07/20/287472.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/287472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2009-07-20 14:48 <a href="http://www.blogjava.net/AllanZ/archive/2009/07/20/287472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse环境下的web应用配置</title><link>http://www.blogjava.net/AllanZ/archive/2008/12/15/246349.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Mon, 15 Dec 2008 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/12/15/246349.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/246349.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/12/15/246349.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/246349.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/246349.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用Eclipse开发web应用的人大概有两拨，一边是直接用Eclipse JEE版本做开发的，另外一边是用MyEclipse这个庞然大物的。二者各有优缺点，我觉得使用MyEclipse的大集成试的开发对于初学者来说可能可以省去很多基础的事情，便于入门。而对于高于入门水平的伙子们来说，我想基本的Eclipse才是更好的选择。一方面MyEclipse的Add XXX Capabilities不管3721加入全部库文件的做法对项目是一种污染，另外一方面隐藏的东西多了不利于个人对具体实现的学习。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2008/12/15/246349.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/246349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-12-15 10:47 <a href="http://www.blogjava.net/AllanZ/archive/2008/12/15/246349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于拦截器</title><link>http://www.blogjava.net/AllanZ/archive/2008/09/04/226850.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Thu, 04 Sep 2008 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/09/04/226850.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/226850.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/09/04/226850.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/226850.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/226850.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在水木回一个大牛的帖子讨论拦截器，也发到这里。<br><br>所谓拦截，是新媳妇回娘家，路遇强盗。重要的是她能不能回家已经取决与强盗而不是自己。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2008/09/04/226850.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/226850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-09-04 10:05 <a href="http://www.blogjava.net/AllanZ/archive/2008/09/04/226850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于模型的独立性</title><link>http://www.blogjava.net/AllanZ/archive/2008/08/25/224021.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Sun, 24 Aug 2008 16:03:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/08/25/224021.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/224021.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/08/25/224021.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/224021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/224021.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 文字写完以后，突然想起来很久以前在JavaEye上看的关于贫血模型、富血模型、充血模型的讨论。最后的结论大概与持久化无关的业务逻辑应该放在模型中实现，而与持久化有关的逻辑要放到Service中实现。看这几多文字，其实也就是说这么个意思，不过多说一些。闲话休提，正文开始。<br><br>在大结构上系统描述为上面的图形。关键元素是领域模型、领域服务、基础服务。能够精准的反应业务的模型，和围绕模型的有效的服务，是软件团队在某一行业领域生产成果价值的两个很重要的体现。领域服务作为系统的核心逻辑之一，一方面，承担着完成所有与技术环境相关的业务逻辑的实现，另外一方面，作为领域模型和技术环境的缓冲，保证了领域模型的普适、独立。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2008/08/25/224021.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/224021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-08-25 00:03 <a href="http://www.blogjava.net/AllanZ/archive/2008/08/25/224021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工厂模式ABC</title><link>http://www.blogjava.net/AllanZ/archive/2008/08/23/223890.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Sat, 23 Aug 2008 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/08/23/223890.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/223890.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/08/23/223890.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/223890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/223890.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这段文字最初是回复水木上一个mm的问题，问为什么要用工厂，整理之后，发到这里来。<br><br>工厂模式是创建模式，封装对象的创建过程。对象的创建最简单的方式是new出来，但是有一些情况下用new来创建对象会导致代码难以维护。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2008/08/23/223890.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/223890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-08-23 19:08 <a href="http://www.blogjava.net/AllanZ/archive/2008/08/23/223890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让Spring Security不再是玩具</title><link>http://www.blogjava.net/AllanZ/archive/2008/06/12/207329.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Thu, 12 Jun 2008 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/06/12/207329.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/207329.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/06/12/207329.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/207329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/207329.html</trackback:ping><description><![CDATA[<p>Acegi Security for Spring摇身变成Spring Security之后，相关配置简单了不少。但可惜的是官方的示例太过于玩具，把权限配置直接硬编码在配置文件中恐怕会让所有人都不爽。而深受SpringSide影响之后，RBAC至少也要能够基于数据库中的配置数据。于是苦苦搜寻，得文如下：<br />
<br />
http://java.dzone.com/tips/pathway-acegi-spring-security-</p>
<p><br />
这样么，才像是个product的样子。呵呵。</p>
<img src ="http://www.blogjava.net/AllanZ/aggbug/207329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-06-12 11:03 <a href="http://www.blogjava.net/AllanZ/archive/2008/06/12/207329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>切换Maven版本时候出现的问题</title><link>http://www.blogjava.net/AllanZ/archive/2008/06/11/207126.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Wed, 11 Jun 2008 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/06/11/207126.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/207126.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/06/11/207126.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/207126.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/207126.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 切换Maven版本时候出现错误的解决&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2008/06/11/207126.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/207126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-06-11 15:34 <a href="http://www.blogjava.net/AllanZ/archive/2008/06/11/207126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts请求处理过程简要描述</title><link>http://www.blogjava.net/AllanZ/archive/2008/04/02/190356.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Wed, 02 Apr 2008 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2008/04/02/190356.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/190356.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2008/04/02/190356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/190356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/190356.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 翻了一下Struts2的代码，理出了一个基本执行流程，应改可以对struts的结构有个了解了，另外，也可以由此找到一些扩展点。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2008/04/02/190356.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/190356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2008-04-02 13:59 <a href="http://www.blogjava.net/AllanZ/archive/2008/04/02/190356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext.XTemplate使用入门</title><link>http://www.blogjava.net/AllanZ/archive/2007/11/10/159573.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Sat, 10 Nov 2007 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2007/11/10/159573.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/159573.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2007/11/10/159573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/159573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/159573.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ext.XTemplate是Ext中关于页面模板的一个组件。用来将数据和模板组合出最终的html。所谓数据指的是javascript的对象。EMP在loadEntityToPage中使用了这个组件。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2007/11/10/159573.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/159573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2007-11-10 16:40 <a href="http://www.blogjava.net/AllanZ/archive/2007/11/10/159573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当JsonPlugin遇到CGLib</title><link>http://www.blogjava.net/AllanZ/archive/2007/09/03/142303.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Mon, 03 Sep 2007 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2007/09/03/142303.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/142303.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2007/09/03/142303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/142303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/142303.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JsonPlugin在分析类结构并序列化时，对于CGLig动态生成的类也是按照一般类来看待的。这就导致了两个问题：一个是去序列化了生成的子类中的本不应该序列化的属性，另外一个是由于CGLIB导致的Annotation丢失而引起的本不应该发生的序列化逻辑。简单的修改了一下JSONPlugin的代码，来避免上述的两个问题。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2007/09/03/142303.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/142303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2007-09-03 14:53 <a href="http://www.blogjava.net/AllanZ/archive/2007/09/03/142303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在基于Spring及Hibernate应用程序中使用ETags降低带宽占用和服务器压力</title><link>http://www.blogjava.net/AllanZ/archive/2007/07/13/130111.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Fri, 13 Jul 2007 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2007/07/13/130111.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/130111.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2007/07/13/130111.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/130111.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/130111.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Gavin Terrill 发表于2007.7.11 上午 8:45<br><br>讨论区：Java 主题：Web框架、集群及缓存<br><br><br>导言<br><br>REST方式的应用程序构架在近日所产生的巨大影响突出了Web应用程序的优雅设计的重要性。现在人们开始理解“WWW架构”内在的可测量性及弹性，并且已经开始探索使用其范例的更好的方式。在本文中，我们将讨论一个Web应用开发工具——“简陋的、卑下的”ETags，以及如何在基于SpringFramework的动态Web应用程序中集成这个工具，来提高应用的性能及可测性。<br><br>我们将要使用的基于Spring的应用程序是基于“petclinic”（宠物门诊？）的一个应用。在您下载的程序包中，包含了如何加入必要的配置和源代码让你亲自体验该程序的介绍。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2007/07/13/130111.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/130111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2007-07-13 16:06 <a href="http://www.blogjava.net/AllanZ/archive/2007/07/13/130111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Atlassian的两个软件 JIRA 和 Confluence</title><link>http://www.blogjava.net/AllanZ/archive/2007/05/24/119600.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Thu, 24 May 2007 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2007/05/24/119600.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/119600.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2007/05/24/119600.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/119600.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/119600.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Atlassian Confluence（简称Confluence）是一个专业的wiki程序。它是一个知识管理的工具，通过它可以实现团队成员之间的协作和知识共享。 <br><br>Confluence使用简单，但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息，文档协作，集体讨论。目前，Confluence被用于广泛地用于项目团队，开发团队，市场销售团队。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2007/05/24/119600.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/119600.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2007-05-24 10:48 <a href="http://www.blogjava.net/AllanZ/archive/2007/05/24/119600.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>长标题显示字数处理</title><link>http://www.blogjava.net/AllanZ/archive/2006/12/24/89765.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Sun, 24 Dec 2006 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2006/12/24/89765.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/89765.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2006/12/24/89765.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/89765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/89765.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很多情况下，我们需要控制长标题的显示字数。在客户端用JavaScript控制显示最大字数后，由于js把任何字符都当作1个长度来处理，由此导致全角和半角字符显示的实际长度不同。<br><br>例如我们设置某个文章列表页面所有的文章标题最长显示10个字符。那么如下的题目：<br><br>这篇文章是测试标题长度显示的文章<br><br>I love my country.I love all of you.<br><br>处理后，将分别显示为：<br><br>这篇文章是测试标题长<br><br>I love my (注意最后还有一个空格)<br><br>假设我们是按照中文的宽度来确定10个字符这个标准的，那么当标题是英文等半角字符时，显然太短了。反过来，如果我们按照英文等半角字符来确定显示字符数量标准，那么如果题目是中文的时候，又很容易出现自动换行等我们不希望出现的结果。<br><br>本文尝试以一种笨拙的办法处理这个问题。即使用js检查字符串中的每一个字符，如果发现有两个(注意不一定相连)的半角字符，那么就将显示长度标准加1。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2006/12/24/89765.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/89765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2006-12-24 17:25 <a href="http://www.blogjava.net/AllanZ/archive/2006/12/24/89765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nutch0.8.1学习笔记（1）</title><link>http://www.blogjava.net/AllanZ/archive/2006/11/22/82746.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Wed, 22 Nov 2006 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2006/11/22/82746.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/82746.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2006/11/22/82746.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/82746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/82746.html</trackback:ping><description><![CDATA[
		<p>近来一直想用Nutch建立一个校内的资源搜索引擎，却没想到有中文分词引发出来一大堆问题。在此做个记录。<br /><br />1. Cygwin下，Nutch0.8.1启动Crawl的时候找java.exe出错，路径错误找不到。解决方法是修改bin/nutch文件，78行的 JAVA=$Nutch_JAVA_HOME/bin/java ，去掉前面的$Nutch_JAVA_HOME，修改为JAVA=java。条件是系统中环境变量PATH中包含了jdk/bin。<br /><br />2. 0.7版本的Nutch拿回来设置urls规则和起始URL后可以直接使用bin/nutch crawl......来启动，但0.8.1版本这样启动会发现fetch起始URL的时候会出现Null指针错误。原因是conf/nutch-default.xml中的http.agent.name配置属性为空。而其说明中要求不为空。在value节点下随便写入一个值，例如test/unique。然后再启动Nutch，OK.</p>
<img src ="http://www.blogjava.net/AllanZ/aggbug/82746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2006-11-22 13:26 <a href="http://www.blogjava.net/AllanZ/archive/2006/11/22/82746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高Hibernate 3 启动速度（翻译）</title><link>http://www.blogjava.net/AllanZ/archive/2006/08/05/62001.html</link><dc:creator>梦秋雨</dc:creator><author>梦秋雨</author><pubDate>Sat, 05 Aug 2006 14:44:00 GMT</pubDate><guid>http://www.blogjava.net/AllanZ/archive/2006/08/05/62001.html</guid><wfw:comment>http://www.blogjava.net/AllanZ/comments/62001.html</wfw:comment><comments>http://www.blogjava.net/AllanZ/archive/2006/08/05/62001.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/AllanZ/comments/commentRss/62001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/AllanZ/services/trackbacks/62001.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文地址：http://www.hibernate.org/300.html<br><br>在Tomcat5.5.x环境下，调用Configuration().addCacheableFile来载入配置，建立Hibernate SessionFactory，成功地提高了载入速度。<br><br>推荐你只是在开发阶段采用这样的方式载入，最后的产品发布阶段你仍需使用经典的Hibernate.cfg.xml文件，通过Tomcat的ServletContextListener API在应用程序部署的时候建立Hibernate SessionFactory，而不是在程序第一次调用Hiberante的时候。&nbsp;&nbsp;<a href='http://www.blogjava.net/AllanZ/archive/2006/08/05/62001.html'>阅读全文</a><img src ="http://www.blogjava.net/AllanZ/aggbug/62001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AllanZ/" target="_blank">梦秋雨</a> 2006-08-05 22:44 <a href="http://www.blogjava.net/AllanZ/archive/2006/08/05/62001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>