簡體   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