首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mule调用java组件作为数组参数

mule调用java组件作为数组参数
EN

Stack Overflow用户
提问于 2015-03-27 23:49:56
回答 2查看 1.1K关注 0票数 0

属性文件:

#torun='GSD11','GSD12' torun='GSD11'

代码语言:javascript
复制
  <flow name="deleteInvoiceFlow" doc:name="deleteInvoiceFlow">
            <http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${port}" path="deleteInvoice" doc:name="HTTP"/>
            <invoke object-ref="client" method="deleteInvoice" methodArguments="${torun}" methodArgumentTypes="java.lang.String" />
     </flow>

  <spring:bean id="client" name="client" class="com.util.DeleteTable"/>  

Java: DeleteTable:

代码语言:javascript
复制
public String deleteInvoice(@Payload String deleteCompany) throws SQLException{

它适用于属性中的单个参数,如上面的属性文件中所示。但是如果我和下面的房地产公司一起运行应用程序

‘`torun=’GSD12 11‘,'GSD12’

它给出错误消息,如

代码语言:javascript
复制
1 (java.lang.ArrayIndexOutOfBoundsException). Message payload is of type: String

如何启用接收参数数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-30 20:42:08

骡子医生说:http://www.mulesoft.org/documentation/display/current/Invoke+Component+Reference

methodArguments="#1,#2“

methodArgumentTypes="java.lang.Float,java.lang.Float“

但是我的列表是随机的,它增长到1000到1000秒,我不想放1000 s的参数类型。作为解决方案,我将在java组件中加载mule-app.properties并读取属性内容。

代码语言:javascript
复制
public String deleteInvoice(){
      Properties prop = new Properties();
      InputStream input = DeleteTable.class.getClassLoader().getResourceAsStream("mule-app.properties");
      prop.load(input);
      return prop.getProperty("torun");
}
票数 0
EN

Stack Overflow用户

发布于 2015-03-30 13:27:55

Mule消息的有效载荷是一个对象。从而允许它处理任何类型的对象。

如果您检查MuleMessage接口,您将看到它。

在上面的代码中,发送从入站端点(http)到spring的任何内容,并且假设它将是一个字符串。

现在,根据收到的请求类型(get/post/put/etc),http入站端点中的有效负载肯定会发生变化,所以要小心。

回到你的问题上,如果你确信有效载荷将是一个数组,你可以把你的方法的强度改变成这样。如果不是,我将建议您将其更改为object,并验证即将到来的内容并进行相应的转换。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29311961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档