Sylvain Wallez wrote:
> Vadim Gritsenko wrote:
>
>> Sylvain Wallez wrote:
>>
>>> 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.
>
>
>
> Mmmh... The javadoc states that uniqueness cannot be guaranteed,
> although most JVMs implement it by returning the object pointer.
> That's why using an ID generator looks safer to me.
>
> Thinking further, we actually don't need a time-based ID (I
> copy/pasted this from some code I have here): a simple counter is
> enough to do the job.
Exactly :-)
>> 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.
>
>
>
> The interpreter is looked up by the sitemap engine (see
> FlowNode.java), so in that case SingleThreaded means a different
> instance for each sitemap, which handles all requests for that sitemap.
>
> A bit hacky, but that's how it is since the origin to ensure proper
> isolation of flowscripts between different sitemaps.
>
> So the unique ID attached to an interpreter instance is therefore also
> unique per sitemap, which is what we want to achieve here.
Got you. Hope it's mentioned somewhere in the comments / javadocs :-)
Vadim
|