﻿<?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-esoa-文章分类-c. opensource.spingside研究</title><link>http://www.blogjava.net/esoa/category/13426.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 15:35:52 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 15:35:52 GMT</pubDate><ttl>60</ttl><item><title>浅析OSCache应用</title><link>http://www.blogjava.net/esoa/articles/60038.html</link><dc:creator>comchyi</dc:creator><author>comchyi</author><pubDate>Tue, 25 Jul 2006 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/esoa/articles/60038.html</guid><wfw:comment>http://www.blogjava.net/esoa/comments/60038.html</wfw:comment><comments>http://www.blogjava.net/esoa/articles/60038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/esoa/comments/commentRss/60038.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/esoa/services/trackbacks/60038.html</trackback:ping><description><![CDATA[        Cache是一种提高系统的响应速度,改善系统的运行性能的技术.OSCache是OpenSymphony组织提供的一个J2EE架构中Web应用层的缓存技术实现组件.<br /><strong>主要特点<br /></strong>1.可选的缓存区,可以将内存,硬盘或者同时使用内存和硬盘作为缓存区.<br />2.多种缓存级别,包括页面部分内容或者页面级内容.<br />3.容错功能,当web应用和数据库之间无法进行交互时,可以使用缓存,为用户提供数据.<br /><strong>OSCache的配置和安装.<br /></strong>1.下载、解压缩OSCache<br />    下载网址:http://www.opensymphony.com/oscache/download.html,版本2.0.将下载的Zip文件解压缩到c:\oscache（将默认为 %OSCache_Home%）目录下.<br />2.添加主要组件到应用中的WEB-INF\lib下<br />       包括:%OSCache_Home%\oscache.jar,%OSCache_Home%\lib\core\commons-logging.jar,%OSCache_Home%\lib\core\commons-collections.jar(如果jdk为1.4或以上版本,则可以不添加).<br />3.将oscache.properties、oscache.tld放入WEB-INF\class目录<br />        其中%OSCache_Home%\oscache.properties包含了对OSCache运行特征值的设置信息 .%OSCache_Home%\oscache.tld包含了OSCache提供的标签库的定义内容 .    如你需要建立磁盘缓存，须修改oscache.properties 中的cache.path信息 (去掉前面的#注释)。win类路径类似为c:\app\cache,unix类路径类为/opt/myapp/cache .<br />         oscache.properties 文件配置向导 <br />cache.memory 值为true 或 false ，默认为在内存中作缓存,如设置为false，那cache只能缓存到数据库或硬盘中，那cache还有什么意义：） <br />cache.capacity 缓存元素个数 <br />cache.persistence.class 持久化缓存类，如此类打开，则必须设置cache.path信息 cache.cluster 相关为集群设置信息。 如 cache.cluster.multicast.ip为广播IP地址 cache.cluster.properties为集群属性 <br />          <br />4.修改web.xml文件<br /><pre>&lt;taglib&gt;
&lt;taglib-uri&gt;oscache&lt;/taglib-uri&gt;
&lt;taglib-location&gt;/WEB-INF/classes/ oscache.tld&lt;/taglib-location&gt;
&lt;/taglib&gt; 
<pre><strong><br />OSCache缓存组件的使用<br /><br /><br /><br /></strong>1. JSP部分页面内容缓存<br /><p>cache标签的属性说明:</p><p><b>key</b> - 标识缓存内容的关键词。在指定的作用范围内必须是唯一的。默认的key是被访问页面的URI和后面的请求字符串。</p><p>你可以在同一个页面中使用很多cache标签而不指定他的key属性，这种情况下系统使用该页面的URI和后面的请求字符串，另外再自动给这些key增加一个索引值来区分这些缓存内容。但是不推荐采用这样的方式。</p><p><b>scope</b> - 缓存发生作用的范围，可以是application或者session</p><p><b>time</b> - 缓存内容的时间段，单位是秒，默认是3600秒，也就是一个小时，如果设定一个负值，那么这部分被缓存的内容将永远不过期。 </p><p><b>duration</b> - 指定缓存内容失效的时间，是相对time的另一个选择，可以使用简单日期格式或者符合USO-8601的日期格式。如：duration='PT5M' duration='5s'等</p><p><b>refresh</b> - false 或者true。</p><p>如果refresh属性设置为true，不管其他的属性是否符合条件，这部分被缓存的内容都将被更新，这给编程者一种选择，决定什么时候必须刷新。 </p><p><b>mode</b> - 如果编程者不希望被缓存的内容增加到给用户的响应中，可以设置mode属性为"silent"</p><p>其它可用的属性还包括：cron 、groups、language、refreshpolicyclass、refreshpolicyparam。</p><p>上面的这些属性可以单独使用，也可以根据需要组合使用，下面的例子将讲解这些常用属性的使用方式。<br /></p><h4>1.1 Cache标签实例分析:</h4><p><br /></p><p>1. 最简单的cache标签用法</p><p>使用默认的关键字来标识cache内容，超时时间是默认的3600秒</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;cache:cache&gt;
&lt;%
//自己的JSP代码内容
%&gt;
&lt;/cache:cache&gt; 
</pre></td></tr></tbody></table><br /><p>2. 用自己指定的字符串标识缓存内容，并且设定作用范围为session。</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;cache:cache key="foobar" scope="session"&gt;
&lt;%
//自己的JSP代码内容
%&gt;
&lt;/cache:cache&gt; 
</pre></td></tr></tbody></table><br /><p>3.动态设定key值，使用自己指定的time属性设定缓存内容的超时时间，使用动态refresh值决定是否强制内容刷新。</p><p>因为OSCache使用key值来标识缓存内容，使用相同的key值将会被认为使用相同的的缓存内容，所以使用动态的key值可以自由的根据不同的角色、不同的要求决定使用不同的缓存内容。</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;cache:cache key="&lt;%= product.getId() %&gt;" time="1800" refresh="&lt;%= needRefresh %&gt;"&gt;
&lt;%
//自己的JSP代码内容
%&gt;
&lt;/cache:cache&gt; 
</pre></td></tr></tbody></table><br /><p>4. 设置time属性为负数使缓存内容永不过期</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;cache:cache time="-1"&gt;
&lt;%
//自己的JSP代码内容
%&gt;
</pre></td></tr></tbody></table><br /><p>5. 使用duration属性设置超期时间</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;cache:cache  duration='PT5M'&gt;
&lt;%
//自己的JSP代码内容
%&gt;
</pre></td></tr></tbody></table><br /><p>6. 使用mode属性使被缓存的内容不加入给客户的响应中</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;cache:cache  mode='silent'&gt;
&lt;%
//自己的JSP代码内容
%&gt;
</pre></td></tr></tbody></table><br /><h4> 2 用CashFilter实现页面级缓存</h4><p><br /></p><p>在OSCache组件中提供了一个CacheFilter用于实现页面级的缓存，主要用于对web应用中的某些动态页面进行缓存，尤其是那些需要生成pdf格式文件/报表、图片文件等的页面，不仅减少了数据库的交互、减少数据库服务器的压力，而且对于减少web服务器的性能消耗有很显著的效果。</p><p>这种功能的实现是通过在web.xml中进行配置来决定缓存哪一个或者一组页面，而且还可以设置缓存的相关属性，这种基于配置文件的实现方式对于J2EE来说应该是一种标准的实现方式了。</p><p>[注] 只有客户访问时返回http头信息中代码为200（也就是访问已经成功）的页面信息才能够被缓存</p><p>2.1. 缓存单个文件</p><p>修改web.xml，增加如下内容，确定对/testContent.jsp页面进行缓存。</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;filter&gt;
      &lt;filter-name&gt;CacheFilter&lt;/filter-name&gt;
&lt;filter-class&gt;com.opensymphony.oscache.web.filter.CacheFilter&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;CacheFilter&lt;/filter-name&gt;
&lt;!-对/testContent.jsp页面内容进行缓存--&gt;
      &lt;url-pattern&gt;/testContent.jsp&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</pre></td></tr></tbody></table><br /><p>2.2. 缓存URL pattern</p><p>修改web.xml，增加如下内容，确定对*.jsp页面进行缓存。</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;filter&gt;
      &lt;filter-name&gt;CacheFilter&lt;/filter-name&gt;
&lt;filter-class&gt;com.opensymphony.oscache.web.filter.CacheFilter&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;CacheFilter&lt;/filter-name&gt;
&lt;!-对所有jsp页面内容进行缓存--&gt;
      &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</pre></td></tr></tbody></table><br /><p>2.3. 自己设定缓存属性</p><p>在页面级缓存的情况下，可以通过设置CacheFilter的初始属性来决定缓存的一些特性：time属性设置缓存的时间段，默认为3600秒，可以根据自己的需要只有的设置，而scope属性设置，默认为application，可选项包括application、session</p><p></p><table class="grey4" cellspacing="0" cellpadding="10" border="0"><tbody><tr><td><pre>&lt;filter&gt;
      &lt;filter-name&gt;CacheFilter&lt;/filter-name&gt;
&lt;filter-class&gt;com.opensymphony.oscache.web.filter.CacheFilter&lt;/filter-class&gt;
	&lt;init-param&gt;
         &lt;param-name&gt;time&lt;/param-name&gt;
         &lt;param-value&gt;600&lt;/param-value&gt;
      &lt;/init-param&gt;
      &lt;init-param&gt;
         &lt;param-name&gt;scope&lt;/param-name&gt;
         &lt;param-value&gt;session&lt;/param-value&gt;
      &lt;/init-param&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;CacheFilter&lt;/filter-name&gt;
&lt;!-对所有jsp页面内容进行缓存--&gt;
&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</pre></td></tr></tbody></table></pre></pre>参考:http://gceclub.sun.com.cn/yuanchuang/week-15/oscache.html<img src ="http://www.blogjava.net/esoa/aggbug/60038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/esoa/" target="_blank">comchyi</a> 2006-07-25 18:24 <a href="http://www.blogjava.net/esoa/articles/60038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始研究springside,支持openSourse.</title><link>http://www.blogjava.net/esoa/articles/60026.html</link><dc:creator>comchyi</dc:creator><author>comchyi</author><pubDate>Tue, 25 Jul 2006 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/esoa/articles/60026.html</guid><wfw:comment>http://www.blogjava.net/esoa/comments/60026.html</wfw:comment><comments>http://www.blogjava.net/esoa/articles/60026.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/esoa/comments/commentRss/60026.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/esoa/services/trackbacks/60026.html</trackback:ping><description><![CDATA[
		<p>        无意中发现了springside项目,一个国人的开源项目.虽然国内开源项目比较多,但用来作为学习和研究之用的开源项目实属不多,主要原因在于:一是开源项目涉及到的技术不能吸引大量技术爱好者的关注,而是开源项目的文档不够全,为研究提高了学习曲线.<br />        值得庆幸的是我遇到了springside,一个非常值得研究的开源项目,采用了非常流行和实用的开发技术,比如spring,hibernate,ajax,Acegi 等流行技术,提供了大量详实的文档,便于学习和研究.</p>
<img src ="http://www.blogjava.net/esoa/aggbug/60026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/esoa/" target="_blank">comchyi</a> 2006-07-25 17:01 <a href="http://www.blogjava.net/esoa/articles/60026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>