绕道刷新ColdFusion Webservices缓存

 
绕道刷新ColdFusion Webservices缓存
发布时间:2007-05-01  作者:闲云孤鹤  点击:172
假如我们在一个我们没有管理权限的Coldfusion服务器上开发CF webservices,如果你发现,不管我们对某一服务怎么修改,可调用的时候还是修改前的版本,你一定非常的恼火。这是因为ColdFusion缓存了webservice的配置,所以只有在先清除了已缓存的旧版本后,后续的改变才能起效。

CF管理员可以直接做这样清理的工作。可惜我们没有管理员访问权限,所有我们需要使用另外的方法--绕道刷新服务缓存。

我们可以通过删除缓存中的服务来将它完整的从缓存中清除(它将在下次其他人调用它的时候重新缓存),利用这一点,我们可以先删除残留缓存然后重新调用服务来生成一个新的缓存来绕道实现服务缓存的刷新,注意,如果在一台共享服务器上运行以下代码的话,您可以看到服务器上所有人缓存的Web services。不过删除或刷新所有的服务是无害的,所以不用考虑是否影响其他用户的服务。

以下是刷新服务缓存的代码,将其复制一个单独的CF文件中然后运行就可以了:
  1. <H2>Webservices in cache:</H2>  
  2.       
  3. <cfobject action="CREATE" type="JAVA" class="coldfusion.server.ServiceFactory" name="factory">  
  4. <cfset xmlRpc = factory.getXMLRPCService()>  
  5. <cfset webServices = xmlRpc.mappings>  
  6.       
  7. <cfparam name="url.del" default="false">  
  8. <cfparam name="url.refresh" default="false">  
  9. <cfoutput>  
  10. <cfif url.del>  
  11.   <cfloop item="webService" collection="#webServices#">  
  12. <cfset xmlRpc.unregisterWebService(webService)>  
  13.   </cfloop>  
  14.   <cflocation url="#cgi.script_name#">  
  15. </cfif>  
  16. <cfif url.refresh>  
  17.   <cfloop item="webService" collection="#webServices#">  
  18. <cfset xmlRpc.refreshWebService(webService)>  
  19.   </cfloop>  
  20.   <cflocation url="#cgi.script_name#">  
  21. </cfif>  
  22.       
  23. <cfloop item="webService" collection="#webServices#">  
  24.   - #webService#<BR>  
  25.    <cfflush>  
  26. </cfloop>  
  27.     <BR>  
  28. [<A HREF="#cgi.script_name#?del=1">KILL ALL</A>]   
  29. <BR>  
  30. [<A HREF="#cgi.script_name#?refresh=1">REFRESH ALL</A>]   
  31. </cfoutput>  
  32. <HR>  


原文:Refreshing Cached ColdFusion Webservices Through the Back Door
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值