属性文件:
#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=’GSD12 11‘,'GSD12’
它给出错误消息,如
1 (java.lang.ArrayIndexOutOfBoundsException). Message payload is of type: String如何启用接收参数数组?
发布于 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并读取属性内容。
public String deleteInvoice(){
Properties prop = new Properties();
InputStream input = DeleteTable.class.getClassLoader().getResourceAsStream("mule-app.properties");
prop.load(input);
return prop.getProperty("torun");
}发布于 2015-03-30 13:27:55
Mule消息的有效载荷是一个对象。从而允许它处理任何类型的对象。
如果您检查MuleMessage接口,您将看到它。
在上面的代码中,发送从入站端点(http)到spring的任何内容,并且假设它将是一个字符串。
现在,根据收到的请求类型(get/post/put/etc),http入站端点中的有效负载肯定会发生变化,所以要小心。
回到你的问题上,如果你确信有效载荷将是一个数组,你可以把你的方法的强度改变成这样。如果不是,我将建议您将其更改为object,并验证即将到来的内容并进行相应的转换。
HTH
https://stackoverflow.com/questions/29311961
复制相似问题