如何将 Java HashMap 传递给自定义 Mule 连接器?
Posted
技术标签:
【中文标题】如何将 Java HashMap 传递给自定义 Mule 连接器?【英文标题】:How do I pass a Java HashMap to a custom Mule connector? 【发布时间】:2014-03-11 02:37:32 【问题描述】:现在连接器代码如下所示:
// myConnector class
/**
* Process item
*
* @sample.xml ../../../doc/my-connector.xml.sample myConnector:process
*
* @param binary
* the item to process
* @param stuff
* key value pairs for processing
*
* @return the status as a string
*
* @throws NullPointerException
* when one of the parameters are null
*/
@Processor
public String process ( @Payload final byte[] binary,
final HashMap<String,String> stuff)
throws NullPointerException ...
// myConnector.sample
<!-- BEGIN_INCLUDE(myConnector:process) -->
<myConnector:process>
<myConnector:stuff>
<item1>data1</item1>
<item2>data2</item2>
</myConnector:stuff>
</myConnector:process>
<!-- END_INCLUDE(myConnector:process) —>
我的 Mule 流 (#[header:session:myHashMap]) 中的会话标头中存储了一个 HashMap,但我不知道如何将其发送到连接器。
---更新---
如果我更改连接器示例和连接器元素以匹配我在构建连接器时会收到错误。
// myConnector.sample
<!-- BEGIN_INCLUDE(myConnector:process) -->
<myConnector:process stuff="#[stuff]"/>
<!-- END_INCLUDE(myConnector:process) —>
// my mule flow
<flow>
<myConnector:process stuff="#[sessionVars.myHashMap]"/>
</flow>
// the error
[ERROR] Error validating example: cvc-complex-type.3.2.2: Attribute 'stuff' is not allowed to appear in element 'myConnector:process'. Failing example: <myConnector:process stuff="#[stuff]"/>
[ERROR] error on execute: An error ocurred while the DevKit was generating Java code. Check the logs for further details.
【问题讨论】:
请在process
上显示准确的注释
我用方法接口和cmets更新了原帖。这是你要求的吗?
啊,你有一个@Payload
参数,请始终提供所有信息。
好的,请在下面查看我的更新答案。
【参考方案1】:
怎么样:
<myConnector:process>
<myConnector:stuff ref="#[sessionVars['myHashMap']]" />
</myConnector:process>
【讨论】:
如果我按照您的建议更改 .sample 并更改连接器元素,则会收到以下错误:“[ERROR] 验证示例时出错:cvc-complex-type.3.2.2: Attribute 'stuff ' 不允许出现在元素 'myConnector:process' 中。失败示例:sessionVars.myHashMap
不起作用。这是什么骡子版本?以上是关于如何将 Java HashMap 传递给自定义 Mule 连接器?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 googleMapController 传递给自定义小部件? (扑)
如何将 UIViewController 实例传递给自定义 UITableCell