JiveJdon Community Forums
在线56人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 开源JdonFramework及其应用案例论坛
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 4 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
kia126

发表文章: 18
注册时间: 2006年03月24日 17:07
给他发消息
关于cache的刷新 发表: 2006年06月10日 12:23 回复
目前有一个功能是这样处理的,流程如下:

xxx.do?method=yyy ---> DispatchAction --> Service ---> Dao

在Dao里做一个UPDATE操作(根据ID,修改表的一个字段) --> 清空cache

log如下:


10:01:40,889 DEBUG [ProxyMethodInvocation] [JdonFramework]enter method reflection
10:01:40,889 DEBUG [ProxyMethodInvocation] [JdonFramework] target:com.sunyark.service.ProductManagerImp service's method:insertMyFile running..
10:01:40,889 DEBUG [ProxyMethodInvocation] [JdonFramework] it is pojo target service
10:01:40,899 DEBUG [JdbcTemp] [JdonFramework]--> enter getSingleObject
10:01:40,899 DEBUG [JdbcTemp] UPDATE product SET filePath = ? where productId = ?
10:01:40,899 DEBUG [JdbcUtil] [JdonFramework] parameter 1 = xxx.pdf
10:01:40,899 DEBUG [JdbcUtil] [JdonFramework] parameter 2 = 192
10:01:41,100 DEBUG [PageIteratorSolver] [JdonFramework] clear the cache for the batch inquiry!
10:01:41,100 DEBUG [CacheManager] [JdonFramework]<-cache->remove the object of BLOCK0select productid from product where mpn like ? +%CS18LV40963DC-70% from cache
10:01:41,100 DEBUG [CacheManager] [JdonFramework]<-cache->remove the object of BLOCK0select count(1) from product where mpn like ? +%CS18LV40963DC-70% from cache
10:01:41,100 DEBUG [PageIteratorSolver] [JdonFramework] clear the cache for the batch inquiry!
10:01:41,100 DEBUG [MethodInvokerUtil] [JdonFramework] method invoke successfully
10:01:41,100 DEBUG [PoolInterceptor] [JdonFramework] realease a object:com.sunyark.service.ProductManagerImp to pool
10:01:41,100 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:insertMyFile finish!


问题:作完修改后,前台查询的时候,修改的字段值没有改变(数据库中值已经改变),为什么已经清空cache后前面的数据没有刷新?

我的分析:是不是因为此动作过程没有经过ModelHandler处理?

请banq老师帮忙分析一下.谢谢.
kia126

发表文章: 18
注册时间: 2006年03月24日 17:07
给他发消息
Re: 关于cache的刷新 发表: 2006年06月10日 12:54 回复
附上查询时的log,如下:


12:32:36,230 DEBUG [ProxyMethodInvocation] [JdonFramework]enter method reflection
12:32:36,230 DEBUG [ProxyMethodInvocation] [JdonFramework] target:com.sunyark.service.ProductManagerImp service's method:searchProducts running..
12:32:36,230 DEBUG [ProxyMethodInvocation] [JdonFramework] it is pojo target service
12:32:36,230 DEBUG [PageIteratorSolver] [JdonFramework]enter getPageIterator .. start= 0 count=30
12:32:36,230 DEBUG [BlockStrategy] [JdonFramework]enter getBlock ..
12:32:36,230 DEBUG [CacheManager] [JdonFramework]<-cache->try to get cache: BLOCK0select productid from product where mpn like ? +%CS18LV40963DC-70%
12:32:36,230 DEBUG [BlockQueryJDBCTemp] [JdonFramework]--> fetch the primary k** collection, sql sentence: select productid from product where mpn like ? +%CS18LV40963DC-70%
12:32:36,230 DEBUG [BlockQueryJDBCTemp] [JdonFramework]--> blockStart=0 blockSize=200
12:32:36,230 DEBUG [JdbcUtil] [JdonFramework] parameter 1 = %CS18LV40963DC-70%
12:32:36,230 DEBUG [BlockQueryJDBCTemp] [JdonFramework]--> found a primary k** = 192, type:java.lang.String
12:32:36,230 DEBUG [BlockQueryJDBCTemp] [JdonFramework]--> get a result succefully ..
12:32:36,230 DEBUG [UtilCache] [JdonFramework]cache now size = 1 maxSize =1000 this cache id:14330646
12:32:36,230 DEBUG [CacheManager] [JdonFramework]<-cache->save cache: BLOCK0select productid from product where mpn like ? +%CS18LV40963DC-70%, size:1
12:32:36,230 DEBUG [BlockStrategy] [JdonFramework] getBlockK**s, size=1
12:32:36,230 DEBUG [BlockStrategy] [JdonFramework] lastCount=1
12:32:36,230 DEBUG [BlockStrategy] [JdonFramework]got a Block1
12:32:36,230 DEBUG [CacheManager] [JdonFramework]<-cache->try to get cache: BLOCK0select count(1) from product where mpn like ? +%CS18LV40963DC-70%
12:32:36,230 DEBUG [BlockQueryJDBCTemp] [JdonFramework]--> execute fetch all count for sql sentence: select count(1) from product where mpn like ?
12:32:36,270 DEBUG [JdbcUtil] [JdonFramework] parameter 1 = %CS18LV40963DC-70%
12:32:36,280 DEBUG [BlockQueryJDBCTemp] [JdonFramework]--> fetchDataAllCount is1
12:32:36,280 DEBUG [UtilCache] [JdonFramework]cache now size = 2 maxSize =1000 this cache id:14330646
12:32:36,280 DEBUG [CacheManager] [JdonFramework]<-cache->save cache: BLOCK0select count(1) from product where mpn like ? +%CS18LV40963DC-70%, size:2
12:32:36,280 DEBUG [PageIteratorSolver] [JdonFramework]currentBlock: startIndex=0 endIndex=1 k**s length=1
12:32:36,280 DEBUG [MethodInvokerUtil] [JdonFramework] method invoke successfully
12:32:36,280 DEBUG [PoolInterceptor] [JdonFramework] realease a object:com.sunyark.service.ProductManagerImp to pool
12:32:36,280 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:searchProducts finish!
12:32:36,280 DEBUG [ModelListAction] [JdonFramework] getCache from db.
12:32:36,280 DEBUG [PicoContainerWrapper] [JdonFramework]lookup: name=webServiceFactory
12:32:36,280 DEBUG [PicoContainerWrapper] [JdonFramework]lookup: name=targetMetaDefLoader
12:32:36,280 DEBUG [TargetMetaDefXmlLoader] [JdonFramework]metaDefs size:18
12:32:36,280 DEBUG [WebServiceFactory] [JdonFramework] getService found :productManager
12:32:36,280 DEBUG [PicoContainerWrapper] [JdonFramework]lookup: name=visitorFactory
12:32:36,280 DEBUG [PicoContainerWrapper] [JdonFramework]lookup: name=sessionContextSetup
12:32:36,280 DEBUG [HttpRequestUserSetup] [JdonFramework] set principal name:REMOTE_ADDRESS=127.0.0.1
12:32:36,280 DEBUG [ServiceAccessorImp] [JdonFramework] enter getService: proxyInstanceFactoryVisitable in action
12:32:36,280 DEBUG [HttpSessionProxyVisitor] [JdonFramework] get the optimized instance for the k** com.sunyark.service.ProductManagerImpproxyInstanceFactoryVisitable
12:32:36,280 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:com.sunyark.service.ProductManager.getProduct
12:32:36,280 DEBUG [AopClient] [JdonFramework] enter AOP invoker2 for:com.sunyark.service.ProductManagerImp method:getProduct
12:32:36,280 DEBUG [AdvisorChainFactory] [JdonFramework] enter create PointcutAdvisor
12:32:36,280 DEBUG [AdvisorChainFactory] [JdonFramework] find all service's interceptos size=1
12:32:36,280 DEBUG [AdvisorChainFactory] [JdonFramework] find pojoService's interceptos size=5
12:32:36,280 DEBUG [ProxyMethodInvocation] [JdonFramework] method.getName() :getProduct
12:32:36,280 DEBUG [AopClient] [JdonFramework] MethodInvocation will proceed ...
12:32:36,280 DEBUG [ProxyMethodInvocation] [JdonFramework] <-----> enter ProxyMethodInvocation proceed() for -1
12:32:36,280 DEBUG [ProxyMethodInvocation] [JdonFramework] now call inteceptor : com.jdon.aop.interceptor.CacheInterceptor
12:32:36,280 DEBUG [CacheInterceptor] [JdonFramework] enter cacheInteceptor method:getProduct
12:32:36,280 DEBUG [CacheManager] [JdonFramework]<-cache->try to get cache: Modelcom.sunyark.model.Product192
12:32:36,280 DEBUG [CacheManager] [JdonFramework]<-cache->got it
12:32:36,280 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:getProduct finish!
12:32:36,280 DEBUG [ModelListAction] [JdonFramework] listForm 's property: getList size is 1
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
Re: 关于cache的刷新 发表: 2006年06月11日 15:34 回复
你修改时必定调用pageIterator的clearCache方法,但是这个pageIterator可能不是你查询是用的那个pageIterator。必须两者保持唯一。
kia126

发表文章: 18
注册时间: 2006年03月24日 17:07
给他发消息
Re: 关于cache的刷新 发表: 2006年06月13日 13:29 回复
问题:

清空cache的前提下,调用同样一个查询方法getProduct(),为什么产生的日志不一样?

请帮助分析一下导致这种情况发生的原因,我弄了大半天天也没有找出来.

附上日志如下:

(1)
17:56:20,472 DEBUG [ProxyMethodInvocation] [JdonFramework] target:com.sunyark.service.ProductManagerImp service's method:getProduct running..
17:56:20,472 DEBUG [ProxyMethodInvocation] [JdonFramework] it is pojo target service
17:56:20,472 DEBUG [JdbcTemp] [JdonFramework]--> enter queryMultiObject
17:56:20,482 DEBUG [JdbcTemp] [JdonFramework]SELECT * FROM product WHERE productid = ?
17:56:20,482 DEBUG [JdbcUtil] [JdonFramework] parameter 1 = 890
17:56:20,482 DEBUG [MethodInvokerUtil] [JdonFramework] method invoke successfully
17:56:20,482 DEBUG [PoolInterceptor] [JdonFramework] realease a object:com.sunyark.service.ProductManagerImp to pool
17:56:20,482 DEBUG [CacheInterceptor] [JdonFramework] save to cache
17:56:20,482 DEBUG [ModelCacheManager] [JdonFramework]<-cache->try to save cache:
17:56:20,482 DEBUG [UtilCache] [JdonFramework]cache now size = 7 maxSize =1000 this cache id:12646287
17:56:20,482 DEBUG [CacheManager] [JdonFramework]<-cache->save cache: Modelcom.sunyark.model.Product890, size:7
17:56:20,482 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:getProduct finish!
17:56:20,482 DEBUG [ModelListAction] [JdonFramework] listForm 's property: getList size is 1

(2)

17:58:53,983 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:com.sunyark.service.ProductManager.getProduct
17:58:53,983 DEBUG [AopClient] [JdonFramework] enter AOP invoker2 for:com.sunyark.service.ProductManagerImp method:getProduct
17:58:53,983 DEBUG [AdvisorChainFactory] [JdonFramework] enter create PointcutAdvisor
17:58:53,983 DEBUG [AdvisorChainFactory] [JdonFramework] find all service's interceptos size=1
17:58:53,983 DEBUG [AdvisorChainFactory] [JdonFramework] find pojoService's interceptos size=5
17:58:53,983 DEBUG [ProxyMethodInvocation] [JdonFramework] method.getName() :getProduct
17:58:53,983 DEBUG [AopClient] [JdonFramework] MethodInvocation will proceed ...
17:58:53,983 DEBUG [ProxyMethodInvocation] [JdonFramework] <-----> enter ProxyMethodInvocation proceed() for -1
17:58:53,983 DEBUG [ProxyMethodInvocation] [JdonFramework] now call inteceptor : com.jdon.aop.interceptor.CacheInterceptor
17:58:53,983 DEBUG [CacheInterceptor] [JdonFramework] enter cacheInteceptor method:getProduct
17:58:53,983 DEBUG [CacheManager] [JdonFramework]<-cache->try to get cache: Modelcom.sunyark.model.Product890
17:58:53,983 DEBUG [CacheManager] [JdonFramework]<-cache->got it
17:58:53,983 DEBUG [DynamicProxyWeaving] [JdonFramework]call method:getProduct finish!
17:58:53,993 DEBUG [ModelListAction] [JdonFramework] listForm 's property: getList size is 1

banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
Re: 关于cache的刷新 发表: 2006年06月14日 12:23 回复
>调用同样一个查询方法getProduct(),为什么产生的日志不一样
一种你是通过代码直接调用,如xxService.getproduct();
二种是你没有写代码,JF通过你的jdonframework.xml中CRUD配置getProduct,使用方法发射机制调用的,类似method.invoke("类名","类方法名");

两条执行路径不一样,所以JF输出不一致。
这个主题有 4 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam