Loss of engine scope in a new Thread

Sundararajan Athijegannathan sundararajan.athijegannathan at oracle.com
Fri Jan 12 05:49:01 UTC 2018


can you use send us a simple compilable, runnable test case that can 
reproduce your issue?

Thanks,
-Sundar

On 05/01/18, 12:07 PM, Koray wrote:
> Hello,
>
> I have a structure which creates a new thread for each client that is
> connected and assigns a new ScriptContext to them along with a new
> SimpleBinding for engine scope and same binding for global scope. Each
> engine scope has a variable called "client", which is basically the
> javascript object that represents the client. This object has methods
> like tell, which uses that client's socket to send and receive data.
> My problem is I can't seem to create a new thread and run a code in
> it. Each time I do it, it seems to be running on a new scope hense
> losing the client variable, which leaves me unable to contact with the
> client. Here are my engine options:
> engine=(NashornScriptEngine) factory.getScriptEngine(new
> String[]{"-ot=true", "-doe", "--global-per-engine", "-strict"});
> I thought global-per-engine might be the cause, but I can't get
> clients to have their own client variable without it. Is this a bug?
> How can I get my code to keep the engine scope in a new Thread which
> is created like "new java.lang.Thread(function run() {
> client.tell("hello"); });"
> Please let me know if this is not clear enough and I'll try to explain
> better along with code examples.
>
> Thank you


More information about the nashorn-dev mailing list