[英]Set properties to script groovy component in apache camel
我正在从Apache骆驼调用groovy脚本。 当我调用groovy脚本时,出现以下错误,提示No such property: INPUTS for class: Script1
。 我该如何克服? 我尝试了setProperty()。 setHeader但没有运气。
from("activemq:queue:test.ChooseIManger")
.script().groovy("resource:classpath:tests/port/test.gsh")
错误:
2017-10-02 13:42:00 DEBUG ScriptBuilder:413 - Script evaluation failed: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: INPUTS for class: Script1
javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: INPUTS for class: Script1
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158)
at org.apache.camel.builder.script.ScriptBuilder.runScript(ScriptBuilder.java:469)
at org.apache.camel.builder.script.ScriptBuilder.doEvaluateScript(ScriptBuilder.java:428)
at org.apache.camel.builder.script.ScriptBuilder.evaluateScript(ScriptBuilder.java:409)
at org.apache.camel.builder.script.ScriptBuilder.evaluate(ScriptBuilder.java:160)
at org.apache.camel.builder.script.ScriptBuilder.evaluate(ScriptBuilder.java:164)
at org.apache.camel.processor.ScriptProcessor.process(ScriptProcessor.java:47)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197)
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:79)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Caused by: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: INPUTS for class: Script1
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155)
... 16 more
Caused by: groovy.lang.MissingPropertyException: No such property: INPUTS for class: Script1
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
at Script1.run(Script1.groovy:1)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
... 17 more
我尝试如下设置setProperties,但出现了相同的错误
from("activemq:queue:test.ChooseIManger").setProperty("INPUTS",constant("123")).script().groovy("resource:classpath:tests/port/test.gsh");
我知道我可以按照以下步骤进行操作。 但是我想用apache camel groovy组件来做到这一点。
Binding binding = new Binding();
binding.setProperty("INPUTS", inputs);
binding.setProperty("RESULT", results);
GroovyShell shell = new GroovyShell(binding);
Object script = shell.evaluate(getScript("tests/port/test.gsh"));
test.gsh
def inputVal = INPUTS['param']
RESULT.outputVal = inputVal + 'output';
有一些预定义的绑定:上下文,属性,...
http://camel.apache.org/scripting-languages.html
在您的情况下,访问属性应如下所示(骆驼2.9+):
property.resolve("INPUTS")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.