DVD wrote:
> Thanks.  I have many threads come and go instead of a fixed pool so
> the overhead is big.
> I hope rhino to have a mode that would allow a preloaded/compiled JS
> (template) to be executed repeatedly
> with different scope (essentially a template engine ) to produce an
> output string.
> the template would run in only single thread before producing the output.
> Equivalent of Freemarker engine.  Would it be possible?  Or because of
> this issue,
> Rhino has not been widely used as template engine for Java, compared
> to others like
> velocity/freemarker.
This should definitely not be a problem.

In ESXX, for instance, I have an ExecutorService with a ThreadFactory
that enters/leaves a JS context as part of the thead's lifespan. These
threads then handles requests by calling functions in a JS application
scope. The application scope is set up once when the JS app is loaded,
by executing the pre-compiled JS scripts files (using
Context.compileString()) with it.

If you want your requests to execute isolated from each other, you can
simply create a new global scope and execute the compiled script with it
for each request.

(It's also possible to mix these strategies by having a shared top-level
scope and using the prototype chain to add per-request scopes (needs
Context.FEATURE_DYNAMIC_SCOPE, I think), but I could never quite get
this to work properly, since in ESXX, I need to allow arbitrary Java
threads to call JS functions, and there were some issues that I have
forgotten about now.)

-- 
---- Martin Blom --------------------------- [email protected] ----
Eccl 1:18                                 http://martin.blom.org/

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino

Reply via email to