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