如何将 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' 中。失败示例: [ERROR] 执行错误:DevKit 生成 Java 代码时发生错误。检查日志以获取更多详细信息。" 通过一些改动,您的解决方案可以工作大卫。谢谢。请更新您的答案以反映对我有用的内容吗?然后我会将您的答案标记为:“ 更新了,虽然我不明白为什么sessionVars.myHashMap 不起作用。这是什么骡子版本?

以上是关于如何将 Java HashMap 传递给自定义 Mule 连接器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 googleMapController 传递给自定义小部件? (扑)

如何将 UIViewController 实例传递给自定义 UITableCell

如何将 crud 表中的行值传递给自定义提交按钮

如何将参数值传递给自定义 NSLOG

如何将 navigator.pop 传递给自定义反应原生组件

如何将变量传递给自定义 Django 模板加载器?