Welcome Guest! Log in
The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…


Symptom

A process uses the API __ctx__.executeCommand("...").

The execution is OK from the Designer or from the Runtime's Scheduler.

But the execution fails from a startdelivery.bat (or startdelivery.sh) command.

Possible errors are :

javax.script.ScriptException: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.NullPointerException (<Unknown source>#3) in <Unknown source> at line number 3
                at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:156)
                at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:170)
                at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
                at com.indy.engine.actionCodes.ScriptingActionCodeI.executeCodewithRSet(SourceFile:151)
                at com.indy.engine.actionCodes.ScriptingActionCodeI.executeSimpleCode(SourceFile:323)
                at com.indy.engine.action.common.ActionCodeTypeI.executeCode(SourceFile:1646)
                at com.indy.engine.action.common.ActionCodeTypeI.run(SourceFile:1805)
                at java.lang.Thread.run(Thread.java:738)

or :

java.lang.NullPointerException
        at com.indy.engine.command.l.execute(SourceFile:1598)
        at com.indy.engine.command.parser.CommandLineParserI.executeCommandLine(CommandLineParserI.java:51)
        at com.indy.engine.command.a.b(SourceFile:2118)
        at com.indy.engine.main.scripting.ScriptContextI.a(SourceFile:413)
        at com.indy.engine.main.scripting.ScriptContextI.executeCommand(SourceFile:404)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at sun.org.mozilla.javascript.internal.MemberBox.invoke(MemberBox.java:167)
        at sun.org.mozilla.javascript.internal.NativeJavaMethod.call(NativeJavaMethod.java:245)
        at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1706)
        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)
        at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:240)
        at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
        at com.indy.engine.actionCodes.ScriptingActionCodeI.executeCodewithRSet(SourceFile:151)
        at com.indy.engine.actionCodes.ScriptingActionCodeI.executeSimpleCode(SourceFile:323)
        at com.indy.engine.action.common.ActionCodeTypeI.executeCode(SourceFile:1608)
        at com.indy.engine.action.common.ActionCodeTypeI.run(SourceFile:1767)
        at java.lang.Thread.run(Thread.java:745)

 

Solution

The __ctx__ API can be used from any process, as long as it is executed in a live Runtime.

It cannot be used in the context of a standalone delivery (startdelivery).

Possible alternatives are :

1. Use __ctx__.executeRemoteCommand(<runtimeHostName>, <runtimePort>, <runtimeCommand>); instead of executeCommand(...)

2. Instead of startdelivery, use startcommand.bat "connect to <runtimeHostname> port <runtimePort>;execute delivery <deliveryName>"

Knowledge Base

Suggest a new Article!