Can't use Channel Api in Script Engine Java

41 views
Skip to first unread message

abdul rahman k via StackOverflow

unread,
May 31, 2015, 3:31:04 AM5/31/15
to google-appengin...@googlegroups.com

Since I'm trying to implement a system that needs to update all the connected clients when some change is caused in the server by any one of the client, I chose Channel Api of Google App Engine. Since I'm basically creating a Java Stand alone application, I'm trying to use the Java ScriptEngine to create a Javascript client and run it in the java application, but i get the following error:

Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing ; before statement (<Unknown source>#1) in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:224)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:240)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at com.ma_anahcorp.clipcohere.MainClass.main(MainClass.java:43)

Caused by: sun.org.mozilla.javascript.internal.EvaluatorException: missing ; before statement (<Unknown source>#1)
at sun.org.mozilla.javascript.internal.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109)
at sun.org.mozilla.javascript.internal.DefaultErrorReporter.error(DefaultErrorReporter.java:96)
at sun.org.mozilla.javascript.internal.Parser.addError(Parser.java:231)
at sun.org.mozilla.javascript.internal.Parser.addError(Parser.java:209)
at sun.org.mozilla.javascript.internal.Parser.reportError(Parser.java:266)
at sun.org.mozilla.javascript.internal.Parser.reportError(Parser.java:253)
at sun.org.mozilla.javascript.internal.Parser.reportError(Parser.java:246)
at sun.org.mozilla.javascript.internal.Parser.autoInsertSemicolon(Parser.java:1110)
at sun.org.mozilla.javascript.internal.Parser.statementHelper(Parser.java:1087)
at sun.org.mozilla.javascript.internal.Parser.statement(Parser.java:944)
at sun.org.mozilla.javascript.internal.Parser.parse(Parser.java:569)
at sun.org.mozilla.javascript.internal.Parser.parse(Parser.java:531)
at sun.org.mozilla.javascript.internal.Context.compileImpl(Context.java:2438)
at sun.org.mozilla.javascript.internal.Context.compileReader(Context.java:1355)
at sun.org.mozilla.javascript.internal.Context.compileReader(Context.java:1327)
at sun.org.mozilla.javascript.internal.Context.evaluateReader(Context.java:1166)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214)
... 3 more

I kindly look forward for some help or suggetsion



Please DO NOT REPLY directly to this email but go to StackOverflow:
http://stackoverflow.com/questions/30554950/cant-use-channel-api-in-script-engine-java

abdul rahman k via StackOverflow

unread,
May 31, 2015, 3:46:11 AM5/31/15
to google-appengin...@googlegroups.com

Here's my code snippet:

  engine.eval("channel = new goog.appengine.Channel('token');"  
            +"socket = channel.open();"
            +"socket.onopen = onOpened;"
            +"socket.onmessage = onMessage;"
            +"socket.onerror = onError;"
            +"socket.onclose = onClose;"
            +"onOpened = function(){"
            +   "alert('Opened');"
            +"}"
            +"onMessage = function(message) {"
            +   "print('Message arrived= '+ message.data);"
            +   "print('message');"
            +"}");

And when referred the documentation, it said add the following script in your client Html page, but where can I, in my case?

script:

<script type='text/javascript' src='/_ah/channel/jsapi'></script>

I kindly look forward for some help or suggestion

abdul rahman k via StackOverflow

unread,
May 31, 2015, 4:31:05 AM5/31/15
to google-appengin...@googlegroups.com

Since I'm trying to implement a system that needs to update all the connected clients when some change is caused in the server by any one of the client, I chose Channel Api of Google App Engine. Since I'm basically creating a Java Stand alone application, I'm trying to use the Java ScriptEngine to create a Javascript client and run it in the java application, but i get the following error:

Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "goog" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:224)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:240)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)

Caused by: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "goog" is not defined. (<Unknown source>#1)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3770)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3748)
at sun.org.mozilla.javascript.internal.ScriptRuntime.notFoundError(ScriptRuntime.java:3833)
at sun.org.mozilla.javascript.internal.ScriptRuntime.name(ScriptRuntime.java:1760)
at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1785)
at sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849)
at sun.org.mozilla.javascript.internal.InterpretedFunction.call(InterpretedFunction.java:162)
at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(ContextFactory.java:430)
at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(RhinoScriptEngine.java:116)
at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(RhinoScriptEngine.java:109)
at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(ScriptRuntime.java:3160)
at sun.org.mozilla.javascript.internal.InterpretedFunction.exec(InterpretedFunction.java:173)
at sun.org.mozilla.javascript.internal.Context.evaluateReader(Context.java:1169)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214)
... 3 more

Here's my code snippet:

   engine.eval("importClass(Packages.java.awt.datatransfer.DataFlavor);"
            +"channel = new goog.appengine.Channel('token');"   
            +"socket = channel.open();"
            +"socket.onopen = onOpened;"
            +"socket.onmessage = onMessage;"
            +"socket.onerror = onError;"
            +"socket.onclose = onClose;"
            +"onOpened = function(){"
            +   "alert('Opened');"
            +"};"
            +"onMessage = function(message) {"
            +   "print('Message arrived= '+ message.data);"
            +   "print('message');"
            +"};");
Reply all
Reply to author
Forward
0 new messages