簡體   English   中英

Mule ESB Java組件3.8文檔

[英]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文本,請執行以下任一操作:

  1. 設置有效載荷而不是Invocation屬性 (將其替換或添加到現有代碼中): eventContext.getMessage().setPayload("Hello World!");
  2. 返回Invocation屬性而不是Payloadreturn 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM