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>"