繁体   English   中英

ule子将Java组件作为数组参数调用

[英]mule invoke java component as array parameter

属性文件:

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

  <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:

public String deleteInvoice(@Payload String deleteCompany) throws SQLException{

如上面的属性文件中所示,它对于属性中的单个参数非常有效。 但是,如果我与物业以下公司一起运行应用程序

`torun ='GSD11','GSD12'

它给出错误消息为

1 (java.lang.ArrayIndexOutOfBoundsException). Message payload is of type: String

我如何启用接收parameteras数组?

Mule消息的有效负载是一个对象。 因此,它可以处理任何类型的对象。

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

在上面的代码中,您将从入站终结点(http)发送的任何东西发送到spring bean,并且您假设它将是一个字符串。

现在,根据接收到的请求类型(get / post / put / etc),有效载荷肯定可以在http入站终结点中更改,因此请务必小心。

回到您的问题,如果您确定有效载荷将是一个数组,则只需将方法的公司更改为该数组即可。 如果没有,我建议您将其更改为对象并验证即将发生的事情并进行相应的投射。

高温超导

Mule文档说: http : //www.mulesoft.org/documentation/display/current/Invoke+Component+Reference

methodArguments =“#[1],#[2]”

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

但是我的列表是随机的,并且会增长到100到1000 s,我不想放置1000 s的参数类型。 作为一种解决方法,我将在Java组件中加载mule-app.propertes并读取属性内容。

public String deleteInvoice(){
      Properties prop = new Properties();
      InputStream input = DeleteTable.class.getClassLoader().getResourceAsStream("mule-app.properties");
      prop.load(input);
      return prop.getProperty("torun");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM