Data corruption with Nashorn + Handlebars and concurrent requests
Sundararajan Athijegannathan
sundararajan.athijegannathan at oracle.com
Wed Sep 9 11:28:52 UTC 2015
Hi,
No, there is no direct way to convert a Java Map to a real JSON object.
You've to do conversion as you hinted.
-Sundar
On 9/9/2015 2:43 PM, Sebastien Deleuze wrote:
> I am updating my Spring + Nashorn talk and the related sample
> applications, and I am wondering if in the Nashorn version provided
> with java 8u60 there is a better/easier way to convert a Java
> Map<String, Object> instance into a real JSON Object (with Iterable
> elements being converted to real JSON arrays)?
>
> Currently I am doing that:
>
> // Create a real JSON Object from the model Map
> var data = {};
> for (var k in model) {
> // Convert Java Iterable and List to real JSON arrays
> if (model[k] instanceof Java.type("java.lang.Iterable")) {
> data[k] = Java.from(model[k]);
> } else {
> data[k] = model[k];
> }
> }
>
> Any thoughts?
>
> On Mon, Jul 20, 2015 at 5:09 AM, A. Sundararajan
> <sundararajan.athijegannathan at oracle.com
> <mailto:sundararajan.athijegannathan at oracle.com>> wrote:
>
> By "reset", if you mean "throw all the stuff in global to get a
> blank global", then you can do this:
>
> ScriptContext sc = engine.getContext();
> sc.setBindings(engine.createBindings(),
> ScriptContext.ENGINE_SCOPE);
>
> This will create fresh (ECMAScript) global and makes it as
> ENGINE_SCOPE of the default context.
>
> -Sundar
>
>
> On Sunday 19 July 2015 02:37 AM, Matt Kime wrote:
>
> thanks, this is very helpful.
>
> one issue remains for me - is there a good way to reset the
> script engines
> in a development environment without restarting the whole app?
>
> --matt
>
> On Wed, Jul 15, 2015 at 1:02 PM, Sebastien Deleuze
> <sdeleuze at pivotal.io <mailto:sdeleuze at pivotal.io>>
> wrote:
>
> Hi,
>
> We ended up to use thread-local script engines [1] in
> Spring 4.2 for
> Javascript libraries not designed for concurrency like
> React or Handlebars.
> Based on my initial tests, it works pretty well. The main
> remaining open
> question is about the memory consumption, since it creates
> one ScriptEngine
> instance by thread.
> If we see some blocking issues regarding this topic, we
> may eventually
> experiment with a synchronized ScriptEngine pool, but I
> hope the
> thread-local approach will be fine.
>
> Regards,
> Sébastien Deleuze
>
> [1] https://jira.spring.io/browse/SPR-13034
>
> On Fri, Jun 5, 2015 at 5:08 PM, Matt Kime
> <mattk at meetup.com <mailto:mattk at meetup.com>> wrote:
>
> I'm curious if any progress has been made on isolating
> whatever isn't
> thread safe about handlebars template execution.
>
> I'm also working on using Handlebars.js inside nashorn
> however i'm doing a
> number of things different. i'm precompiling my
> templates using
> https://github.com/gruntjs/grunt-contrib-handlebars
> and then compile the
> js
> functions into cached bytecode.
>
> I haven't checked for threading issues yet but I'm
> glad i found this
> discussion so i know that i should.
>
>
>
>
More information about the nashorn-dev
mailing list