Mule ESB Java组件3.8文档

Mule ESB Java组件3.8文档,mule,mule-component,Mule,Mule Component,我试图回答官方文档中的基本Java组件示例: 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

我试图回答官方文档中的基本Java组件示例:

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();
    }
}
我遇到的问题是,在运行应用程序并对localhost:8081进行http/get后,我无法使用Hello World!在浏览器中呈现的消息


上一个版本有什么变化吗?我是否也应该包含setPayload元素?

引用代码,它设置调用属性或变量,并返回现有的有效负载,该有效负载可以是
{NullPayload}
,因为尚未定义。尝试调试和评估Mule Debugger中的变量选项卡,您应该会找到一个名为:
myProperty
的新变量

要获取基本的Hello World文本,请执行以下选项之一:

  • 设置有效负载而不是调用属性(将其替换或添加到现有代码中):
    eventContext.getMessage().setPayload(“Hello World!”)
  • 返回调用属性而不是负载:
    return eventContext.getMessage().getInvocationProperty(“myProperty”)

  • 在引用代码时,它设置一个调用属性或变量,并返回现有的有效负载,该有效负载可以是
    {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;
    }
    
    public对象onCall(MuleEventContext eventContext)引发异常{
    //清新
    this.transportObj=null;
    this.transportObj=新的ArrayList();
    MuleMessage res=eventContext.getMessage();
    List=(LinkedList)res.getPayload();
    ...       
    res.setPayload(transportObj);
    返回res;
    }
    

    请记住设置有效负载并返回消息。

    首先要检查的是您是否正确实例化了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;
    }
    
    public对象onCall(MuleEventContext eventContext)引发异常{
    //清新
    this.transportObj=null;
    this.transportObj=新的ArrayList();
    MuleMessage res=eventContext.getMessage();
    List=(LinkedList)res.getPayload();
    ...       
    res.setPayload(transportObj);
    返回res;
    }
    

    请记住设置有效负载并返回消息。

    谢谢您的帮助!现在我明白了为什么有效载荷为空,我将消息分配给它,并可以在浏览器中呈现。-谢谢,这对我很有用!现在我明白了为什么有效负载为空,我将消息分配给它,并可以在浏览器中呈现。-在配置XML中,我定义了Java类,如下所示:在设置paylod后对我有效。-在配置XML中,我定义了Java类,如下所示:在设置paylod后对我有效-