我开始在Mule中编写脚本时遇到了不少麻烦。老实说,我遇到了第一个障碍—我在文档中找不到任何东西来告诉我如何访问有效负载或如何将数据返回到流中。在
我使用的是Jython2.5和Mule3.4。在
我的流程非常简单:它从Ajax源获取一些文本并简单地回送它。目前Python脚本什么也不做(因为我无法弄清楚如何让它对有效负载执行某些操作)。在
<flow name="Python Script" doc:name="Python Script">
<ajax:connector name="connector-ajax" serverUrl="http://192.168.0.1:8000" resourceBase="C:\mule\workspace\scripting\src\main\app\docroot" doc:name="Ajax" />
<scripting:component doc:name="Python">
<scripting:script engine="jython" file="C:\mule\workspace\scripting\src\main\app\python\myscript.py"/>
</scripting:component>
<echo-component doc:name="Echo"/>
</flow>
我已经通读了Script Component Reference和{a2}-模块引用似乎有一些相关的信息,但我不知道如何在Python中使用它。在
如果我读了一篇关于《骡子2》的文章,我也会读到这篇文章。我试图在我的mule3项目中使用相同的技术,但是没有成功。在
使用@ppiixx的响应,我对Python脚本有了进一步的了解。在
仅仅拥有一行代码,例如return len(payload)
会导致Jython解释器抛出错误,因为return
不能存在于函数之外。很公平,这是标准。在
但是,有了代码
^{pr2}$我得到一个错误,说“找不到类的序列化程序”运输组织.NullPayload'。在
日志如下:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'python-test' +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO 2013-07-24 09:16:08,821 [[python-test].flow.stage1.02] org.mule.component.simple.LogComponent:
********************************************************************************
* Message received in service: flow. Content is: '{NullPayload}' *
********************************************************************************
ERROR 2013-07-24 09:16:08,849 [[python-test].flow.stage1.02] org.mule.exception.CatchMessagingExceptionStrategy:
********************************************************************************
Message : No serializer found for class org.mule.transport.NullPayload and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (org.codehaus.jackson.map.JsonMappingException)
Code : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. No serializer found for class org.mule.transport.NullPayload and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (org.codehaus.jackson.map.JsonMappingException)
org.codehaus.jackson.map.ser.impl.UnknownSerializer:52 (null)
2. No serializer found for class org.mule.transport.NullPayload and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (org.codehaus.jackson.map.JsonMappingException) (org.mule.api.transformer.TransformerException)
org.mule.module.json.transformers.ObjectToJson:107 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
这使我认为单独使用return
不足以将数据返回到流。在
我已经通读了脚本模块参考,虽然它给出了Groovy中的示例,但它没有给出Python中的示例,所以我不确定我哪里出错了。在
查看“脚本上下文绑定”部分here。在
基本上,脚本上下文中有许多变量可用,包括:message、payload和log。在
要使用python引擎返回数据,需要设置result变量。在
mule github中有一个example。在
相关问题 更多 >
编程相关推荐