I developed the following flow using WSO2 Integration Studio 8.2.0. This flow runs perfectly fine in WSO2 Micro Integrator 4.2.0.
However, when I run the same flow in Micro Integrator 4.4.0, I get the following error related to the ScriptMediator while executing a simple inline Groovy script:
[2025-04-01 21:44:50,647] INFO {.apache.synapse.mediators.builtin.LogMediator} - {api:test} Request ID (log mediator) = 13864763 [2025-04-01 21:44:50,647] ERROR {.apache.synapse.mediators.bsf.ScriptMediator} - {api:test} The script engine returned an Exception executing the external groovy script : null function mediate java.lang.NullPointerException: Cannot invoke "javax.script.ScriptEngine.eval(String)" because "this.jsEngine" is null at .apache.synapse.mediators.bsf.ScriptMediator.processJSONPayload(ScriptMediator.java:504) at .apache.synapse.mediators.bsf.ScriptMediator.mediateForInlineScript(ScriptMediator.java:470) at .apache.synapse.mediators.bsf.ScriptMediator.invokeScript(ScriptMediator.java:316) at .apache.synapse.mediators.bsf.ScriptMediator.mediate(ScriptMediator.java:269) at .apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:132) at .apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:79) at .apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at .apache.synapse.api.Resource.process(Resource.java:342) at .apache.synapse.api.API.process(API.java:476) at .apache.synapse.api.AbstractApiHandler.apiProcess(AbstractApiHandler.java:95) at .apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:73) at .apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:90) at .apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:76) at .apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54) at .apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:352) at .apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101) at .apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at .apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:401) at .apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:460) at .apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:208) at .apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)
I have already copied the groovy-all-2.4.4.jar file to both the following directories:
<MI_HOME>/lib
<MI_HOME>/dropins
The script works in older versions, so this seems to be a regression or a change in script engine handling in 4.4.0.
Steps to Reproduce Minimal Reproducible Example (API):
Version WSO2 Micro Integrator 4.4.0
Environment Details (with versions) Micro Integrator 4.4.0 OS : RHEL 7