[英]Mule ESB Java Component 3.8 Doc
我試圖從官方文檔中回復基本的Java組件示例:
https://docs.mulesoft.com/mule-user-guide/v/3.8/java-component-reference
IDE是v.6.0.1
我意識到Java類應該擴展Callable。 這主要是與以前版本的MULE的最大不同。 所以就我而言
package javacomponent;
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
public class helloWorldComponent implements Callable{
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
eventContext.getMessage().setInvocationProperty("myProperty", "Hello World!");
return eventContext.getMessage().getPayload();
}
}
我的問題是,運行該應用程序並向本地主機創建一個http / get:8081后,我無法識別Hello World! 在瀏覽器中呈現的消息。
在上一個版本中有什么變化嗎? 我也應該包含setPayload元素嗎?
引用代碼后,它會設置一個Invocation屬性或Variable ,並返回現有的有效載荷 ,該載荷可以是{NullPayload}
因為尚未定義。 嘗試調試和評估Mule Debugger中的“ 變量”選項卡,您應該找到一個名為myProperty
的新變量。
為了獲得基本的Hello World文本,請執行以下任一操作:
eventContext.getMessage().setPayload("Hello World!");
return eventContext.getMessage().getInvocationProperty("myProperty");
首先要檢查的是您正確地實例化了Java類。 我不知道配置Java對象的UI或可視方式。 我發現了一個非常簡單的Spring配置示例,如下所示:
<spring:bean id="ordersTransform" name="OrdersTransformSingleton" class="org.dlw.transport.OrdersTransformSingleton" scope="singleton" />
並且,Java對象組件:
首先檢查一下,確保在運行時實例化您的類。 然后在實現的可調用方法中添加一個斷點,然后看看應用程序指針是否使您進入該方法。 如果是這樣,請將您的消息添加到有效負載中。
public Object onCall(MuleEventContext eventContext) throws Exception {
// freshen
this.transportObj = null;
this.transportObj = new ArrayList<OrdersValueObject>();
MuleMessage res = eventContext.getMessage();
List<Map> list = (LinkedList) res.getPayload();
...
res.setPayload(transportObj);
return res;
}
記住設置有效載荷並返回消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.