Sylvain Wallez wrote:

Gianugo Rabellino wrote:

On Jul 6, 2004, at 12:26 PM, Sylvain Wallez wrote:

There is a solution, though: there's a different FlowIntepreter for each Processor instance (they are SingleThreaded), and so each interpreter instance could produce a unique identifier and use it as the result of getSitemapPath (which should therefore be renamed).



Any suggestions for a good unique identifier?

Thanks so much,




Since ID uniqueness doesn't have to survive JVM restart, a date-based generator like this should do the job (sorry, no time to commit it myself):



Uhm, I might be missing something here. I understood that scope should be reused (resurrected?) when inside the same sitemap: in this case, your IDGenerator would yield a different result every time, hence a new scope. Is this what is needed? If that's the case, well, fair enough. :-)



Sorry, I wasn't clear in my explanation (I was hungry and ready to run for lunch, which isn't good for clarity ;-)


JavaScriptInterpreter should have an id attribute intialized once, whose value is used instead of getSitemapPath(), e.g.
private String interpreterID = IDGenerator.getNewID();


System.identityHashCode(this) is much simpler than suggested before IDgenerator.


But, it was mentioned that some component is single threaded - this means, for second (parallel) request, another component will get created, with different ID - and different scope will be obtained, breaking the flow again.


Vadim


and
   scope = (ThreadScope)userScopes.get(getSitemapPath());
becomes
   scope = (ThreadScope)userScopes.get(this.interpreterID);

Hope this is clearer.

Sylvain



Reply via email to