当前位置: 首页 > 知识库问答 >
问题:

在apache camel中设置属性到脚本groovy组件

申辉
2023-03-14

我正在从apache camel调用groovy脚本。当我调用groovy脚本时,我收到以下错误提示没有这样的属性:类的输入: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

我尝试按以下方式设置属性,但遇到了相同的错误

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

测验谷胱甘肽

def inputVal = INPUTS['param']

RESULT.outputVal = inputVal + 'output';

共有1个答案

靳金鹏
2023-03-14

有一些预定义的绑定:上下文、属性、...

http://camel.apache.org/scripting-languages.html

在您的情况下,访问属性应如下所示(camel 2.9):

property.resolve("INPUTS")
 类似资料:
  • 我使用的是免费(非专业)SoapUI 5.0,我在测试套件中有一个属性列表。然后,我有许多测试步骤,每个步骤与测试套件属性具有相同的名称。 我试图在测试步骤属性中编写Groovy脚本,以检索同名的测试套件属性的值。 例如: 测试套件的属性颜色为\u红色,值为12345 到目前为止,我在“info”属性值中拥有什么: 我不确定我是否需要新的GroovyShell()。评估位,但没有它仍然不起作用。我

  • 我有一些库脚本:lib1。groovy: lib2.groovy: lib3.groovy: 并希望在另一个脚本中使用它们:conf.groovy: conf.groovy是由用户配置的,他不知道我的后台lib脚本!他只知道提供的方法/任务:a()、b()、c()。实际上,我创建lib脚本是为了简化用户。 有没有办法将lib目录中的所有脚本(脚本lib1、lib2m、lib3)都包含到conf.g

  • 我正在开发一个Grails应用程序。我有一个带有一些属性的Groovy bean。我试图使用setter方法实例化和设置Java类中的一些属性。虽然我没有任何错误,但属性不包含任何值。我尝试在调试模式下查看对象内容:groovy对象包含1个唯一字段(r$fields),其中包含一个空的HashMap。 新潮豆 Java代码 添加作为Java代码中的最后一条语句,我得到以下NPE Stacktrac

  • 引用OHMY! Nitro Cursor I.nsi的内容: ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "OHMY! Nitro Cursor I" !define PRODUCT_VERSION "1.0" !define PRODUCT_PUBLISHER "OHMY! Nitro Cursor I" !

  • 我在谷歌上研究了我的许多问题,但没有找到任何能提供直接答案的东西。我正在设置代码电子邮件一个表一次(或多次)。我无法设置收件人的电子邮件地址。我需要脚本为数据范围()中的每个地址发出一封电子邮件。 我很遗憾,由于隐私原因,我不能分享整个脚本。(从积极的方面来说,除了这个以外,其他的东西都起作用了。) 要获得“gmailapp.sendeMail”语句可用的一个(或多个)电子邮件地址,需要做什么?无

  • 本文向大家介绍iOS 设置属性文本,包括了iOS 设置属性文本的使用技巧和注意事项,需要的朋友参考一下 示例