![](/img/trans.png)
[英]How to invoke Java Mule component with enum value as method parameter?
[英]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.