Java 强制Esper使用特定ScriptingEngine解析方言

Java 强制Esper使用特定ScriptingEngine解析方言,java,esper,Java,Esper,嘿,Esper专业人士 有没有一种方法/或解决方法可以让我强制Esper对所有表达式依赖某种脚本引擎(比如Mozilla Rhino) 首先,我知道我们可以配置Esper的默认方言。例如,如果我们将默认脚本引擎配置为rhino-like config.getEngineDefaults().getScripts().setDefaultDialogue(“rhino”) 像concat(str)[str+“sth”]将由Rhino执行 不幸的是,如果我们想强制Esper使用某种脚本语言,设置默认

嘿,Esper专业人士

有没有一种方法/或解决方法可以让我强制Esper对所有表达式依赖某种脚本引擎(比如Mozilla Rhino)

首先,我知道我们可以配置Esper的默认方言。例如,如果我们将默认脚本引擎配置为rhino-like
config.getEngineDefaults().getScripts().setDefaultDialogue(“rhino”)

concat(str)[str+“sth”]将由Rhino执行

不幸的是,如果我们想强制Esper使用某种脚本语言,设置默认方言是不够的。原因是Esper允许脚本方言与定义一起传递:

js:concat(str) [  str + "sth"];
在本例中,Esper将直接从表达式(这里是js)获取方言名称,并绕过默认方言(Rhino)

如果jvmforjs注册了两个脚本引擎(JS->java8nashorn,rhino->rhino),并且我们想要强制使用特定的脚本引擎,那么这将是一个巨大的问题

这种有问题的行为发生在我们内心深处

包com.espertech.esper.epl.script.jsr223

分叉代码不是我们的选择


有什么想法吗?

这更像是一个普通的Java问题。Esper脚本引擎的解决方案如下所示

该类使用
newscriptEngineManager().getEngineByName(方言)

如果要强制使用不同于EPL中提供的方言,可以更改该类或使用语句对象模型覆盖该方言