Hello Steven,
****** First let me say that I am not a developer of cocoon, but a developer who uses cocoon, so it's possible that I have something wrong here. If so, anyone please feel free to correct me. This code works with the released version, cocoon2.0.2 Additionally, I am running all of this in the context of a jboss/catalina environment ****** I have a similar requirement to programmatically invalidate a cache of a particular pipeline from an action in a different pipeline. Search the mail archives for "programmatic invalidation" for the thread. Anyway, I am happy to say that I have now got programmatic invalidation working as follows: Here is the definition of the generator which I wrote <map:generator name="user" src="com.ihm.generators.UserGenerator" logger="sitemap.generator.userGen" label="content,data" pool-max="32" pool-min="8" pool-grow="4"/> Here is the pipeline I want to invalidate: <map:match pattern="user"> <map:generate type="user"/> <map:serialize type="xml"/> </map:match> There are other pipelines which call this pipeline using a file generator (like the one below), and then a cinclude transformer. <?xml version="1.0"?> <page xmlns:cinclude="http://apache.org/cocoon/include/1.0"> <cinclude:include src="cocoon:/roles"/> <cinclude:include src="cocoon:/user"/> </page> Here is the code which invalidates the "user" pipeline: <code> Store store= (Store) manager.lookup(Store.TRANSIENT_CACHE); // first remove the cached generator output PipelineCacheKey userPCKey = new PipelineCacheKey(); ComponentCacheKey ccKey; ccKey = new ComponentCacheKey(ComponentCacheKey.ComponentType_Generator, "user", // Shortname of generator to invalidate. getUserId().longValue()); // key to invalidate userPCKey.addKey(ccKey); // remove generator cache store.remove(userPCKey); PipelineCacheKey transPCKey= new PipelineCacheKey(); ccKey= new ComponentCacheKey(ComponentCacheKey.ComponentType_Serializer, "xml", // Shortname of serializer to invalidate. 1); // 1 is hardcoded as the key of this serializer // now we have the key to get the cached object. We could get it if we wanted. // CachedEventObject cachedObject = (CachedEventObject)store.get(pcKey); transPCKey.addKey(ccKey); transPCKey.addKey(userPCKey); /** * Delete this pipeline: generator + serializer. This is not used from * other pipelines, but is used if the output of the user pipeline is * streamed straight to a browser. Therefore in production this pipeline * will probably never be used, but we'll invalidate it just in case. */ store.remove(transPCKey); </code> As a side note, in my testing of this code, it seemed that the generator cache only was used when the pipeline was called from internally, ie "cocoon:/user", but the generator+serialiser pipeline was called if the pipelie was called externally, ie from a browser http://localhost:8080/user I *speculate* that if the pipeline is just gen+xml_serialiser, and is called internally, then the include transformer omits the serialiser as an optimization step. A final note is that you can find the cached values serialised to disk in "cocoon-files/cache-dir" somewhere under catalina/work under the same name as the PipelineCacheKey.toStringValue (once instantiated). However, they're only serialised on application shutdown/undeploy. Regs, Nick On Tue, 2002-05-14 at 14:56, Steven Sedlmeyer wrote: > We are evaluating porting an existing CMS and web publishing system over to > cocoon but we have some issues with caching. In our particular situation we > normally use two different cache management strategies: > > 1. For automated feeds (newswires etc.) we use a time based expiration > > 2. For Editor generated or managed content we generate events from the > database that cause content to be uncached when it is changed. This, in our > system, includes page layouts, articles, navigation and visual design. > > We have been unable to identify an existing caching strategy implemented in > cocoon that will allow us to manage caching for database driven content that > has an unpredictable update schedule without actually checking in the > database. > > Given that, we'd like to begin development of a new caching strategy that > would allow for an external entity to drive cache management for pipelines > so configured. Our initial thought is to use JMS publish/subscribe to > manage the communication of caching events and we're already prepared to > deal with this on the external side. What we're trying to get our heads > around is the current direction for caching. It appears from the code in > CVS that the caching support is being extracted from cocoon and turned into > an Excalibur component. > > Can anyone give us an update regarding the status of the caching code and > let us know where we should be looking as we do our development. I don't > want to build this based on the current cocoon classes if they're going to > be replaced in the near future with a parallel set of Excalibur classes... > > Thanks in advance. > > Steve Sedlmeyer > Crosswalk.com, Inc. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, email: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]